Skip to content

alisw/alidist

Folders and files

NameName
Last commit message
Last commit date
Apr 7, 2025
Dec 6, 2021
Dec 9, 2024
Apr 16, 2025
Mar 27, 2025
Jun 27, 2023
Apr 2, 2025
May 10, 2023
Feb 20, 2025
May 24, 2024
Oct 6, 2023
Mar 6, 2023
Jan 21, 2020
Apr 14, 2025
Oct 18, 2023
Mar 28, 2023
Mar 28, 2023
May 14, 2024
Oct 20, 2020
Apr 15, 2025
Oct 11, 2023
Jan 27, 2023
Jan 27, 2023
Jan 27, 2023
Jan 21, 2020
Jan 27, 2023
Mar 12, 2023
Jan 27, 2023
Feb 13, 2025
Mar 28, 2023
Apr 8, 2025
Apr 8, 2025
Jan 21, 2020
Mar 17, 2025
Mar 5, 2025
Apr 8, 2025
Mar 28, 2023
Mar 27, 2025
Jul 6, 2020
Mar 17, 2025
Mar 28, 2023
Mar 23, 2024
Apr 8, 2025
Mar 28, 2023
Apr 8, 2025
Apr 25, 2025
Nov 4, 2018
Sep 26, 2024
Feb 27, 2024
Apr 25, 2025
Apr 25, 2025
Apr 25, 2025
Oct 18, 2023
Sep 2, 2021
Feb 1, 2025
Apr 8, 2025
Apr 25, 2025
Mar 17, 2025
Apr 7, 2025
May 8, 2024
Sep 19, 2024
Jun 14, 2016
Sep 19, 2024
Jul 8, 2022
Feb 11, 2025
Sep 25, 2024
Apr 8, 2025
Jan 27, 2023
Mar 28, 2023
Mar 5, 2021
Nov 9, 2023
Sep 26, 2024
Mar 10, 2022
Nov 28, 2024
Mar 27, 2025
Jan 27, 2023
Sep 30, 2022
Apr 14, 2025
Apr 15, 2025
Nov 21, 2024
Mar 17, 2025
Mar 4, 2025
Mar 18, 2025
Jan 8, 2025
Apr 8, 2025
Feb 23, 2024
Sep 4, 2024
Mar 2, 2021
Oct 30, 2023
Aug 15, 2024
Mar 17, 2025
Jan 17, 2025
Jan 21, 2020
Apr 8, 2025
Mar 24, 2025
Jan 27, 2023
Sep 13, 2024
Jan 21, 2020
Apr 16, 2025
Apr 16, 2025
Jan 21, 2020
Aug 19, 2021
Nov 3, 2023
Feb 13, 2020
Jun 17, 2021
Mar 6, 2023
Jun 19, 2024
Jun 27, 2024
Mar 28, 2023
Mar 28, 2023
Apr 16, 2025
Dec 9, 2024
Feb 27, 2024
Mar 27, 2025
Mar 27, 2025
Apr 8, 2025
Jan 21, 2020
Jul 3, 2024
Jul 29, 2022
Jan 27, 2023
Jan 27, 2023
Mar 28, 2023
Mar 4, 2025
Mar 13, 2025
Apr 8, 2025
Apr 10, 2025
Apr 10, 2025
Mar 28, 2023
Jun 17, 2024
Jul 29, 2022
Feb 27, 2024
Sep 6, 2024
Jan 27, 2023
Oct 19, 2022
Jan 21, 2020
Mar 28, 2023
Apr 8, 2025
May 10, 2023
Mar 28, 2023
Nov 11, 2024
Mar 4, 2025
May 24, 2024
Dec 8, 2022
Jan 11, 2020
Apr 8, 2025
Aug 16, 2024
Jan 7, 2021
Feb 23, 2023
May 26, 2024
Mar 4, 2024
Feb 18, 2021
Jan 17, 2025
May 23, 2023
Feb 1, 2025
Mar 28, 2023
Mar 17, 2025
Jan 26, 2024
Dec 16, 2024
Jan 11, 2020
Jul 3, 2024
Mar 28, 2023
Mar 6, 2023
Apr 25, 2025
Apr 12, 2024
Mar 28, 2023
Sep 24, 2024
Mar 28, 2023
Mar 7, 2025
Jul 18, 2017
Apr 9, 2025
May 24, 2024
Mar 28, 2023
Apr 26, 2017
Apr 22, 2024
Mar 18, 2025
Mar 18, 2025
Apr 10, 2025
Mar 6, 2025
Apr 19, 2024
Jun 18, 2024
Mar 28, 2025
Jun 18, 2024
Apr 27, 2025
Sep 17, 2024
Aug 28, 2024
Jan 28, 2025
Apr 27, 2025
Apr 19, 2024
Apr 27, 2025
Apr 27, 2025
Feb 1, 2025
Nov 13, 2024
Mar 2, 2023
Mar 28, 2023
Mar 28, 2025
Feb 27, 2024
Mar 28, 2025
Apr 16, 2025
Apr 13, 2024
Jul 12, 2017
Apr 9, 2025
Mar 6, 2023
Feb 9, 2024
Oct 18, 2023
Mar 17, 2025
Mar 14, 2025
Jun 9, 2016
Aug 18, 2022
Mar 23, 2023
Apr 25, 2022
Apr 8, 2025
Apr 8, 2025
Nov 1, 2020
Feb 8, 2025
Mar 24, 2025
Mar 19, 2025
Jun 18, 2024
Apr 8, 2025
Apr 24, 2025
May 24, 2024
Mar 19, 2025
Mar 27, 2025
Mar 19, 2025
Apr 3, 2025
Jan 21, 2020
Jan 27, 2023
Jan 1, 2025
Mar 6, 2023
Apr 8, 2025
Nov 9, 2023
Jan 21, 2020
Feb 7, 2020
May 10, 2023
Apr 10, 2025
Mar 28, 2023
Apr 9, 2025
May 13, 2021
Jan 11, 2020
Mar 28, 2023
Jan 7, 2021
Jan 7, 2025
Dec 2, 2024
Jan 25, 2024
Jun 16, 2021
Jun 16, 2021
Jun 16, 2021
Sep 14, 2020
Mar 28, 2023
Sep 4, 2021
Mar 17, 2025
Jan 27, 2023
Nov 26, 2020
Jan 27, 2023
Nov 8, 2023
Mar 28, 2023
Oct 18, 2023
Mar 28, 2023
Dec 16, 2024
Jun 4, 2020
Mar 19, 2025
Jan 7, 2025
Mar 28, 2023
Apr 8, 2025
Mar 28, 2023
Mar 17, 2025
Nov 15, 2023
Jul 3, 2024
Aug 19, 2022
Oct 18, 2023
May 17, 2017
Apr 27, 2020
Mar 17, 2025
Apr 14, 2025
Apr 8, 2025
Oct 8, 2024
Jul 4, 2023
Dec 19, 2019
Jan 17, 2025
Nov 28, 2023
Mar 28, 2023
Apr 8, 2025

Repository files navigation

alidist

Recipes to build ALICE SW

Stabilitty guarantees of the various branches and tags

  1. Tags are immutable. Under no circumstances tags should be moved. If it happens, this should be explicitly documented and possibly rolled back.
  2. The master branch is supposed to always be able to build O2, O2Physics and the O2DPG packages using the o2 and o2-epn defaults. The goal of the master branch is to allow the wider possible audience to use it for development and eventually tagging, when deemed necessary. In particular it should always build on the ALICE production platform, Alma Linux 9.
  3. Changes should always be discussed and agreed with the stakeholders. The only case in which a stakeholder approval can be bypassed is if some external force (OS updates breaking things for many people, data taking fixes) breaks the requirement in 2 and an urgent patch is needed to allow many people to be back in business.
  4. While there should not be any deliberate attempt to break things, there is no guarantee that the master branch is validated for physics production, please follow up in the appropriate forum whether or not a given tag / commit is good for production.
  5. If something particular intrusive needs to be tested, a custom build should be done to validate the changes.
  6. Unfortunate mis-steps happen. If the master turns out to be not usable for development / tagging production releases, we roll back to a working state (via reverts, not by force pushing).

Guidelines for commit messages

  • Keep the first line of the commit below 50 chars
  • Leave the second line empty
  • Try to keep the lines after the third below 72 chars
  • Use some imperative verb as first word of the first line
  • Do not end the first line with a full-stop (i. e. .)
  • Make sure you squash / cleanup your commits when it makes sense (e.g. if they are really one the fix of the other). Keep history clean.

Example:

Fix issue in Geant4

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat.

Guidelines for contributing recipes

  • Keep things simple (but concise).
  • Use 2 spaces to indent them.
  • Try avoid "fix typo" commits and squash history whenever makes sense.
  • Avoid touching $SOURCEDIR. If your recipe needs to build in-source, first copy them to $BUILDIR via:
rsync -a $SOURCEDIR ./
  • If a package is a toolkit not really affecting physics performance, make sure you provide a prefer_system_check rule to have laptop user pick it up from the system.
  • If a package is a physics related one. Avoid providing a prefer_system_check unless explicitly discussed withing the Computing Board or the O2 Technical board.
  • If SOMETHING_VERSION or SOMETHING_REVISION is defined, you can assume SOMETHING_ROOT is defined and points to an aliBuild built package. However the opposite is not true. I.e. you should not assume that SOMETHING_ROOT being defined means that a something was built with aliBuild (it could come from the system) and you cannot assume that SOMETHING_VERSION and SOMETHING_REVISION are set.
  • If a package can / could be picked up from the system, do not provide, in the modulefile, any variable which is not also exposed in general by the system installation. E.g. ROOTSYS is fine because that kind of a standard for ROOT installations, GCC_ROOT is not because GCC in general does not use GCC_ROOT.
  • When picking up a system dependency installed with homebrew, make sure you override the SOMETHING_ROOT variable when it's not set by using brew --prefix.
case $ARCHITECTURE in
  osx)
[ ! $BOOST_ROOT ] || BOOST_ROOT=$(brew --prefix boost)
  ;;
esac

Then use such a variable to pass the information optionally to, e.g., CMake.

cmake ...                                   \
  ${BOOST_ROOT:+-DBOOST_ROOT=$BOOST_ROOT}

This will make sure that if a package was selected to be picked up by the system (i.e. BOOST_ROOT is not set), we will look it up in the package specific folder when using homebrew.

You should never set any SOMETHING_ROOT variable to /usr/local because that is a global folder and it will make it have precendence in the lookup, therefore potentially implicitly bringing in incompatible versions of external packages.

Guidelines for handling externals sources

Whenever you need to build a new external, you should consider the following:

  • If a Git / GitHub mirror exists, and no patches are required, use it for the package source.

  • If a Git / GitHub repository exists and you need to patch it, fork it, decide a fork point, possibly based on a tag or eventually a commit hash, and create a branch in your fork called alice/<fork-point>. This can be done with:

    git checkout -b alice/<fork-point> <fork-point>
    

    patches should be applied on such a branch. You should then tag your development as: <version>-alice<x> where <x> is an incremental number for a given official <version>.

  • If no git repository is available, or if mirroring the whole repository is not desirable, create a repository with a master branch. On the master branch import relevant released tarballs, one commit per tarball. Make sure you tag the commit with the tag of the tarball. E.g.:

    git clone https://github.com/alisw/mysoft
    curl -O https://mysoftware.com/mysoft-version.tar.gz
    tar xzvf mysoft-version.tar.gz
    rsync -a --delete --exclude '**/.git' mysoft-version/ mysoft/
    cd mysoft
    git add -A .
    git commit -a -m 'Import https://mysoftware.com/mysoft-<version>.tar.gz'
    git tag <version>
    

    In case you need to add a patch on top of a tarball, create a branch with:

    git checkout -b alice/<version> <version>
    

    and add your patches on such a branch. You should then tag your development as: <version>-alice<x> where <x> is an incremental number for a given official <version>.

  • Do not create extra branches unless you do need to patch the original sources.

Moreover try to keep the package name (as specified inside the recipe in the package field of the header) and the repository name the same, including capitalization.

Request a new package

Please open a JIRA issue with your request at:

https://alice.its.cern.ch/jira/secure/CreateIssue!default.jspa

Make sure you select "Dependencies" as component.

Private packages

Private packages are highly discouraged and must be avoided as much as possible. Private packages MUST still comply to GLPv3 which basically means:

  • You cannot have private packages depend on GPLv3 code.
  • You cannot have GPLv3 code which can be considered "derived product" of a private package.

In order to have a private package please open a JIRA ticket and we will create one / mirror in the https://gitlab.cern.ch/AlicePrivateExternals, which is the only place where you are allowed to have a private external.