First off, hats off to @wolfv and other mamba/boa project members. This is a huge improvements in developer quality of life vs conda build.
I have a requirement to create multiple C++ builds in our pipeline using boa (e.g. build vs debug, static vs dynamic).
With conda build, I can specify the variants in the conda_build_config.yaml file like such:
buildtype:
- debug
- release
I can reference the buildtype as a variable in meta.yaml file directly like so:
build:
string: 'build{{ buildtype }}'
number: 0
script_env:
- CMAKE_BUILD_TYPE={{ buildtype }}
Conda build will take the vars and update the recipe accordingly.
However, if I were to do the same in boa's recipe.yaml, I find that the variables from the conda_build_config.yaml are not accessible, and really only useable as version references for packages that matched the variable name.
Peeking through the codes, seems boa parses out the recipe.yaml alone (without using any values from the variants), and replaces non-matching jinja2 variables with blank. Only later is the variants from conda_build_config.yaml used to apply the versions against matching packages.
- Can someone please help explain the reasoning for changing the logic this extensively? I had read the reasoning for simplifying the recipe format, but this seems a bit drastic.
- What is the recommendation for how I can create separate debug and release build of my packages?
First off, hats off to @wolfv and other mamba/boa project members. This is a huge improvements in developer quality of life vs conda build.
I have a requirement to create multiple C++ builds in our pipeline using boa (e.g. build vs debug, static vs dynamic).
With
conda build, I can specify the variants in theconda_build_config.yamlfile like such:I can reference the buildtype as a variable in
meta.yamlfile directly like so:Conda build will take the vars and update the recipe accordingly.
However, if I were to do the same in boa's
recipe.yaml, I find that the variables from theconda_build_config.yamlare not accessible, and really only useable as version references for packages that matched the variable name.Peeking through the codes, seems boa parses out the
recipe.yamlalone (without using any values from the variants), and replaces non-matching jinja2 variables with blank. Only later is the variants fromconda_build_config.yamlused to apply the versions against matching packages.