From 61cbce803db1e577e4ac4ca48620ec371b00e2bf Mon Sep 17 00:00:00 2001 From: Lester Hedges Date: Thu, 17 Oct 2019 19:58:05 +0100 Subject: [PATCH] Added note about run time dependencies of dependencies. --- BUILD_INSTRUCTIONS.rst | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/BUILD_INSTRUCTIONS.rst b/BUILD_INSTRUCTIONS.rst index a569a8890..0f2d85d86 100644 --- a/BUILD_INSTRUCTIONS.rst +++ b/BUILD_INSTRUCTIONS.rst @@ -48,19 +48,30 @@ The `sire-conda directory contains all of the files that are used to build and deploy the Sire `Conda package `__ during the Azure Pipeline. The scripts will query the Sire Miniconda for the -versions of any external dependencies, then add them to the packages -*recipe*. This means that any version changes that you make in the +versions of any external dependencies, then add them to the *recipe* +for our package. This means that any version changes that you make in the `build_sire.py `__ -file will automatically be updated in the Conda package, i.e. you -only need to maintain dependency versions in a single location. -(The only thing that is needed is to update the list of external Conda -dependences in `update_recipe.sh `__ -if a new dependency is added.) Similarly, the Conda package version number is -also automatically inferred from the git commit (we use the tag as the version +file will automatically be updated in the Conda package, i.e. you only need to +maintain dependency versions in a single location. The only thing that is +needed is to update the list of external Conda dependences in +`update_recipe.sh `__ +if a new dependency is added. (Note that you'll also need to manage the +versions of any dependencies of dependencies that are required at run time, +since Conda doesn't do a good job of managing this for you. For example, the +``netcdf4`` Conda package doesn't pin the version of ``libnetcdf`` that it +pulls in, we need to manually pin the version of this package in the run time +requirements of our Conda recipe. Currently we need to do this for ``libcblas``, +``libnetcdf`` and ``qt``.) The Conda package version number is also +automatically inferred from the git commit (we use the tag as the version and the number of commits since the tag as the build number). The Sire Conda -package is created by extracting all of the compiled Sire binary and libray +package is created by extracting all of the compiled Sire binary and library files from the Miniconda installation, then uploading them to the Oracle Cloud as an archive. These are then downloaded and unpacked into the correct location during the Conda installation. See `this `__ -script to see how the archive of files is created and `this `__ script to see how the same files are unpacked in place -during the Conda install. +script to see how the archive of files is created and `this `__ +script to see how the same files are unpacked in place during the Conda install. +Currently we pin the version of ``conda-build`` to 3.17 due to regular +performance issues (hanging) with version 3.18, particularly on macOS. The +Linux version is pinned in the `Dockerfile `__ +whereas the macOS version is pinned in the Azure Pipeline +`configuration `__.