Commit f2d972fe authored by Simon Spannagel's avatar Simon Spannagel
Browse files

Merge branch 'updateLCG' into 'master'

Updated default LCG version to 104, and made things work for Red Hat Enterprise Linux 9

See merge request allpix-squared/allpix-squared!1089
parents 2b4896d7 e42fb2f2
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -8,12 +8,12 @@ if [ "$(uname)" = "Linux" ]; then
    if [ "$( cat /etc/*-release | grep "CentOS Linux 7" )" ]; then
        echo "Detected CentOS Linux 7"
        OS=centos7
    elif [ "$( cat /etc/*-release | grep "CentOS Linux 8" )" ] || [ "$( cat /etc/*-release | grep "CentOS Stream release 8" )" ]; then
        echo "Detected CentOS Linux 8"
        OS=centos8
    elif [ "$( cat /etc/*-release | grep "CentOS Stream release 9" )" ]; then
        echo "Detected CentOS Linux 9"
        OS=centos9
    elif [ "$( cat /etc/*-release | grep "Red Hat Enterprise Linux 9" )" ]; then
        echo "Detected Red Hat Enterprise Linux 9"
        OS=el9
    elif [ "$( cat /etc/*-release | grep "AlmaLinux 9" )" ]; then
        echo "Detected AlmaLinux 9"
        OS=el9
    else
        echo "Cannot detect OS, falling back to CentOS7"
        OS=centos7
@@ -58,7 +58,7 @@ fi


# Determine which LCG version to use
DEFAULT_LCG="LCG_103"
DEFAULT_LCG="LCG_104"

if [ -z ${ALLPIX_LCG_VERSION} ]; then
    echo "No explicit LCG version set, using ${DEFAULT_LCG}."
@@ -83,7 +83,7 @@ if [ ${COMPILER_TYPE} = "llvm" ]; then
    if [ "$(uname)" = "Darwin" ]; then
        COMPILER_VERSION="clang120"
    else
        COMPILER_VERSION="clang12"
        COMPILER_VERSION="clang16"
    fi
    echo "Compiler type set to LLVM, version ${COMPILER_VERSION}."
fi
+1 −1
Original line number Diff line number Diff line
@@ -10,7 +10,7 @@ AccessModifierOffset: -4
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AllowShortIfStatementsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Inline
AllowShortFunctionsOnASingleLine: All
BinPackParameters: false
BinPackArguments: false
ColumnLimit: 125
+39 −50
Original line number Diff line number Diff line
@@ -38,8 +38,8 @@ stages:
        - source .ci/init_x86_64.sh
        - mkdir -p build/ && cd build/

.centos9:
    image: gitlab-registry.cern.ch/sft/docker/centos9:latest
.alma9:
    image: gitlab-registry.cern.ch/sft/docker/alma9:latest
    tags:
        - cvmfs
    variables:
@@ -56,7 +56,7 @@ stages:
        - mkdir -p build/ && cd build/

.lxplus:
    image: gitlab-registry.cern.ch/sft/docker/centos7:latest
    image: gitlab-registry.cern.ch/sft/docker/alma9:latest
    tags:
        - cvmfs
    variables:
@@ -104,6 +104,7 @@ cmp:lxplus-gcc:
        - .lxplus
        - .compile
    script:
        - export CCACHE_DIR=`pwd`/ccache
        - cmake -GNinja -DCMAKE_CXX_FLAGS="-Werror" -DBUILD_ALL_MODULES=ON -DCMAKE_BUILD_TYPE=RELEASE ..
        - ninja -k0
        - ninja install
@@ -122,16 +123,16 @@ cmp:cc7-gcc:
        - .centos7
        - .compile

cmp:cc7-llvm:
cmp:el9-llvm:
    extends:
        - .centos7
        - .alma9
        - .compile
    variables:
        COMPILER_TYPE: "llvm"

cmp:cc9-gcc:
cmp:el9-gcc:
    extends:
        - .centos9
        - .alma9
        - .compile

cmp:macos-clang:
@@ -153,17 +154,17 @@ cmp:macos-clang:
    stage: formatting
    needs: []
    dependencies: []
    extends: .centos7
    extends: .alma9
    variables:
        COMPILER_TYPE: "llvm"

fmt:cc7-llvm-format:
fmt:clang-format:
    extends: .format
    script:
        - cmake -GNinja -DCMAKE_CXX_FLAGS="-Werror" -DBUILD_ALL_MODULES=ON -DCMAKE_BUILD_TYPE=RELEASE ..
        - ninja check-format

fmt:cc7-llvm-lint:
fmt:clang-lint:
    extends: .format
    script:
        - cmake -GNinja -DCMAKE_CXX_FLAGS="-Werror" -DBUILD_ALL_MODULES=ON -DCMAKE_BUILD_TYPE=RELEASE ..
@@ -172,7 +173,7 @@ fmt:cc7-llvm-lint:
        - schedules
        - tags

fmt:cc7-llvm-lint-diff:
fmt:clang-lint-diff:
    extends: .format
    script:
        - git remote add upstream $REPOSITORY && git fetch upstream
@@ -218,7 +219,6 @@ fmt:proselint:
        - find . -name "*md" -not -path "./build/*" -print0 | xargs -0 proselint --config .proselint.json

fmt:coverity:
    image: gitlab-registry.cern.ch/sft/docker/centos9:latest
    extends: .format
    only:
        - schedules
@@ -339,41 +339,41 @@ core:cc7-gcc:
        - job: cmp:cc7-gcc
          artifacts: true

mod:cc7-llvm:
# AlmaLinux 9
mod:el9-gcc:
    extends:
        - .centos7
        - .alma9
        - .testmod
    variables:
        COMPILER_TYPE: "llvm"
    needs:
        - job: cmp:cc7-llvm
        - job: cmp:el9-gcc
          artifacts: true

core:cc7-llvm:
core:el9-gcc:
    extends:
        - .centos7
        - .alma9
        - .testcore
    variables:
        COMPILER_TYPE: "llvm"
    needs:
        - job: cmp:cc7-llvm
        - job: cmp:el9-gcc
          artifacts: true
          
# CentOS 8
mod:cc9-gcc:
mod:el9-llvm:
    extends:
        - .centos9
        - .alma9
        - .testmod
    variables:
        COMPILER_TYPE: "llvm"
    needs:
        - job: cmp:cc9-gcc
        - job: cmp:el9-llvm
          artifacts: true

core:cc9-gcc:
core:el9-llvm:
    extends:
        - .centos9
        - .alma9
        - .testcore
    variables:
        COMPILER_TYPE: "llvm"
    needs:
        - job: cmp:cc9-gcc
        - job: cmp:el9-llvm
          artifacts: true

# Mac OS
@@ -418,17 +418,6 @@ perf:cc7-gcc:
        - job: cmp:cc7-gcc
          artifacts: true

# Temporarily hide LLVM job, have to find out why this is so slow.
.perf:cc7-llvm:
    extends:
        - .centos7
        - .testperf
    variables:
        COMPILER_TYPE: "llvm"
    needs:
        - job: cmp:cc7-llvm
          artifacts: true

# Mac OS
# Temporarily disable Mac OS X performance until tests are adapted to actual performance
.perf:macos-clang:
@@ -470,7 +459,7 @@ docs:doxygen:
# Create file tree for hugo
docs:usermanual-hugo:
    extends: .doc
    image: gitlab-registry.cern.ch/sft/docker/centos7:latest
    image: gitlab-registry.cern.ch/sft/docker/alma9:latest
    tags:
        - cvmfs
    script:
@@ -522,22 +511,22 @@ pkg:cc7-gcc:
        - job: cmp:cc7-gcc
          artifacts: true

pkg:cc7-llvm:
pkg:el9-llvm:
    extends:
        - .centos7
        - .alma9
        - .pack
    needs:
        - job: cmp:cc7-llvm
        - job: cmp:el9-llvm
          artifacts: true
    variables:
        COMPILER_TYPE: "llvm"

pkg:cc9-gcc:
pkg:el9-gcc:
    extends:
        - .centos9
        - .alma9
        - .pack
    needs:
        - job: cmp:cc9-gcc
        - job: cmp:el9-gcc
          artifacts: true

pkg:macos-clang:
@@ -588,8 +577,8 @@ deploy:cvmfs:
    stage: deployment
    dependencies:
        - pkg:cc7-gcc
        - pkg:cc7-llvm
        - pkg:cc9-gcc
        - pkg:el9-llvm
        - pkg:el9-gcc
        - pkg:macos-clang
    tags:
        - cvmfs-deploy
+38 −28
Original line number Diff line number Diff line
@@ -5,7 +5,7 @@
# CMake File for the Allpix Squared Framework #
###############################################

CMAKE_MINIMUM_REQUIRED(VERSION 3.6.3 FATAL_ERROR)
CMAKE_MINIMUM_REQUIRED(VERSION 3.7.0 FATAL_ERROR)
IF(COMMAND CMAKE_POLICY)
    CMAKE_POLICY(SET CMP0003 NEW) # change linker path search behaviour
    CMAKE_POLICY(SET CMP0048 NEW) # set project version
@@ -178,6 +178,34 @@ ENDIF()
# We need PkgConfig for some dependencies:
FIND_PACKAGE(PkgConfig REQUIRED)


#################################
# Figure out ROOT's C++ version #
#################################

FIND_PACKAGE(ROOT REQUIRED COMPONENTS Geom Core GenVector Hist RIO NO_MODULE)
IF(NOT ROOT_FOUND)
    MESSAGE(FATAL_ERROR "Could not find ROOT, make sure to source the ROOT environment\n"
                        "$ source YOUR_ROOT_DIR/bin/thisroot.sh")
ENDIF()

# Check which C++ version ROOT was built against
IF(ROOT_CXX_FLAGS MATCHES ".*std=c\\+\\+2[0a].*")
    SET(ROOT_CXX_STD 20)
ELSEIF(ROOT_CXX_FLAGS MATCHES ".*std=c\\+\\+1[7z].*")
    SET(ROOT_CXX_STD 17)
ELSEIF(ROOT_CXX_FLAGS MATCHES ".*std=c\\+\\+.*")
    MESSAGE(FATAL_ERROR "ROOT was built with an unsupported C++ version, at least C++17 is required: ${ROOT_CXX_FLAGS}")
ELSE()
    MESSAGE(FATAL_ERROR "Could not deduce ROOT's C++ version from build flags: ${ROOT_CXX_FLAGS}")
ENDIF()

# Check ROOT version
IF(NOT ${ROOT_VERSION} VERSION_GREATER "6.0")
    MESSAGE(FATAL_ERROR "ROOT versions below 6.0 are not supported")
ENDIF()


###################################
# Define build flags for allpix   #
###################################
@@ -226,13 +254,18 @@ IF(CCACHE_FOUND)
        CACHE PATH "CCache program" FORCE)
ENDIF()

# Require C++17
# Require C++17 or C++20
CHECK_CXX_COMPILER_FLAG(-std=c++17 SUPPORT_STD_CXX17)
IF(NOT SUPPORT_STD_CXX17)
    MESSAGE(FATAL_ERROR "Compiler does not support required standard C++17")
CHECK_CXX_COMPILER_FLAG(-std=c++20 SUPPORT_STD_CXX20)
IF(ROOT_CXX_STD EQUAL 20 AND NOT SUPPORT_STD_CXX20)
    MESSAGE(FATAL_ERROR "Compiler does not support standard required by ROOT: C++20")
ELSEIF(ROOT_CXX_STD EQUAL 17 AND NOT SUPPORT_STD_CXX17)
    MESSAGE(FATAL_ERROR "Compiler does not support standard required by ROOT: C++17")
ENDIF()

SET(CMAKE_CXX_STANDARD 17)
# Build with C++20 or C++17
SET(CMAKE_CXX_STANDARD "${ROOT_CXX_STD}")
MESSAGE(STATUS "Building against C++ version ${CMAKE_CXX_STANDARD}")
SET(CMAKE_CXX_STANDARD_REQUIRED ON)
SET(CMAKE_CXX_EXTENSIONS OFF)

@@ -292,29 +325,6 @@ SET(ALLPIX_BUILD_GEANT4_INTERFACE
    "OFF"
    CACHE BOOL "Build Geant4 interface library" FORCE)

# ROOT is required for vector and persistency etc
FIND_PACKAGE(ROOT REQUIRED COMPONENTS Geom Core GenVector Hist RIO NO_MODULE)
IF(NOT ROOT_FOUND)
    MESSAGE(FATAL_ERROR "Could not find ROOT, make sure to source the ROOT environment\n"
                        "$ source YOUR_ROOT_DIR/bin/thisroot.sh")
ENDIF()

# Downgrade to C++14 if ROOT is not build with C++17 support
IF(ROOT_CXX_FLAGS MATCHES ".*std=c\\+\\+1[7z].*")
    IF(NOT SUPPORT_STD_CXX17)
        MESSAGE(FATAL_ERROR "ROOT was built with C++17 support but current compiler doesn't support it")
    ENDIF()
ELSEIF(ROOT_CXX_FLAGS MATCHES ".*std=c\\+\\+.*")
    MESSAGE(FATAL_ERROR "ROOT was built with an unsupported C++ version, C++17 is required: ${ROOT_CXX_FLAGS}")
ELSE()
    MESSAGE(FATAL_ERROR "Could not deduce ROOT's C++ version from build flags: ${ROOT_CXX_FLAGS}")
ENDIF()

# Check ROOT version
IF(NOT ${ROOT_VERSION} VERSION_GREATER "6.0")
    MESSAGE(FATAL_ERROR "ROOT versions below 6.0 are not supported")
ENDIF()

# Prepare ROOT Targets if necessary:
ALLPIX_SETUP_ROOT_TARGETS()

+12 −6
Original line number Diff line number Diff line
@@ -44,13 +44,13 @@ IF(CLANG_FORMAT)
    STRING(REGEX REPLACE ".* ([0-9]+)\\.[0-9]+\\.[0-9]+.*" "\\1" CLANG_MAJOR_VERSION ${CLANG_VERSION})

    # Let's treat macOS differently because they don't have up-to-date versions
    IF(${CLANG_MAJOR_VERSION} EQUAL ${CLANG_FORMAT_VERSION} OR DEFINED APPLE)
    IF(${CLANG_MAJOR_VERSION} GREATER_EQUAL ${CLANG_FORMAT_VERSION} OR DEFINED APPLE)
        # On macOS we might have the right version - or not..
        IF(NOT ${CLANG_MAJOR_VERSION} EQUAL ${CLANG_FORMAT_VERSION})
        IF(NOT ${CLANG_MAJOR_VERSION} GREATER_EQUAL ${CLANG_FORMAT_VERSION})
            MESSAGE(
                WARNING "Found ${CLANG_FORMAT} version ${CLANG_MAJOR_VERSION}, this might lead to incompatible formatting")
        ELSE()
            MESSAGE(STATUS "Found ${CLANG_FORMAT} version ${CLANG_FORMAT_VERSION}, adding formatting targets")
            MESSAGE(STATUS "Found ${CLANG_FORMAT} version ${CLANG_MAJOR_VERSION}, adding formatting targets")
        ENDIF()

        ADD_CUSTOM_TARGET(
@@ -85,7 +85,13 @@ ENDIF()
FIND_PROGRAM(CLANG_TIDY NAMES "clang-tidy-${CLANG_TIDY_VERSION}" "clang-tidy")
# Enable clang tidy only if using a clang compiler
IF(CLANG_TIDY AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
    MESSAGE(STATUS "Found ${CLANG_TIDY}, adding linting targets")

    EXEC_PROGRAM(
        ${CLANG_TIDY} ${CMAKE_CURRENT_SOURCE_DIR}
        ARGS --version
        OUTPUT_VARIABLE CTIDY_VERSION)
    STRING(REGEX REPLACE ".* ([0-9]+)\\.[0-9]+\\.[0-9]+.*" "\\1" CLANG_TIDY_MAJOR_VERSION ${CTIDY_VERSION})
    MESSAGE(STATUS "Found ${CLANG_TIDY} version ${CLANG_TIDY_MAJOR_VERSION}")

    # If debug build enabled do automatic clang tidy
    IF(CMAKE_BUILD_TYPE MATCHES Debug)
@@ -111,7 +117,7 @@ IF(CLANG_TIDY AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
    GET_FILENAME_COMPONENT(CLANG_DIR ${CLANG_TIDY} DIRECTORY)
    FIND_PROGRAM(
        RUN_CLANG_TIDY
        NAMES "run-clang-tidy.py" "run-clang-tidy-${CLANG_TIDY_VERSION}.py"
        NAMES "run-clang-tidy" "run-clang-tidy.py" "run-clang-tidy-${CLANG_TIDY_MAJOR_VERSION}.py"
        HINTS /usr/share/clang/ ${CLANG_DIR}/../share/clang/ /usr/bin/)
    IF(RUN_CLANG_TIDY)
        MESSAGE(STATUS "Found ${RUN_CLANG_TIDY}, adding full-code linting targets")
@@ -136,7 +142,7 @@ IF(CLANG_TIDY AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang")

    FIND_PROGRAM(
        CLANG_TIDY_DIFF
        NAMES "clang-tidy-diff.py" "clang-tidy-diff-${CLANG_TIDY_VERSION}.py"
        NAMES "clang-tidy-diff" "clang-tidy-diff.py" "clang-tidy-diff-${CLANG_TIDY_MAJOR_VERSION}.py"
        HINTS /usr/share/clang/ ${CLANG_DIR}/../share/clang/ /usr/bin/)
    IF(RUN_CLANG_TIDY)
        # Set target branch and remote to perform the diff against
Loading