Recipes and defaults for building the ALICE software stack (O2, O2Physics and their
dependencies) with bits. This repository is thin: the
ALICE recipes themselves live in alisw/alidist, which
the bits-providers registry exposes as the
shared recipe pool alidist.bits. alice.bits adds what bits needs on top of it: the base
defaults with the ALICE CVMFS layout, the aliBuild-compatible alidist variant and two
temporary recipe fixes (see Files). Everything else (O2, O2Physics, ROOT,
the defaults o2, o2-epn, ...) comes from alidist.
bits can be driven in two ways (see Front-end choice in the bits reference):
- Native
bitswithalice.bits(recommended, and what the bits-console CI uses). bits loads the provider registry, which brings in alidist at the branch the registry names (master), together with the fixes and the CVMFS layout in this repository. - The
aliBuildfront-end with analidistcheckout (legacy). ThealiBuildscript shipped with bits keeps the classic workflow: no registry, recipes from a localalidistcheckout, legacyinit.sh,VO_ALICE@pkg::versionnames inaliBuild qand thealisw/<distro>-builderimages for--docker. This repository is not used on that path.
-
bits installed as described in the bits README; this also puts the
aliBuildwrapper on yourPATH. Check the machine withbits doctor. -
A platform alidist supports. The bits-console ALICE builds use these architectures and builder images:
Platform --architectureBuilder image EL9, x86-64 slc9_x86-64registry.cern.ch/alisw/slc9-builderEL9, ARM64 slc9_aarch64registry.cern.ch/alisw/slc9-arm-builderEL8, x86-64 slc8_x86-64docker.io/alisw/slc8-builderUbuntu 22.04, x86-64 ubuntu2204_x86-64registry.cern.ch/alisw/ubuntu2204-builderUbuntu 24.04, x86-64 ubuntu2404_x86-64registry.cern.ch/alisw/ubuntu2404-builderUse these aliBuild-style names: the alidist recipes test
$ARCHITECTUREand only recogniseslc*andubuntu*values. On a matching host bits detects them itself. EL10 and Ubuntu 26.04 are not supported by alidist yet. -
O2Physics is large: the alidist variant allows 5 GiB per compile job for it, so plan on enough memory for the number of jobs you run (see Build memory-hungry packages).
Work in a directory that holds the recipe checkout, your development checkouts and the
sw work directory side by side, as with aliBuild:
mkdir alice && cd alice
bits init alice.bits # or: git clone https://github.com/bitsorg/alice.bits
bits use build -c alice.bits --defaults alidist::o2
bits build --dry-run O2Physics # optional: what would be reused and what built
bits build O2Physics # alidist is fetched automatically
bits enter O2Physics/latest # sub-shell with O2Physics loaded; leave with `exit`bits use build records the options once for this directory (saved in ./.bitsuse). For a
container build, record instead, e.g. on an EL9 x86-64 host:
bits use build -c alice.bits --defaults alidist::o2 --architecture slc9_x86-64 --docker --docker-image registry.cern.ch/alisw/slc9-builder.
To build elsewhere, export BITS_WORK_DIR=/path/to/sw.
--defaults alidist::o2 loads release and the alidist variant (both from this
repository) and alidist's o2 defaults. O2 builds the same way. Pick another alidist
flavour by replacing o2, e.g. alidist::o2-epn; packages reject flavours they do not
list in their valid_defaults.
To develop a package, check out its source next to the recipes and rebuild; this works for packages whose recipe is in alidist too:
bits init -c alice.bits --defaults alidist::o2 O2Physics # writable checkout in ./O2Physics
bits build O2Physics # builds your checkoutmkdir alice && cd alice
aliBuild init # clone alisw/alidist into ./alidist
aliBuild build O2Physics --defaults o2
aliBuild init O2Physics # optional: development checkout
bits enter O2Physics/latestaliBuild --docker uses the alisw/<distro>-builder image for the architecture by default.
The build-time environment is the classic aliBuild one, so bits and aliBuild produce the
same package hashes and can share tarballs.
- CVMFS layout. Published packages go to
/cvmfs/bits.cern.ch/alice/<install-dir>/Packages/<pkg>/<version>, with modulefiles in/cvmfs/bits.cern.ch/alice/<install-dir>/Modules/modulefiles/<pkg>and architecture-independent packages under/cvmfs/bits.cern.ch/alice/noarch/. The install directory follows the OS-first ALICE convention (el9-x86_64,el9-aarch64,ubuntu2404_x86_64), not the architecture string. The prefix/cvmfs/bits.cern.ch/alicemust match thecvmfs_prefixthat bits-console sets for ALICE; a build whose prefix disagrees refuses to publish. - Publishing is done from bits-console,
which builds with
--defaults alidist::<flavour>on the platforms above. To check where a package would land, usebits cvmfs-path. - Changing defaults. Compiler flags, disabled packages and version pins come from
the alidist flavour (
defaults-o2.sh, ...); change them in alidist. This repository holds only the CVMFS layout and the bits-specific build settings. Itsdefaults-release.shmust stay: it hides alidist's file of the same name, the legacy ROOT 5 flavour, which aliBuild never loads under--defaults o2.
| File | Role |
|---|---|
defaults-release.sh |
Base of every chain: the ALICE CVMFS layout and requires: alidist.bits, so every build pulls in alidist. Nothing else; it replaces alidist's legacy defaults-release.sh. |
defaults-alidist.sh |
The aliBuild-compatible build variant: legacy build-time init.sh (alidist-compatible hashes), CMAKE_PREFIX_PATH exported at build time, and 5 GiB of memory per compile job for O2Physics. |
grpc.sh, vecgeom.sh |
Temporary copies of the alidist recipes with a build fix each. Because this repository is searched before alidist, they shadow the alidist versions; they will be removed once the fixes are merged upstream. |
- alisw/alidist: the ALICE recipes;
bits-providers: the registry entries
alice.bitsandalidist.bits - bits ALICE: the aliBuild workflow, Check out a recipe repository and develop against it, Docker Support
- bits User Guide, Cookbook, Reference
- bits-console: CI builds and CVMFS publishing
This repository does not contain a LICENSE file yet.