From 4c70921a84a7a1f5a827dcd4e94a35bc672d0590 Mon Sep 17 00:00:00 2001 From: Oliver Lantwin Date: Wed, 8 Apr 2026 15:07:49 +0200 Subject: [PATCH 1/4] feat: replace ROOT builtin PCRE and VDT with external packages ROOT plans to remove these builtins. Add standalone recipes for PCRE2 (10.44) and VDT (0.4.6), and configure ROOT to use them externally instead of its bundled copies. Remove the old legacy PCRE recipe. --- CHANGELOG.md | 2 ++ pcre.sh | 18 ------------------ pcre2.sh | 38 ++++++++++++++++++++++++++++++++++++++ root.sh | 14 ++++++++------ vdt.sh | 33 +++++++++++++++++++++++++++++++++ 5 files changed, 81 insertions(+), 24 deletions(-) delete mode 100644 pcre.sh create mode 100644 pcre2.sh create mode 100644 vdt.sh diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c70d46fa..40e3245e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ Until May 2022 (inclusive) no changelog was kept. We might try to reconstruct it ### Added +* PCRE2, vdt: Add recipes to replace ROOT builtins * uv: Add recipe for fast Python package installation * Replace monolithic Python-modules with individual package recipes * alibuild, bitsorg: Add recipes @@ -30,6 +31,7 @@ Until May 2022 (inclusive) no changelog was kept. We might try to reconstruct it ### Changed +* ROOT: Build against external PCRE2 and VDT instead of builtins * EvtGen: Upgrade to R02-02-03 with HepMC3 support * PHOTOSPP, Tauolapp: Build with HepMC3 support * APFEL: Upgrade to 3.1.1 and switch to CMake build diff --git a/pcre.sh b/pcre.sh deleted file mode 100644 index ffa649ee4..000000000 --- a/pcre.sh +++ /dev/null @@ -1,18 +0,0 @@ -package: PCRE -version: master -tag: master -source: https://github.com/ktf/pcre -prefer_system: (?!slc5) -prefer_system_check: | - printf "#include \"pcre.h\"\n" | gcc -xc++ - -c -o /dev/null ---- -#!/bin/sh -echo "Building our own pcre. If you want to avoid this, please install pcre development package." - -$SOURCEDIR/configure --enable-unicode-properties \ - --enable-pcregrep-libz \ - --enable-pcregrep-libbz2 \ - --prefix=$INSTALLROOT - -make ${JOBS+-j $JOBS} -make install diff --git a/pcre2.sh b/pcre2.sh new file mode 100644 index 000000000..2227b8de3 --- /dev/null +++ b/pcre2.sh @@ -0,0 +1,38 @@ +package: PCRE2 +version: "%(tag_basename)s" +tag: pcre2-10.44 +source: https://github.com/PCRE2Project/pcre2 +build_requires: + - "GCC-Toolchain:(?!osx)" + - CMake +prefer_system: (?!slc5) +prefer_system_check: | + printf "#include \"pcre2.h\"\n" | c++ -xc++ -DPCRE2_CODE_UNIT_WIDTH=8 - -c -M 2>&1 +--- +#!/bin/bash -e +cmake "$SOURCEDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLROOT" \ + -DCMAKE_BUILD_TYPE="$CMAKE_BUILD_TYPE" \ + -DPCRE2_SUPPORT_UNICODE=ON \ + -DPCRE2_BUILD_PCRE2_8=ON \ + -DPCRE2_BUILD_PCRE2_16=OFF \ + -DPCRE2_BUILD_PCRE2_32=OFF + +cmake --build . ${JOBS:+-j$JOBS} --target install + +# Modulefile +MODULEDIR="$INSTALLROOT/etc/modulefiles" +mkdir -p "$MODULEDIR" +cat > "$MODULEDIR/$PKGNAME" <&1 +--- +#!/bin/bash -e +cmake "$SOURCEDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLROOT" \ + -DCMAKE_BUILD_TYPE="$CMAKE_BUILD_TYPE" + +cmake --build . ${JOBS:+-j$JOBS} --target install + +# Modulefile +MODULEDIR="$INSTALLROOT/etc/modulefiles" +mkdir -p "$MODULEDIR" +cat > "$MODULEDIR/$PKGNAME" < Date: Wed, 8 Apr 2026 19:26:04 +0200 Subject: [PATCH 2/4] fix: set CMP0144 policy so packages find VDT_ROOT Several packages using older CMake minimum versions don't honour _ROOT variables by default. Enable CMP0144 (and the minimum policy version for vdt itself) so they pick up VDT_ROOT correctly. --- geant3.sh | 1 + genfit.sh | 1 + rootegpythia6.sh | 1 + vdt.sh | 3 ++- vgm.sh | 1 + 5 files changed, 6 insertions(+), 1 deletion(-) diff --git a/geant3.sh b/geant3.sh index fb003d3d6..be6b33712 100644 --- a/geant3.sh +++ b/geant3.sh @@ -33,6 +33,7 @@ cmake $SOURCEDIR -DCMAKE_INSTALL_PREFIX=$INSTALLROOT \ -DCMAKE_SKIP_RPATH=TRUE \ -DCMAKE_POLICY_DEFAULT_CMP0074=NEW \ -DCMAKE_C_FLAGS="$CFLAGS -std=gnu17" \ + -DCMAKE_POLICY_DEFAULT_CMP0144=NEW \ ${SPECIALFFLAGS:+-DCMAKE_Fortran_FLAGS="-fallow-argument-mismatch -fallow-invalid-boz -fno-tree-loop-distribute-patterns"} make ${JOBS:+-j $JOBS} install diff --git a/genfit.sh b/genfit.sh index 8cf3061f6..c4a31c8e1 100644 --- a/genfit.sh +++ b/genfit.sh @@ -39,6 +39,7 @@ cmake $SOURCEDIR -DCMAKE_INSTALL_LIBDIR=lib \ -DCMAKE_INSTALL_PREFIX=$INSTALLROOT \ -DCMAKE_POLICY_DEFAULT_CMP0074=NEW \ + -DCMAKE_POLICY_DEFAULT_CMP0144=NEW \ -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \ -DROOT_DIR="${ROOT_ROOT}" \ -DBUILD_TESTING=${BUILD_TESTING} diff --git a/rootegpythia6.sh b/rootegpythia6.sh index 83ba9e4e7..84587daa6 100644 --- a/rootegpythia6.sh +++ b/rootegpythia6.sh @@ -35,6 +35,7 @@ cmake "$SOURCEDIR" \ -DCMAKE_INSTALL_PREFIX="$INSTALLROOT" \ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} \ -DROOTEGPythia6_Pythia6_BUILTIN=ON \ + -DCMAKE_POLICY_DEFAULT_CMP0144=NEW \ -DCMAKE_INSTALL_LIBDIR=lib cmake --build . ${JOBS:+-j$JOBS} diff --git a/vdt.sh b/vdt.sh index 2180537df..af46dd407 100644 --- a/vdt.sh +++ b/vdt.sh @@ -10,7 +10,8 @@ prefer_system_check: | --- #!/bin/bash -e cmake "$SOURCEDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLROOT" \ - -DCMAKE_BUILD_TYPE="$CMAKE_BUILD_TYPE" + -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \ + -DCMAKE_BUILD_TYPE="$CMAKE_BUILD_TYPE" cmake --build . ${JOBS:+-j$JOBS} --target install diff --git a/vgm.sh b/vgm.sh index 9323440c6..229541ed5 100644 --- a/vgm.sh +++ b/vgm.sh @@ -35,6 +35,7 @@ cmake "$SOURCEDIR" \ -DWITH_TEST=OFF \ ${XERCESC_ROOT:+-DXercesC_ROOT=$XERCESC_ROOT} \ -DCMAKE_POLICY_DEFAULT_CMP0074=NEW \ + -DCMAKE_POLICY_DEFAULT_CMP0144=NEW \ -DBUILD_SHARED_LIBS=OFF # ${XERCESC_ROOT:+-DXercesC_INCLUDE_DIR=$XERCESC_ROOT/include -DXercesC_LIBRARY=$XERCESC_ROOT/lib} \ From 735dce2c6749dcbe65d9f3cf809ff0afebbde22c Mon Sep 17 00:00:00 2001 From: Oliver Lantwin Date: Mon, 27 Apr 2026 11:52:53 +0200 Subject: [PATCH 3/4] fix: export PCRE2_ROOT and VDT_ROOT as environment variables Use setenv instead of set in modulefiles so these variables are visible to downstream builds like root.sh's CMAKE_PREFIX_PATH. --- pcre2.sh | 4 ++-- vdt.sh | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pcre2.sh b/pcre2.sh index 2227b8de3..dde93eaae 100644 --- a/pcre2.sh +++ b/pcre2.sh @@ -33,6 +33,6 @@ module-whatis "ALICE Modulefile for $PKGNAME $PKGVERSION-@@PKGREVISION@$PKGHASH@ # Dependencies module load BASE/1.0 ${GCC_TOOLCHAIN_REVISION:+GCC-Toolchain/$GCC_TOOLCHAIN_VERSION-$GCC_TOOLCHAIN_REVISION} # Our environment -set PCRE2_ROOT \$::env(BASEDIR)/$PKGNAME/\$version -prepend-path LD_LIBRARY_PATH \$PCRE2_ROOT/lib +setenv PCRE2_ROOT \$::env(BASEDIR)/$PKGNAME/\$version +prepend-path LD_LIBRARY_PATH \$::env(PCRE2_ROOT)/lib EoF diff --git a/vdt.sh b/vdt.sh index af46dd407..a2c82152b 100644 --- a/vdt.sh +++ b/vdt.sh @@ -29,6 +29,6 @@ module-whatis "ALICE Modulefile for $PKGNAME $PKGVERSION-@@PKGREVISION@$PKGHASH@ # Dependencies module load BASE/1.0 ${GCC_TOOLCHAIN_REVISION:+GCC-Toolchain/$GCC_TOOLCHAIN_VERSION-$GCC_TOOLCHAIN_REVISION} # Our environment -set VDT_ROOT \$::env(BASEDIR)/$PKGNAME/\$version -prepend-path LD_LIBRARY_PATH \$VDT_ROOT/lib +setenv VDT_ROOT \$::env(BASEDIR)/$PKGNAME/\$version +prepend-path LD_LIBRARY_PATH \$::env(VDT_ROOT)/lib EoF From cdd9eeac1e54b4e4c5ec2ba7dc9736d3f6e1b329 Mon Sep 17 00:00:00 2001 From: Oliver Lantwin Date: Tue, 28 Apr 2026 09:47:23 +0200 Subject: [PATCH 4/4] refactor: use alibuild-generate-module Replace handwritten modulefile boilerplate in PCRE2 and vdt recipes with the standard generator, matching other recipes. --- pcre2.sh | 19 +++---------------- vdt.sh | 19 +++---------------- 2 files changed, 6 insertions(+), 32 deletions(-) diff --git a/pcre2.sh b/pcre2.sh index dde93eaae..61d6a432e 100644 --- a/pcre2.sh +++ b/pcre2.sh @@ -5,6 +5,7 @@ source: https://github.com/PCRE2Project/pcre2 build_requires: - "GCC-Toolchain:(?!osx)" - CMake + - alibuild-recipe-tools prefer_system: (?!slc5) prefer_system_check: | printf "#include \"pcre2.h\"\n" | c++ -xc++ -DPCRE2_CODE_UNIT_WIDTH=8 - -c -M 2>&1 @@ -20,19 +21,5 @@ cmake "$SOURCEDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLROOT" \ cmake --build . ${JOBS:+-j$JOBS} --target install # Modulefile -MODULEDIR="$INSTALLROOT/etc/modulefiles" -mkdir -p "$MODULEDIR" -cat > "$MODULEDIR/$PKGNAME" < "$INSTALLROOT/etc/modulefiles/$PKGNAME" diff --git a/vdt.sh b/vdt.sh index a2c82152b..657cf7e03 100644 --- a/vdt.sh +++ b/vdt.sh @@ -5,6 +5,7 @@ source: https://github.com/dpiparo/vdt build_requires: - CMake - "GCC-Toolchain:(?!osx)" + - alibuild-recipe-tools prefer_system_check: | printf "#include \"vdt/vdtMath.h\"\n" | c++ -xc++ - -c -M 2>&1 --- @@ -16,19 +17,5 @@ cmake "$SOURCEDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLROOT" \ cmake --build . ${JOBS:+-j$JOBS} --target install # Modulefile -MODULEDIR="$INSTALLROOT/etc/modulefiles" -mkdir -p "$MODULEDIR" -cat > "$MODULEDIR/$PKGNAME" < "$INSTALLROOT/etc/modulefiles/$PKGNAME"