diff --git a/containers/debian/base.Dockerfile b/containers/debian/base.Dockerfile index be70447ddc8067db19c067be3ab19439373b209f..dcc723ee4b872eae4c10cb2068d1ee6a20dac910 100644 --- a/containers/debian/base.Dockerfile +++ b/containers/debian/base.Dockerfile @@ -72,28 +72,39 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt/lists,sharing=locked <<EOF . /etc/os-release mkdir -p /etc/apt/source.list.d -if [ "${ID}" = "ubuntu" ] ; then - echo "deb http://ppa.launchpad.net/ubuntu-toolchain-r/ppa/ubuntu/${VERSION_CODENAME} main" > /etc/apt/source.list.d/ubuntu-toolchain.list - if [ "${VERSION_ID}" = "20.04" ] ; then GCC="-10" CLANG="-12" ; fi - if [ "${VERSION_ID}" = "22.04" ] ; then GCC="-12" CLANG="-14" ; fi - curl -s https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - - echo "deb http://apt.llvm.org/${VERSION_CODENAME} llvm-toolchain-${VERSION_CODENAME}${CLANG} main" > /etc/apt/source.list.d/llvm.list - apt-get -yqq update - apt-get -yqq install gcc${GCC} g++${GCC} gfortran${GCC} - apt-get -yqq install clang${CLANG} clang-tidy${CLANG} clang-format${CLANG} - apt-get -yqq install iwyu - update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc${GCC} 100 - update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++${GCC} 100 - update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran${GCC} 100 - update-alternatives --install /usr/bin/clang clang /usr/bin/clang${CLANG} 100 - update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++${CLANG} 100 -else - apt-get -yqq update - apt-get -yqq install gcc g++ gfortran - apt-get -yqq install clang clang-tidy clang-format - apt-get -yqq install iwyu -fi +# GCC version and repository +case ${ID} in + debian) + case ${VERSION_CODENAME} in + bookworm) GCC="-12" ;; + trixie) GCC="-13" ;; + *) echo "Unsupported VERSION_CODENAME=${VERSION_CODENAME}" ; exit 1 ;; + esac ;; + ubuntu) + echo "deb http://ppa.launchpad.net/ubuntu-toolchain-r/ppa/ubuntu/${VERSION_CODENAME} main" > /etc/apt/source.list.d/ubuntu-toolchain.list + case ${VERSION_CODENAME} in + focal) GCC="-10" ;; + jammy) GCC="-12" ;; + *) echo "Unsupported VERSION_CODENAME=${VERSION_CODENAME}" ; exit 1 ;; + esac ;; + *) echo "Unsupported ID=${ID}" ; exit 1 ;; +esac +# Clang version and repository +CLANG="-14" +curl -s https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - +echo "deb http://apt.llvm.org/${VERSION_CODENAME} llvm-toolchain-${VERSION_CODENAME}${CLANG} main" > /etc/apt/source.list.d/llvm.list +# Install packages +apt-get -yqq update +apt-get -yqq install gcc${GCC} g++${GCC} gfortran${GCC} +apt-get -yqq install clang${CLANG} clang-tidy${CLANG} clang-format${CLANG} libclang${CLANG}-dev apt-get -yqq autoremove +# Ensure alternatives without version tags +update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc${GCC} 100 +update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++${GCC} 100 +update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran${GCC} 100 +update-alternatives --install /usr/bin/clang clang /usr/bin/clang${CLANG} 100 +update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++${CLANG} 100 +# Check versions gcc --version clang --version EOF diff --git a/spack-environment/dev/spack.yaml b/spack-environment/dev/spack.yaml index 59148553fe1a2885cee0baeb55d9a34817e2922e..52ae95d7abeb9ea7fb60a223ad1ec2e60321b8e8 100644 --- a/spack-environment/dev/spack.yaml +++ b/spack-environment/dev/spack.yaml @@ -35,6 +35,7 @@ spack: - heppdt - imagemagick - irt + - iwyu - jana2 - lcov - lhapdf diff --git a/spack-environment/packages.yaml b/spack-environment/packages.yaml index 8fdce359768f41675193b93acf455fa32c55f100..b4df0b066bcc66b166440c4d1147dc2d2c30dc30 100644 --- a/spack-environment/packages.yaml +++ b/spack-environment/packages.yaml @@ -142,6 +142,9 @@ packages: irt: require: - '@1.0.7' + iwyu: + require: + - '@0.18' jana2: require: - '@2.1.1'