-
-
Notifications
You must be signed in to change notification settings - Fork 287
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
Support boa
recipe format
#1612
Comments
Can you remind us of the key advantage of boa recipe formats? |
I think this is a good starting point. |
A few thoughts:
Maybe the next step here is to get agreement on the new spec on the conda community calls (maybe a CEP) and then move on from there? |
This sounds exciting generally speaking, the docs linked by Jaime above are really worth reading and make a ton of sense to me. Especially since you've already gained experience with the format in robostack, it seems as if cross-community adoption would be achievable via the CEP format. +1 on submitting this as a CEP. |
Well the way this started out was with an attempt to make a spec with lots of community input: https://hackmd.io/axI1tQdwQB2pTJKt5XdY5w Unfortunately besides myself not many people have invested more time into this :) I would hope that changes once we make some additional inroads in conda-forge (and once you try it I don't think you want to go back, except for complicated recipes). We have a spec implementation using I can write a more formal CEP but I'd like to also encourage people to try out what's already there. |
It might be worth picking a few recipes in conda-forge and opening draft PRs showing what kind of changes would occur. Maybe with recipes of increasing complexity or based on key recipe traits? This would hopefully help people wrap their heads around what is involved Does |
@jakirkham excellent idea! I just started with my all time favorite recipe of As you can see the changes are fairly minimal. After that, the file is instantly parseable with a YAML parser which makes a lot of things simpler -- for example, if we ever switch to a new recipe spec, we can just translate all recipes by machine. I think it will be a cool exercise to get conda-smithy to recognize this and produce the proper pipeline, so I might tackle that next in order to get us to see the builds working. |
I've started looking a bit into the required interfaces in |
Actually, it turned out to be not that many changes necessary to get an initial version of conda-smithy to work & recognize The xtensor feedstock just started building with |
I suspect the bot will need more extensive changes due to how it handles the recipes in fairly adhoc ways. |
On the bright side all that should be much simpler since we don't need to wrestle so much jinja :) I'll take a stab at it at some point soon. |
@wolfv I am very interested in this, especially to add it to souschef. I was thinking to the user to be able to handle the recipe without knowing which "version" they will export, just after all the modifications and the developer can chose if it is going to export to the "normal" conda recipe or to this new version I think that would be also useful in the case that someone wants to convert from the current version to this new one. I remember that you sent an url where the new recipes was being defined, can you share that again please? |
the only thing I would recommend is to have like a key value pair to explicit mention that is a "new version" |
Yes, I agree about the versioning. Could be very useful to have. Right now, the obvious differentiator is the file name which makes it easy to spot but in order to future proof it would be good to version (although we could again do it via filename, like Support in |
Yeah a top-level key with the version seems useful from a parsing standpoint. |
Right. When this gets submitted as a CEP I suspect we'll version it there. Having a standard will make it easier to code interoperable tools like souschef, the bot, etc. |
I think we should have at least a toplevel key with the recipe version for the rendered recipe in the final package (for reproducibility), maybe even throw the I am starting by writing additional documentation for the current recipe spec. I'll try to figure out wrt to CEP / CFEP on how to proceed. Not sure if CEP is the right place (since this is not exactly concerning "conda" per se (final conda package metadata is completely unchanged except for the recipe folder), more the conda ecosystem -- although I would be more than happy if conda-build adopts the same format) but I would still be happy to use either as a place for discussion. Again, the really nice thing about the new format is that it's completely machine readable. That means that we can change around the spec super easily later on. For example, if we decide that instead of test:
requires:
- ... We want to add another key under requirements:
host:
- ...
test:
- ... |
PS: if people have / find issues with the current implementation or spec, you can always file issues on the boa repo. I'd love it if people give it a try! |
Is there a "reverse" translator? |
That would be simple to write! Just need to shuffle a couple of keys around and translate
to |
Ah, and translate dictionaries with |
As a user who's just starting out with I find the way multiple outputs are handled to be more intuitive and being machine-parsable is a big plus for some of our workflows (I'm only learning about |
Just my two cents as a maintainer in the ecosystem as well: I would love to have the new recipe as it would make a couple of things much simpler when creating packages:
|
Thanks for all the input! I think we might want to take a two-tiered approach here :)
For this, we'd add a |
I think a CEP is the right place. The conda community org covers both conda and conda build. Even if conda build doesn't implement the standard right away, having an accepted standard ensures that the community as a whole is on solid footing. It also allows others to build their own tools against the standard should they want to. |
closing this in favor of #2308 |
Your question:
I would like to start a discussion to see if we can support the new recipe format of
boa
and use it directly for builds. We've been usingboa
in the RoboStack project quite successfully for a while now and I think it would be nice to (optionally!) support the new recipe format in conda-forge as well.I am listing a couple of points that we'll need to fix & improve in the boa & conda-forge projects to turn this into reality:
CONDA_BUILD_SYSROOT
+channel_targets
+target_platform
(the latter three are also hard-coded in conda-build, but scattered in multiple places).recipe.yaml
instead ofmeta.yaml
(this should be quite straightforward as it's always "pure yaml")I'd be happy to hear what others think! Obviously, we'll also have to work more on documentation of the entire
boa
project.The text was updated successfully, but these errors were encountered: