New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[RFC] Moving conda packages to a single source #154
Comments
@HackerFoo This is relevant will become relevant your PGO work. |
Older design doc around this stuff -- https://docs.google.com/document/d/1BZcSzU-ur0J02uO5FSGHdJHYGnRfr4n4Cb7PMubXOD4/edit
|
Related doc from @umarcor - https://docs.google.com/document/d/10_MqFjTIYVVuOJlusJydsp4KOcmrrHk03__7ME5thOI/edit
|
Today's meeting discussion revolved around package pinning, versioning and marking things as stable. A broad idea is to explore using Anaconda labels as indicators of package status. There could be a bleeding-edge label ( There should be also a I believe the user repos could have a nightly job that builds everything with the bleeding-edge label. There are several questions:
One thing to mention is that Anaconda client is... not perfect. Handling of labels requires a lot of manual parsing, some commands simply don't work as expected/described, so it's very manual. This feature was definitely not created with such workflows in mind and we're abusing it a bit. |
Some thoughts:
|
@umarcor thanks for the input. I agree with the general thought that this effort should converge. Regarding smoke-tests, if I'm not mistaken, this is something that could probably be used at a very early stage of package building - instead of per-package test described in meta.yaml. Layers should, obviously align with what you have in the Cross-action triggers are an idea that emerged yesterday - so that we can build everything as usual, but only move packages to |
There is one issue with this approach that I can identify right now, which is lack of git history changes. Whenever you build an older commit of symbiflow-arch-defs that is not compatible with the newest tools, you fail. One approach to address it would be to use specific labels for different users. The flow could be:
This might lead to inconsistencies between users, but I don't know if it's a problem or not. |
Yes. The main point is that we are building tools with different compiler/linker options and sometimes using compatible but not exactly equal dependencies as the ones used upstream. Smoke-tests are just for ensuring that nothing is fundamentally wrong with the binaries that were generated. Hence, checking that
Tha issue with cross-triggers is that the user/bot which triggers a workflow in a repo must have write access to it. I believe they should change it (if they didn't do it already), but last time I checked a personal access token was required. Therefore, if a bot is allowed to trigger workflows in the whole organisation, it can also break everything...
|
FYI - @enjoy-digital |
BTW I don't think the conda approach is expected to maintain specific versions of things, we are aiming for a rolling head there too. |
The primary idea is to make sure the rolling head is alway in a usable state. |
Reiterating over yesterday discussion with @mithro 👍
|
I would suggest the lock update is done via;
|
Right, this is easier and yields same results |
This issue aims to discuss moving to LiteX Hub packages. It was already executed in symbiflow-examples, and PRs are open for fpga-perf-tool and symbiflow-arch-defs.
The packages are hosted on the following repos:
The goal of this change is to create a single space for Conda-based dependencies in the open FPGA environment, with easier building procedures, based on GitHub Actions, cross-platform whenever possible, etc.
Packages are currently hosted on LiteX-Hub and this is because our work originally started there. The name of the channel is not as important as the fact that packages for many projects related to SymbiFlow, LiteX, LiteX BuildEnv or Skywater PDK will be unified, and thus easier to maintain.
Currently all packages required by symbiflow-arch-defs, symbiflow-examples and fpga-tool-perf (and many more) are available on LiteX Hub.
Most of the packages in SymbiFlow/conda-packages can be simply moved to LiteX-Hub with minimal changes. Due to low stability of Travis builds (the migration to GitHub Actions is in progress) we decided not to move the packages in batch, but do it one by one, on a per-need basis.
Packages are following specific branches (just like in this repo), and each subsequent build can bump the package version. Some previous versions are also available on the channel - whenever the user project required a specific older version.
The build procedure is transitioning to use the conda-build-prepare tool, allowing for easy and isolated local builds - more information on that will follow.
The litex-conda-* repositories organize packages in stages. This aims to divide packages with regard to dependencies they rely upon.
The first stage is "No dependencies" - this is, quite obviously, for packages without deps on the same repository. For example
litex-conda-eda/verilator
does not depend on any otherlitex-conda-eda
package."Has first level dependencies" covers packages that have dependencies from the same repo, but these dependencies are in the "No dependencies" section. E.g.
symbiflow-yosys-plugins
depends onsymbiflow-yosys
.And so on.
Packages built by the CI running on a PR are uploaded to a conda label, and are made available for subsequent stages. This allows us to verify if a change does not break other builds, at least within a single repo. The current
conda-packages
scripting will not detect such breaking changes until the package is uploaded and the next Travis run is started.The packages are moved to the
main
label when the CI is green.CC @mithro @kgugala @acomodi @tmichalak @mkurc-ant @ajelinski @tjurtsch
The text was updated successfully, but these errors were encountered: