Skip to content

Revamp conda packaging and add ARM64 build and test jobs

finesse importer requested to merge feature/m1-ci into develop

I think I've figured out how conda should be used alongside pip now. The pip-inside-conda approach used before was causing issues for the ARM64 CI jobs, because scipy and h5py were not available on PyPI for that arch. Since these Mac OSX jobs use conda anyway, the solution was to use conda as intended - install scipy and h5py via conda and not via pip.

This MR changes the conda environment files to define the Finesse build and runtime dependencies as conda-forge dependencies instead of PyPI dependencies (except for extras - see the docs at developer/codeguide/requirements.html#conda-builds for the reason why).

I removed the pip install -e . call inside the conda environment files, since it was not always desired, e.g. in the CI, and also seemed to cause trouble (#447 (closed) and #438 (closed)). Now developers need to run make develop-conda after setting up their conda development environment to run the installation (which still uses pip).

There's also the alternative to manage system dependencies yourself, and avoid conda; for this the Makefile contains the target develop-pep517.

Another consequence of these changes is that whenever we change a Finesse dependency, we need to update both the setup.cfg/pyproject.toml files and environment.yml/environment-win.yml. I previously tried to keep everything in as few places as possible but it turns out this complicated things more elsewhere, so I changed it.

I've updated the docs to describe all this. I also added some new info on installing Finesse via conda for end users (since 7 months ago Duncan packaged it for us on conda-forge).

Edited by finesse importer

Merge request reports