All test dependencies get pinned to the exact package by including bob-devel in the test requirements. Run conda search --info -c http://www.idiap.ch/software/bob/conda bob-devel to get those pins.
Here are some things that you can try:
Rendering the recipe
Clone your Bob package
Install the latest beta version of bob.devtools and run:
$ cd bob.broken.package$ bdt build -vvv --python=3.7 conda# you can change the python version of course# bdt build has tons of options which you might need to change
bdt starts by rendering your conda recipe: it replaces the content your meta.yaml with the solved version of your environment. (Look for the Printing rendered recipe output)
Did it print the rendered recipe? If so, it might be that your test dependencies conflict with your runtime dependencies. In that case, you need to use mamba to figure out the issue, similarly to what is described bellow, but also including your rendered test dependencies in your mamba create command.
If you don't see the rendered recipe (even though you enabled verbosity 3 times using bdt build -vvv), our next bet to figure this out is using mamba.
When you run bdt build -vvv, it prints something like:
INFO:bob.devtools.scripts.build@2020-11-11 14:29:33,569: Using the following channels during (potential) build: - http://www.idiap.ch/software/bob/conda/label/beta - http://www.idiap.ch/software/bob/conda - defaults
Given this channel list and the conda recipe of your package which could look like:
Did it work? Try the same command but this time using conda.
At the of time of writing this guide, mamba is giving me this error:
Encountered problems while solving.Problem: nothing provides boost 1.61.* needed by bob.learn.activation-2.0.10-np112py27_0
so looks like either:
no package for bob.learn.activation with boost 1.73.* exists, or
some other constraint, is removing a compatible bob.learn.activation from the final solution.
So this command might help us:
$ mamba search -c https://www.idiap.ch/software/bob/conda/label/beta bob.learn.activation# because bob.learn.activation is in our beta channel and because of strict channel priority,# only the packages from this channel will be considered.
but we are requesting numpy=1.16. Looks like when we changed the pinning to numpy 1.16 in bob.devtools,
we did not rebuild bob.learn.activation.
Creating a new pipeline for the master branch of bob.learn.activation should do the trick.
bob/nightlies> will rebuild all Bob packages in correct order which avoids most of the conda conflict errors
that you might face. The example above, would be fixed if the nightlies is correctly run.
When you're debugging conda resolve errors, it's best to make sure nightlies is green first.