Commit 6b1c1b84 authored by Håkan Wennlöf's avatar Håkan Wennlöf
Browse files

Merge branch 'b-1089' into 'v3.0-stable'

[v3.0-stable] Updated default LCG version to 104

See merge request allpix-squared/allpix-squared!1090
parents e28e9d9e 9f1467c3
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