cdt-builds
conda-forge Core Dependency Tree (CDT) builds
cdt_slugs.yaml
Configuration Options
The following options are available when adding a CDT in the configuration file:
custom
(boolean): Set totrue
to declare the CDT as a custom CDT. This will cause the CDT generation code to remove any instance of the CDT that appears in thecdts
orlegacy_cdts
directories.license_file
(str or list of str or null): Sets the license file for a CDT. If set to a string or a list of strings giving the paths to the files, it will copy the licenses to the recipe and modify the recipemeta.yaml
appropriately. If set tonull
, it will remove thelicense_file
key from themeta.yaml
.skipped_cdts
(list of str): Set to a list of the distribution and platforms to skip for this CDT. For example, one might addcos6-x86_64
to this list to skip making this CDT for CentOS 6 onx86_64
architectures.build_append
(dict mapping dist-arch to a string): Set this key to append code to thebuild.sh
file for a given distribution and platform. For example, one might set a keycos6-x86_64
in this mapping and set the value toecho 'hi!'
to addecho 'hi!'
to the build script for onlycos6-x86_64
.dep_remove
(list of strings): Set to a list of strings for deps that should be removedep_replace
(dict mapping dep to replace to new dep): Set to a dict of deps to be replaced by another dep. this can be used for aliased RPMs.
Adding a CDT package
To add a CDT package, make a PR on this repo with the following changes.
- Add the name of the CDT
cdt_slugs.yaml
file. - Run the python script
gen_cdt_recipes.py
. This script will generate the CDT recipes that do not exist. Pass--force
to regenerate all of the CDT recipes (takes about 10-20 minutes to complete). - Commit any changes from steps 1+2 and open the PR.
The CI service will build the CDTs, report any errors, etc.
rpm.py
Changing the CDT generation script If you make changes to the CDT generation script, make a PR on this repo using the following steps.
- Make sure the bump the
cdt_build_number
variable in theconda_build_config.yaml
file. - Run the python script
gen_cdt_recipes.py
. This script will generate the CDT recipes that do not exist. Pass--force
to regenerate all of the CDT recipes (takes about 10-20 minutes to complete). - Commit any changes from steps 1+2 and open the PR.
The CI service will build the CDTs, report any errors, etc.
Making Custom CDT recipes
If you have a CDT recipe that is not autogenerated, it can be added as follows.
- Add the CDT name to the
cdt_slugs.yaml
file. Make sure to setcustom: true
in the metadata in the file. - Add the CDT recipe in a directory under the full CDT package name in either
the
custom_cdts
orlegacy_custom_cdts
folder depending on whether or not the CDT is targeted at the old-style CDT format or the new-style one. If you do not know, ask someone onconda-forge/core
. - Commit any changes from steps 1+2 and open the PR.
The CI service will build the CDTs, report any errors, etc.
Old-style/legacy vs. New-style CDTs
The old-style CDTs are targeted at the conda-forge compilers that do not use the
sysroot_{conda subdir}
packages (e.g., sysroot_linux-64
, sysroot_linux-aarch64
, etc.)
and build their own copy of glibc. These compilers also have cos6
or cos7
in the name of the sysroot directory. The new-style CDTs use a sysroot directory
without cos6
or cos7
and are meant to work with the new conda-forge
compilers that depend on the sysroot_{conda subdir}
packages.
old-style CDT specs
- needs to have
no_hoist
in the source sections - sysroot directory has
conda_cos6
orconda_cos7
in the path - needs to have
run_constrained
entry ofsysroot_{conda subdir} ==99999999999
to prevent it from being co-installed w/ the new compilers or CDTs
new-style CDT specs
- needs to have
no_hoist
in the source sections - sysroot directory has
conda
only in the path - needs to have a
run
requirement on the proper version of thesysroot_{subdir}
package so that it is only installed with CDTs from the right version of CentOS - the versions of
sysroot_{conda subdir}
are 2.12 for CentOS 6 and 2.17 for CentOS 7.
Azure CI Setup
This bit of code was run to setup azure.
from conda_smithy.azure_ci_utils import register_repo, AzureConfig
cfg = AzureConfig(project_name='cdt-builds')
register_repo("conda-forge", "cdt-builds", config=cfg)