util-docker: Improve Docker gcc and clang builder
1. Uses the all-dependencies image as the base image. 2. Has all compilers use Ubuntu 24.04. Notes: This change implitly changes our supported compilers to GCC v10 to v13 and Clang v14 to v18. This will be fully incorporated into the project later. Change-Id: Id8e2141ea64a34c7e3532605f6ecb7d9ccb76951
This commit is contained in:
14
util/dockerfiles/clang-compiler/Dockerfile
Normal file
14
util/dockerfiles/clang-compiler/Dockerfile
Normal file
@@ -0,0 +1,14 @@
|
||||
FROM --platform=${BUILDPLATFORM} ghcr.io/gem5/ubuntu-24.04_all-dependencies:latest
|
||||
|
||||
ARG version=16 # Version of Clang to install in this image. Default is 16.
|
||||
|
||||
RUN apt -y update && \
|
||||
apt -y install clang-${version} && \
|
||||
update-alternatives --install \
|
||||
/usr/bin/clang++ clang++ /usr/bin/clang++-${version} 100 && \
|
||||
update-alternatives --install \
|
||||
/usr/bin/clang clang /usr/bin/clang-${version} 100 && \
|
||||
update-alternatives --install \
|
||||
/usr/bin/c++ c++ /usr/bin/clang++-${version} 100 && \
|
||||
update-alternatives --install \
|
||||
/usr/bin/cc cc /usr/bin/clang-${version} 100
|
||||
@@ -35,6 +35,13 @@ variable "TAG" {
|
||||
default = "bootcamp-2024"
|
||||
}
|
||||
|
||||
# Common attributes across all targets. Note: these can be overwritten.
|
||||
target "common" {
|
||||
# Here we are enabling multi-platform builds. We are compiling to both ARM
|
||||
# amd X86.
|
||||
platforms = ["linux/amd64", "linux/arm64", "linux/riscv64"]
|
||||
}
|
||||
|
||||
# A group of targets to be built. Note: groups can contain other groups.
|
||||
# Any target or group can be build individually. I.e.:
|
||||
# `docker buildx bake --push ubuntu-20-04_all-dependencies` or
|
||||
@@ -42,8 +49,8 @@ variable "TAG" {
|
||||
group "default" {
|
||||
targets=[
|
||||
"clang-compilers",
|
||||
"ubuntu-releases",
|
||||
"gcc-compilers",
|
||||
"ubuntu-releases",
|
||||
"gcn-gpu",
|
||||
"gpu-fs",
|
||||
"sst",
|
||||
@@ -51,6 +58,115 @@ group "default" {
|
||||
]
|
||||
}
|
||||
|
||||
group "clang-compilers" {
|
||||
targets = [
|
||||
"clang-version-14",
|
||||
"clang-version-15",
|
||||
"clang-version-16",
|
||||
"clang-version-17",
|
||||
"clang-version-18"
|
||||
]
|
||||
}
|
||||
|
||||
target "clang-version-14" {
|
||||
inherits = ["common"]
|
||||
dockerfile = "Dockerfile"
|
||||
args = {
|
||||
version = "14"
|
||||
}
|
||||
context = "clang-compiler"
|
||||
tags = ["${IMAGE_URI}/clang-version-14:${TAG}"]
|
||||
}
|
||||
|
||||
target "clang-version-15" {
|
||||
inherits = ["common"]
|
||||
dockerfile = "Dockerfile"
|
||||
args = {
|
||||
version = "15"
|
||||
}
|
||||
context = "clang-compiler"
|
||||
tags = ["${IMAGE_URI}/clang-version-15:${TAG}"]
|
||||
}
|
||||
|
||||
target "clang-version-16" {
|
||||
inherits = ["common"]
|
||||
dockerfile = "Dockerfile"
|
||||
args = {
|
||||
version = "16"
|
||||
}
|
||||
context = "clang-compiler"
|
||||
tags = ["${IMAGE_URI}/clang-version-16:${TAG}"]
|
||||
}
|
||||
|
||||
target "clang-version-17" {
|
||||
inherits = ["common"]
|
||||
dockerfile = "Dockerfile"
|
||||
args = {
|
||||
version = "17"
|
||||
}
|
||||
context = "clang-compiler"
|
||||
tags = ["${IMAGE_URI}/clang-version-17:${TAG}"]
|
||||
}
|
||||
|
||||
target "clang-version-18" {
|
||||
inherits = ["common"]
|
||||
dockerfile = "Dockerfile"
|
||||
args = {
|
||||
version = "18"
|
||||
}
|
||||
context = "clang-compiler"
|
||||
tags = ["${IMAGE_URI}/clang-version-18:${TAG}"]
|
||||
}
|
||||
|
||||
group "gcc-compilers" {
|
||||
targets = [
|
||||
"gcc-version-10",
|
||||
"gcc-version-11",
|
||||
"gcc-version-12",
|
||||
"gcc-version-13"
|
||||
]
|
||||
}
|
||||
|
||||
target "gcc-version-10" {
|
||||
inherits = ["common"]
|
||||
dockerfile = "Dockerfile"
|
||||
args = {
|
||||
version = "10"
|
||||
}
|
||||
context = "gcc-compiler"
|
||||
tags = ["${IMAGE_URI}/gcc-version-10:${TAG}"]
|
||||
}
|
||||
|
||||
target "gcc-version-11" {
|
||||
inherits = ["common"]
|
||||
dockerfile = "Dockerfile"
|
||||
args = {
|
||||
version = "11"
|
||||
}
|
||||
context = "gcc-compiler"
|
||||
tags = ["${IMAGE_URI}/gcc-version-11:${TAG}"]
|
||||
}
|
||||
|
||||
target "gcc-version-12" {
|
||||
inherits = ["common"]
|
||||
dockerfile = "Dockerfile"
|
||||
args = {
|
||||
version = "12"
|
||||
}
|
||||
context = "gcc-compiler"
|
||||
tags = ["${IMAGE_URI}/gcc-version-12:${TAG}"]
|
||||
}
|
||||
|
||||
target "gcc-version-13" {
|
||||
inherits = ["common"]
|
||||
dockerfile = "Dockerfile"
|
||||
args = {
|
||||
version = "13"
|
||||
}
|
||||
context = "gcc-compiler"
|
||||
tags = ["${IMAGE_URI}/gcc-version-13:${TAG}"]
|
||||
}
|
||||
|
||||
group "ubuntu-releases" {
|
||||
targets=[
|
||||
"ubuntu-24-04_all-dependencies",
|
||||
@@ -60,25 +176,6 @@ group "ubuntu-releases" {
|
||||
]
|
||||
}
|
||||
|
||||
group "clang-compilers" {
|
||||
targets = [
|
||||
"clang-compilers-base-20-04",
|
||||
"clang-compilers-base-22-04",
|
||||
"clang-compilers-16"
|
||||
]
|
||||
}
|
||||
|
||||
group "gcc-compilers" {
|
||||
targets = ["gcc-compilers-base-20-04", "gcc-compilers-base-22-04"]
|
||||
}
|
||||
|
||||
# Common attributes across all targets. Note: these can be overwritten.
|
||||
target "common" {
|
||||
# Here we are enabling multi-platform builds. We are compiling to both ARM
|
||||
# amd X86.
|
||||
platforms = ["linux/amd64", "linux/arm64", "linux/riscv64"]
|
||||
}
|
||||
|
||||
target "gcn-gpu" {
|
||||
inherits = ["common"]
|
||||
dockerfile = "Dockerfile"
|
||||
@@ -141,67 +238,4 @@ target "ubuntu-24-04_min-dependencies" {
|
||||
dockerfile = "Dockerfile"
|
||||
context = "ubuntu-24.04_min-dependencies"
|
||||
tags = ["${IMAGE_URI}/ubuntu-24.04_min-dependencies:${TAG}"]
|
||||
}
|
||||
|
||||
target "gcc-compilers-base-20-04" {
|
||||
name = "gcc-compilers-${replace(ver, ".", "-")}"
|
||||
inherits = ["common"]
|
||||
context = "ubuntu-20.04_gcc-version"
|
||||
dockerfile = "Dockerfile"
|
||||
matrix = {
|
||||
ver = ["10"]
|
||||
}
|
||||
args = {
|
||||
version = ver
|
||||
}
|
||||
tags = ["${IMAGE_URI}/gcc-version-${ver}:${TAG}"]
|
||||
}
|
||||
|
||||
target "gcc-compilers-base-22-04" {
|
||||
name = "gcc-compilers-${replace(ver, ".", "-")}"
|
||||
inherits = ["common"]
|
||||
context = "ubuntu-22.04_gcc-version"
|
||||
dockerfile = "Dockerfile"
|
||||
matrix = {
|
||||
ver = ["11", "12", "13'"]
|
||||
}
|
||||
args = {
|
||||
version = ver
|
||||
}
|
||||
tags = ["${IMAGE_URI}/gcc-version-${ver}:${TAG}"]
|
||||
}
|
||||
|
||||
target "clang-compilers-base-20-04" {
|
||||
name = "clang-compilers-${replace(ver, ".", "-")}"
|
||||
inherits = ["common"]
|
||||
context = "ubuntu-20.04_clang-version"
|
||||
dockerfile = "Dockerfile"
|
||||
matrix = {
|
||||
ver = ["10", "11", "12"]
|
||||
}
|
||||
args = {
|
||||
version = ver
|
||||
}
|
||||
tags = ["${IMAGE_URI}/clang-version-${ver}:${TAG}"]
|
||||
}
|
||||
|
||||
target "clang-compilers-base-22-04" {
|
||||
name = "clang-compilers-${replace(ver, ".", "-")}"
|
||||
inherits = ["common"]
|
||||
context = "ubuntu-22.04_clang-version"
|
||||
dockerfile = "Dockerfile"
|
||||
matrix = {
|
||||
ver = ["13", "14", "15"]
|
||||
}
|
||||
args = {
|
||||
version = ver
|
||||
}
|
||||
tags = ["${IMAGE_URI}/clang-version-${ver}:${TAG}"]
|
||||
}
|
||||
|
||||
target "clang-compilers-16" {
|
||||
inherits = ["common"]
|
||||
dockerfile = "Dockerfile"
|
||||
context = "ubuntu-22.04_clang_16"
|
||||
tags = ["${IMAGE_URI}/clang-version-16:${TAG}"]
|
||||
}
|
||||
}
|
||||
14
util/dockerfiles/gcc-compiler/Dockerfile
Normal file
14
util/dockerfiles/gcc-compiler/Dockerfile
Normal file
@@ -0,0 +1,14 @@
|
||||
FROM --platform=${BUILDPLATFORM} ghcr.io/gem5/ubuntu-24.04_all-dependencies:latest
|
||||
|
||||
ARG version=13 # Version of GCC to install in this image. Default is 13.
|
||||
|
||||
RUN apt -y update && \
|
||||
apt -y install gcc-${version} g++-${version} && \
|
||||
update-alternatives --install \
|
||||
/usr/bin/g++ g++ /usr/bin/g++-${version} 100 && \
|
||||
update-alternatives --install \
|
||||
/usr/bin/gcc gcc /usr/bin/gcc-${version} 100 && \
|
||||
update-alternatives --install \
|
||||
/usr/bin/c++ c++ /usr/bin/g++-${version} 100 && \
|
||||
update-alternatives --install \
|
||||
/usr/bin/cc cc /usr/bin/gcc-${version} 100
|
||||
@@ -1,57 +0,0 @@
|
||||
# Copyright (c) 2021 The Regents of the University of California
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
# met: redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer;
|
||||
# redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution;
|
||||
# neither the name of the copyright holders nor the names of its
|
||||
# contributors may be used to endorse or promote products derived from
|
||||
# this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
FROM --platform=${BUILDPLATFORM} ubuntu:20.04
|
||||
|
||||
# Valid version values:
|
||||
# 6.0
|
||||
# 7
|
||||
# 8
|
||||
# 9
|
||||
# 10
|
||||
# 11
|
||||
# 12
|
||||
ARG version
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
RUN apt -y update && apt -y upgrade && \
|
||||
apt -y install git m4 scons zlib1g zlib1g-dev libprotobuf-dev \
|
||||
protobuf-compiler libprotoc-dev libgoogle-perftools-dev python3-dev \
|
||||
python-is-python3 doxygen libboost-all-dev libhdf5-serial-dev \
|
||||
python3-pydot libpng-dev clang-${version} make \
|
||||
# This is needed as clang-8 does not have the libstdc++-10-dev package.
|
||||
# It is necessary for compilation.
|
||||
libstdc++-10-dev
|
||||
|
||||
RUN apt-get --purge -y remove gcc
|
||||
|
||||
RUN update-alternatives --install \
|
||||
/usr/bin/clang++ clang++ /usr/bin/clang++-${version} 100
|
||||
RUN update-alternatives --install \
|
||||
/usr/bin/clang clang /usr/bin/clang-${version} 100
|
||||
RUN update-alternatives --install \
|
||||
/usr/bin/c++ c++ /usr/bin/clang++-${version} 100
|
||||
RUN update-alternatives --install \
|
||||
/usr/bin/cc cc /usr/bin/clang-${version} 100
|
||||
@@ -1,49 +0,0 @@
|
||||
# Copyright (c) 2020 The Regents of the University of California
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
# met: redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer;
|
||||
# redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution;
|
||||
# neither the name of the copyright holders nor the names of its
|
||||
# contributors may be used to endorse or promote products derived from
|
||||
# this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
FROM --platform=${BUILDPLATFORM} ubuntu:20.04
|
||||
|
||||
# Valid version values:
|
||||
# 7
|
||||
# 8
|
||||
# 9 # Not supported. See: https://github.com/gem5/gem5/issues/555.
|
||||
# 10
|
||||
ARG version
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
RUN apt -y update && apt -y upgrade && \
|
||||
apt -y install git m4 scons zlib1g zlib1g-dev libprotobuf-dev \
|
||||
protobuf-compiler libprotoc-dev libgoogle-perftools-dev python3-dev \
|
||||
python-is-python3 doxygen libboost-all-dev libhdf5-serial-dev \
|
||||
python3-pydot libpng-dev gcc-${version} g++-${version} make
|
||||
|
||||
RUN update-alternatives --install \
|
||||
/usr/bin/g++ g++ /usr/bin/g++-${version} 100
|
||||
RUN update-alternatives --install \
|
||||
/usr/bin/gcc gcc /usr/bin/gcc-${version} 100
|
||||
RUN update-alternatives --install \
|
||||
/usr/bin/c++ c++ /usr/bin/g++-${version} 100
|
||||
RUN update-alternatives --install \
|
||||
/usr/bin/cc cc /usr/bin/gcc-${version} 100
|
||||
@@ -1,49 +0,0 @@
|
||||
# Copyright (c) 2023 The Regents of the University of California
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
# met: redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer;
|
||||
# redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution;
|
||||
# neither the name of the copyright holders nor the names of its
|
||||
# contributors may be used to endorse or promote products derived from
|
||||
# this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
FROM --platform=${BUILDPLATFORM} ubuntu:22.04
|
||||
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
RUN apt -y update && apt -y upgrade && \
|
||||
apt -y install git m4 scons zlib1g zlib1g-dev libprotobuf-dev \
|
||||
protobuf-compiler libprotoc-dev libgoogle-perftools-dev python3-dev \
|
||||
python-is-python3 doxygen libboost-all-dev libhdf5-serial-dev \
|
||||
python3-pydot libpng-dev make lsb-release wget \
|
||||
software-properties-common gnupg
|
||||
|
||||
COPY llvm.sh /llvm.sh
|
||||
RUN ./llvm.sh 16
|
||||
|
||||
RUN apt-get --purge -y remove gcc
|
||||
|
||||
RUN update-alternatives --install \
|
||||
/usr/bin/clang++ clang++ /usr/bin/clang++-16 100
|
||||
RUN update-alternatives --install \
|
||||
/usr/bin/clang clang /usr/bin/clang-16 100
|
||||
RUN update-alternatives --install \
|
||||
/usr/bin/c++ c++ /usr/bin/clang++-16 100
|
||||
RUN update-alternatives --install \
|
||||
/usr/bin/cc cc /usr/bin/clang-16 100
|
||||
@@ -1,176 +0,0 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
# See https://llvm.org/LICENSE.txt for license information.
|
||||
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
################################################################################
|
||||
#
|
||||
# This script will install the llvm toolchain on the different
|
||||
# Debian and Ubuntu versions
|
||||
|
||||
set -eux
|
||||
|
||||
usage() {
|
||||
set +x
|
||||
echo "Usage: $0 [llvm_major_version] [all] [OPTIONS]" 1>&2
|
||||
echo -e "all\t\t\tInstall all packages." 1>&2
|
||||
echo -e "-n=code_name\t\tSpecifies the distro codename, for example bionic" 1>&2
|
||||
echo -e "-h\t\t\tPrints this help." 1>&2
|
||||
echo -e "-m=repo_base_url\tSpecifies the base URL from which to download." 1>&2
|
||||
exit 1;
|
||||
}
|
||||
|
||||
CURRENT_LLVM_STABLE=17
|
||||
BASE_URL="http://apt.llvm.org"
|
||||
|
||||
# Check for required tools
|
||||
needed_binaries=(lsb_release wget add-apt-repository gpg)
|
||||
missing_binaries=()
|
||||
for binary in "${needed_binaries[@]}"; do
|
||||
if ! which $binary &>/dev/null ; then
|
||||
missing_binaries+=($binary)
|
||||
fi
|
||||
done
|
||||
if [[ ${#missing_binaries[@]} -gt 0 ]] ; then
|
||||
echo "You are missing some tools this script requires: ${missing_binaries[@]}"
|
||||
echo "(hint: apt install lsb-release wget software-properties-common gnupg)"
|
||||
exit 4
|
||||
fi
|
||||
|
||||
# Set default values for commandline arguments
|
||||
# We default to the current stable branch of LLVM
|
||||
LLVM_VERSION=$CURRENT_LLVM_STABLE
|
||||
ALL=0
|
||||
DISTRO=$(lsb_release -is)
|
||||
VERSION=$(lsb_release -sr)
|
||||
UBUNTU_CODENAME=""
|
||||
CODENAME_FROM_ARGUMENTS=""
|
||||
# Obtain VERSION_CODENAME and UBUNTU_CODENAME (for Ubuntu and its derivatives)
|
||||
source /etc/os-release
|
||||
DISTRO=${DISTRO,,}
|
||||
case ${DISTRO} in
|
||||
debian)
|
||||
# Debian Trixie has a workaround because of
|
||||
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1038383
|
||||
if [[ "${VERSION}" == "unstable" ]] || [[ "${VERSION}" == "testing" ]] || [[ "${VERSION_CODENAME}" == "trixie" ]]; then
|
||||
CODENAME=unstable
|
||||
LINKNAME=
|
||||
else
|
||||
# "stable" Debian release
|
||||
CODENAME=${VERSION_CODENAME}
|
||||
LINKNAME=-${CODENAME}
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
# ubuntu and its derivatives
|
||||
if [[ -n "${UBUNTU_CODENAME}" ]]; then
|
||||
CODENAME=${UBUNTU_CODENAME}
|
||||
if [[ -n "${CODENAME}" ]]; then
|
||||
LINKNAME=-${CODENAME}
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
# read optional command line arguments
|
||||
if [ "$#" -ge 1 ] && [ "${1::1}" != "-" ]; then
|
||||
if [ "$1" != "all" ]; then
|
||||
LLVM_VERSION=$1
|
||||
else
|
||||
# special case for ./llvm.sh all
|
||||
ALL=1
|
||||
fi
|
||||
OPTIND=2
|
||||
if [ "$#" -ge 2 ]; then
|
||||
if [ "$2" == "all" ]; then
|
||||
# Install all packages
|
||||
ALL=1
|
||||
OPTIND=3
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
while getopts ":hm:n:" arg; do
|
||||
case $arg in
|
||||
h)
|
||||
usage
|
||||
;;
|
||||
m)
|
||||
BASE_URL=${OPTARG}
|
||||
;;
|
||||
n)
|
||||
CODENAME=${OPTARG}
|
||||
if [[ "${CODENAME}" == "unstable" ]]; then
|
||||
# link name does not apply to unstable repository
|
||||
LINKNAME=
|
||||
else
|
||||
LINKNAME=-${CODENAME}
|
||||
fi
|
||||
CODENAME_FROM_ARGUMENTS="true"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ $EUID -ne 0 ]]; then
|
||||
echo "This script must be run as root!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
declare -A LLVM_VERSION_PATTERNS
|
||||
LLVM_VERSION_PATTERNS[9]="-9"
|
||||
LLVM_VERSION_PATTERNS[10]="-10"
|
||||
LLVM_VERSION_PATTERNS[11]="-11"
|
||||
LLVM_VERSION_PATTERNS[12]="-12"
|
||||
LLVM_VERSION_PATTERNS[13]="-13"
|
||||
LLVM_VERSION_PATTERNS[14]="-14"
|
||||
LLVM_VERSION_PATTERNS[15]="-15"
|
||||
LLVM_VERSION_PATTERNS[16]="-16"
|
||||
LLVM_VERSION_PATTERNS[17]="-17"
|
||||
LLVM_VERSION_PATTERNS[18]=""
|
||||
|
||||
if [ ! ${LLVM_VERSION_PATTERNS[$LLVM_VERSION]+_} ]; then
|
||||
echo "This script does not support LLVM version $LLVM_VERSION"
|
||||
exit 3
|
||||
fi
|
||||
|
||||
LLVM_VERSION_STRING=${LLVM_VERSION_PATTERNS[$LLVM_VERSION]}
|
||||
|
||||
# join the repository name
|
||||
if [[ -n "${CODENAME}" ]]; then
|
||||
REPO_NAME="deb ${BASE_URL}/${CODENAME}/ llvm-toolchain${LINKNAME}${LLVM_VERSION_STRING} main"
|
||||
|
||||
# check if the repository exists for the distro and version
|
||||
if ! wget -q --method=HEAD ${BASE_URL}/${CODENAME} &> /dev/null; then
|
||||
if [[ -n "${CODENAME_FROM_ARGUMENTS}" ]]; then
|
||||
echo "Specified codename '${CODENAME}' is not supported by this script."
|
||||
else
|
||||
echo "Distribution '${DISTRO}' in version '${VERSION}' is not supported by this script."
|
||||
fi
|
||||
exit 2
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
# install everything
|
||||
|
||||
if [[ ! -f /etc/apt/trusted.gpg.d/apt.llvm.org.asc ]]; then
|
||||
# download GPG key once
|
||||
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc
|
||||
fi
|
||||
|
||||
if [[ -z "`apt-key list 2> /dev/null | grep -i llvm`" ]]; then
|
||||
# Delete the key in the old format
|
||||
apt-key del AF4F7421
|
||||
fi
|
||||
add-apt-repository "${REPO_NAME}"
|
||||
apt-get update
|
||||
PKG="clang-$LLVM_VERSION lldb-$LLVM_VERSION lld-$LLVM_VERSION clangd-$LLVM_VERSION"
|
||||
if [[ $ALL -eq 1 ]]; then
|
||||
# same as in test-install.sh
|
||||
# No worries if we have dups
|
||||
PKG="$PKG clang-tidy-$LLVM_VERSION clang-format-$LLVM_VERSION clang-tools-$LLVM_VERSION llvm-$LLVM_VERSION-dev lld-$LLVM_VERSION lldb-$LLVM_VERSION llvm-$LLVM_VERSION-tools libomp-$LLVM_VERSION-dev libc++-$LLVM_VERSION-dev libc++abi-$LLVM_VERSION-dev libclang-common-$LLVM_VERSION-dev libclang-$LLVM_VERSION-dev libclang-cpp$LLVM_VERSION-dev libunwind-$LLVM_VERSION-dev"
|
||||
if test $LLVM_VERSION -gt 14; then
|
||||
PKG="$PKG libclang-rt-$LLVM_VERSION-dev libpolly-$LLVM_VERSION-dev"
|
||||
fi
|
||||
fi
|
||||
apt-get install -y $PKG
|
||||
@@ -1,49 +0,0 @@
|
||||
# Copyright (c) 2022 The Regents of the University of California
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
# met: redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer;
|
||||
# redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution;
|
||||
# neither the name of the copyright holders nor the names of its
|
||||
# contributors may be used to endorse or promote products derived from
|
||||
# this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
FROM --platform=${BUILDPLATFORM} ubuntu:22.04
|
||||
|
||||
# Valid version values:
|
||||
# 13
|
||||
# 15
|
||||
ARG version
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
RUN apt -y update && apt -y upgrade && \
|
||||
apt -y install git m4 scons zlib1g zlib1g-dev libprotobuf-dev \
|
||||
protobuf-compiler libprotoc-dev libgoogle-perftools-dev python3-dev \
|
||||
python-is-python3 doxygen libboost-all-dev libhdf5-serial-dev \
|
||||
python3-pydot libpng-dev clang-${version} make
|
||||
|
||||
RUN apt-get --purge -y remove gcc
|
||||
|
||||
RUN update-alternatives --install \
|
||||
/usr/bin/clang++ clang++ /usr/bin/clang++-${version} 100
|
||||
RUN update-alternatives --install \
|
||||
/usr/bin/clang clang /usr/bin/clang-${version} 100
|
||||
RUN update-alternatives --install \
|
||||
/usr/bin/c++ c++ /usr/bin/clang++-${version} 100
|
||||
RUN update-alternatives --install \
|
||||
/usr/bin/cc cc /usr/bin/clang-${version} 100
|
||||
@@ -1,48 +0,0 @@
|
||||
# Copyright (c) 2022 The Regents of the University of California
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
# met: redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer;
|
||||
# redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution;
|
||||
# neither the name of the copyright holders nor the names of its
|
||||
# contributors may be used to endorse or promote products derived from
|
||||
# this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
FROM --platform=${BUILDPLATFORM} ubuntu:22.04
|
||||
|
||||
# Valid version values:
|
||||
# 11
|
||||
# 12
|
||||
|
||||
ARG version
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
RUN apt -y update && apt -y upgrade && \
|
||||
apt -y install git m4 scons zlib1g zlib1g-dev libprotobuf-dev \
|
||||
protobuf-compiler libprotoc-dev libgoogle-perftools-dev python3-dev \
|
||||
doxygen libboost-all-dev libhdf5-serial-dev python3-pydot libpng-dev \
|
||||
gcc-${version} g++-${version} make
|
||||
|
||||
RUN update-alternatives --install \
|
||||
/usr/bin/g++ g++ /usr/bin/g++-${version} 100
|
||||
RUN update-alternatives --install \
|
||||
/usr/bin/gcc gcc /usr/bin/gcc-${version} 100
|
||||
RUN update-alternatives --install \
|
||||
/usr/bin/c++ c++ /usr/bin/g++-${version} 100
|
||||
RUN update-alternatives --install \
|
||||
/usr/bin/cc cc /usr/bin/gcc-${version} 100
|
||||
@@ -1,53 +0,0 @@
|
||||
# Copyright (c) 2024 The Regents of the University of California
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
# met: redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer;
|
||||
# redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution;
|
||||
# neither the name of the copyright holders nor the names of its
|
||||
# contributors may be used to endorse or promote products derived from
|
||||
# this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
FROM --platform=${BUILDPLATFORM} ubuntu:22.04
|
||||
|
||||
# Valid version values:
|
||||
# 13
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
RUN apt -y update && \
|
||||
# software-properties-common is necessary to install
|
||||
# to add PPA to the system
|
||||
apt -y install software-properties-common && \
|
||||
# Installing PPA is necessary to install gcc-13
|
||||
# because it is not available in the default repositories
|
||||
# for Ubuntu 22.04
|
||||
add-apt-repository ppa:ubuntu-toolchain-r/test -y && \
|
||||
apt -y update && \
|
||||
apt -y install git m4 scons zlib1g zlib1g-dev libprotobuf-dev \
|
||||
protobuf-compiler libprotoc-dev libgoogle-perftools-dev python3-dev \
|
||||
doxygen libboost-all-dev libhdf5-serial-dev python3-pydot libpng-dev \
|
||||
gcc-13 g++-13 make
|
||||
|
||||
RUN update-alternatives --install \
|
||||
/usr/bin/g++ g++ /usr/bin/g++- 100
|
||||
RUN update-alternatives --install \
|
||||
/usr/bin/gcc gcc /usr/bin/gcc-13 100
|
||||
RUN update-alternatives --install \
|
||||
/usr/bin/c++ c++ /usr/bin/g++-13 100
|
||||
RUN update-alternatives --install \
|
||||
/usr/bin/cc cc /usr/bin/gcc-13 100
|
||||
Reference in New Issue
Block a user