This package depends on bob.blitz to run its test units. This is a problem in test environments (like conda packaging) where package downloading via setuptools is forbidden. We need to fix these tests by creating units which independent from other packages entirely. For the time being, such tests are skipped when bob.extension's conda package is built with --exclude=test_extensions. See logs with problem at bob/bob.conda!62.
Designs
Child items ...
Show closed items
Linked items 0
Link issues together to show that they're related.
Learn more.
https://gitlab.idiap.ch/bob/bob.extension/blob/master/bob/extension/test_utils.py#L131 only assures that we can link against the documentation that is available online. In fact, I think it does not create a dependency on bob.extension or gridtk. It just tries to link to the documentation of these two packages on pythonhosted.org and the Idiap docs server.
However, this test might fail when there is no internet connection.
For the first test, i.e., testing that we can install packages such as bob.blitz using setuptools, it might be that we want to skip this test when we are in a conda environment. This test is meant to test that our installation instructions in the documentation: https://www.idiap.ch/software/bob/docs/latest/bob/bob.extension/master/buildout.html still works.
Actually, to avoid circular dependencies, we might add a simple test package, which includes C++ and Python code, and which is linked in the test. In fact, we have such packages insidebob.extension, see: https://gitlab.idiap.ch/bob/bob.extension/tree/master/examples
We could upload these to PyPI (or better, to our own package server) and query these instead.
Conda package building is a bit picky with downloading dependencies from remote urls. The reasoning is that all deps should be described in the meta.yaml file.
I think it would be nicer to have these example packages just lie there, in a data subdirectory inside bob.extension module. Firstly, they are shipped with the package and can be properly documented and explained. Secondly, it simplifies maintenance - today, the developer needs to modify the packages in the examples directory and then remember to update them on the package directory. These tarballs are not usable from a documentation perspective.
These tarballs live inside the package, and they are inside GitLab. When building the tarballs in another process, such as during documentation generation, we need to upload them somewhere else, and change the documentation (see link above) accordingly. Also, we need to change the test_extensions test cases to work with those packages.
If the conda environment works better with this approach, I am fine with that. Otherwise, I don't see any need for an action. I agree that updating the tarballs requires a two-step process, but given that we don't update these packages often, I would be able to live with that, especially since there is a simple script that you can call, which does the update for you.
The action that is required is that these projects cannot depend on bob.blitz. It simply does not work inside the conda packages.
In the mid-term future, we'll deprecate the current build strategy and only maintain the conda-package builds. This allow the conda-recipes to be maintained individually by each maintainer and kept inside the package itself. It will also give us a better release procedure and offload work from a few that need to maintain the conda builds. When we reach this, we'll need to stop testing these extensions if it continues to have a circular dependence as it is today.
So we can continue to test the extension building, even if we're inside a conda package test procedure, we need to remove the circular dependence and make sure all required material to test a package is shipped with the package itself (as much as possible).
So, we are finally going back to the monolithic bob package, where we (more precisely I) spent so much time in developing better solutions to split this package up into smaller packages? Why do we still have these small packages then, if we always install them altogether in the conda environment?
Also, why do we still have exceptions to these, e.g., all the database packages, and bob.bio are installed via pip on top of the conda environment? Why don't we install all packages via condaor via pip?
There is no monolithic builds! I guess you misunderstood that - we're just moving the conda packaging to each individual package. To avoid double-testing, we'll only use conda for testing.
For the pip vs conda business - it is an interesting proposal. We'll have a clearer picture when we start doing this work towards the end of the year.
Why don't we install all packages via conda or via pip?
We want to move all packages to conda based ones. This is tracked here: bob.admin#35 (closed)
This is a major task and requires a lot of effort. Any help is appreciated.
@andre.anjos I am not sure, what the output of grep bob.blitz -rl . should tell me. I know what is contained in the package, but I don't know what is your problem with that.
Now, there seems to be an issue to test buildout in the conda environment (which I still don't understand, but I guess you know more details than me). Maybe we can define a condition (e.g., access to buildout) to skip the tests and remove the test cases in the conda environment, while we still should keep the test (and the dependency) when installed with pip. Would that be a possibility?