DIRACGrid / DIRACOS2

GNU General Public License v3.0
0 stars 9 forks source link

DIRACOS2

Python 3 DIRACOS installer built using conda constructor and conda-forge.

Table of contents

Installing DIRACOS2

These instructions will install the latest release of DIRACOS in a folder named diracos. To install a specific version replace /latest/download/ in the URL with a version like /download/2.0/.

curl -LO https://github.com/DIRACGrid/DIRACOS2/releases/latest/download/DIRACOS-Linux-x86_64.sh
bash DIRACOS-Linux-x86_64.sh

It can then be activated in a similar way to version 1 of DIRACOS, by calling source "$PWD/diracos/diracosrc". Further usage instructions are shown after installation.

Advanced documentation

Building the installer

The DIRACOS installer is a self-extracting shell script that is generated using conda constructor. This can be installed using any conda installation. If you don't have a local conda installation, you can use the following steps on Linux:

wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
bash Miniforge3-Linux-x86_64.sh -b -p $PWD/miniforge
# This line is needed every time you wish to use miniforge in a new shell
eval "$($PWD/miniforge/bin/conda shell.bash hook)"
conda install constructor

Once you have constructor installed, a new installer can be generating from the construct.yaml using:

constructor . --platform=linux-64

The packages included are defined in the construct.yaml file, see the upstream documentation for more details.

Testing the installer

Basic tests of the installer can be ran using an arbitrary docker image by running:

scripts/run_basic_tests.sh DOCKER_IMAGE DIRACOS_INSTALLER_FILENAME

Making a release

To ensure reproducibility, releases are made from build artifacts from previous pipelines and are tagged using GitHub actions by triggering the Create release workflow. This workflow runs scripts/make_release.py and has the following optional parameters:

If the release process fails, a draft release might be left in GitHub. After the issue has been fixed this can be safely deleted before rerunning the CI.

After the release is made a commit will be pushed to master to bump the DIRACOS release number in construct.yaml to the next alpha release. If the next alpha release is older than the current contents of construct.yaml, this step is skipped.

Building customised packages

See management/conda-recipes.

Miscellaneous remarks

DIRACOS2 is a smaller wrapper around conda constructor which generates a self-extracting installer that is suitable for DIRAC's needs based on packages which are distributed by conda-forge. As such, most components are documented by their respective projects. The following is a list of remarks that are specific DIRACOS2:

Troubleshooting

This section contains a list of know issues that can occur.

Duplicate files

This error is of the form:

File 'include/event.h' found in multiple packages: libevent-2.1.10-hcdb4288_2.tar.bz2, libev-4.33-h516909a_0.tar.bz2

When this happens, the offending packages should be fixed upstream in conda-forge. As a temporary workaround, the ignore_duplicate_files key in construct.yaml can be changed to true.