irods-runtime (libraries)
irods-dev (headers and libraries, depends on irods-runtime)
irods-icommands (clients, depends on irods-runtime)
The strategy used is to prevent the build using hard-coded places for
tools or dependencies i.e. irods/externals, which would prevent us
from using the existing Conda tools to build a portable package.
By adding CMake install targets for the development headers and
libraries, we can install libraries, headers and executables directly
into the Conda build $PREFIX path. Conda then does the work of
creating packages, without the need for us to write custom tools. The
CPack outputs are still created by the build, but are discarded.
The supporting recipes for the necessary dependencies allow us to
avoid using the conda-forge channel at deployment time. The packages
depend only on the Anaconda defaults channel and our own
packages. This helps us to avoid the slow dependency solving that
Conda is known for.
The conda-forge channel is required at build time because we obtain
Clang from it. Ideally, we would use Conda's GCC to build, but that
would require more extensive modification of the CMake configuration.
Add avrocpp 1.9.0 Add json 3.9.1 Add krb5 1.19.1 Add libarchive 3.5.1 Add nanodbc 2.13.0
The iRODS recipe builds three packages:
irods-runtime (libraries) irods-dev (headers and libraries, depends on irods-runtime) irods-icommands (clients, depends on irods-runtime)
The strategy used is to prevent the build using hard-coded places for tools or dependencies i.e. irods/externals, which would prevent us from using the existing Conda tools to build a portable package.
By adding CMake install targets for the development headers and libraries, we can install libraries, headers and executables directly into the Conda build $PREFIX path. Conda then does the work of creating packages, without the need for us to write custom tools. The CPack outputs are still created by the build, but are discarded.
The supporting recipes for the necessary dependencies allow us to avoid using the conda-forge channel at deployment time. The packages depend only on the Anaconda defaults channel and our own packages. This helps us to avoid the slow dependency solving that Conda is known for.
The conda-forge channel is required at build time because we obtain Clang from it. Ideally, we would use Conda's GCC to build, but that would require more extensive modification of the CMake configuration.