-
-
Notifications
You must be signed in to change notification settings - Fork 16
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
split outputs, build with rattler-build #98
base: main
Are you sure you want to change the base?
Conversation
Hi! This is the friendly automated conda-forge-linting service. I failed to even lint the recipe, probably because of a conda-smithy bug 😢. This likely indicates a problem in your This message was generated by GitHub Actions workflow run https://github.com/conda-forge/conda-forge-webservices/actions/runs/12031395698. Examine the logs at this URL for more detail. |
use rattler because this is a lot of outputs and it takes forever with conda-build adds mongoose as an additional component
…nda-forge-pinning 2024.11.25.08.53.39
lint error is conda-forge/conda-smithy#2165 already fixed by conda-forge/conda-smithy#2166 |
This actually runs all the builds independently in sequence. A faster approach would be to keep the single 'build and install everything' and use |
At this point you could also think of splitting it into |
@xhochy that's a good point. I did think of that and figured the cost of the dev files wasn't big enough to justify the recipe complexity. It's a little hard with this multi-package layout where multiple builds have to run unless I go with a single build and pure One way to do the splitting that I think would be maintainable is to switch to a single build and do files splitting where:
so that a package depending on e.g. umfpack would have host: - libumfpack # lib, run_exports
- suitesparse-devel # headers, etc., no run_exports Do you think that's worth it? Some numbers for the fully installed suitesparse to help inform the choice, which should be unchanged (plus the addition of suitesparse-mongoose):
so the devel package would reduce the number of files for a full suitesparse install by 2/3 and the size by only 20%. The single-build would also have to wait for conda-forge/conda-smithy#2057 to resolve because rattler-build currently has the build cache behind an |
but it is not this day
That is something where I don't have an opinion on as I am not a user of this package, but I stumbled on this case of |
Since most packages don't split I also don't think splitting further |
required gmp is now available, so give it a go
gives slightly clearer if/else for single dependency category (cmake generator)
…nda-forge-pinning 2024.11.26.07.33.56
@conda-forge-admin please lint |
- ${{ compiler('c') }} | ||
- ${{ stdlib('c') }} | ||
- cmake | ||
- {if: win, then: ninja, else: make} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nice 👀
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am sure you know, but inline jinja should also work (${{ "ninja" if win else "make" }}
)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I had the vague feeling that using logic expressed in static yaml would be a little less fiddly for tooling like conda-smithy than using a single string template. Do you think that's true? I'm sure it doesn't really matter for this particular dependency, but I'd love to know more about best practices.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For rattler-build it doesn't really matter as we have to parse the jinja
AST in both cases anyways (the if: <cond>
is also evaluated with minijinja, and we extract any used variables from there before rendering the recipe).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, I had the model in mind that when conda-smithy might be collecting the list of dependencies, it can concatenate all the lists and ignore the conditionals, assuming every branch will be taken by some build. But that may not have anything to do with what actually happens. And presumably it still needs to evaluate jinja for every build matrix entry anyway for completeness, so it probably doesn't make a difference.
I just get the feeling that it's nice to avoid templates where possible in the new format, even if it doesn't actually matter in practice.
Hi! This is the friendly automated conda-forge-linting service. I just wanted to let you know that I linted all conda-recipes in your PR ( |
use rattler because this is a lot of outputs and it saves a lot of time for the many env setup/teardown transactions over conda-build
adds suitesparse-mongoose as an additional component and unskips
spex
on windows, now that the requiredgmp
is available there.Further splitting not done, that could be, and I think could be done later without major consequence:
suitesparse-devel
to contain headers/cmake/pkg-config files (I think this needs the approach in Rattler single build, separate suitesparse-devel #99, which conda-smithy can't handle yet)mongoose is both a lib and executable so could be split further, but since it's one package and doesn't support component install, I did not make
libsuitesparse-mongoose
, onlysuitesparse-mongoose
with bin and lib.needs prepare to split suitesparse outputs admin-requests#1193 before the new outputs can be published