diff --git a/docker/Dockerfile.full b/docker/Dockerfile.full index b4516a7cede2dee512a61c32d95be91c99e94c8a..64dee3f641e7ddbea0e892878cdb97bc3b93a9b7 100644 --- a/docker/Dockerfile.full +++ b/docker/Dockerfile.full @@ -30,21 +30,25 @@ RUN cd /tools \ ENV TCH_PATH_AARCH32="/tools/${TCH_PATH_AARCH32}" ENV PATH="${TCH_PATH_AARCH32}:${PATH}" -# Install aarch64 llvm toolchain and dependencies. -RUN apt-get install --assume-yes --no-install-recommends --option=debug::pkgProblemResolver=yes \ - libncurses5 +# LLVM/Clang Installation. +# Set the LLVM version (keep in sync with Hafnium Project master requirements) +ENV LLVM_VERSION=20 -ARG TCH_LLVM_PKG_NAME -ARG TCH_LLVM_PATH -COPY assets/${TCH_LLVM_PKG_NAME} /tools/. -RUN cd /tools \ - && if [ "${TCH_LLVM_PKG_NAME}" != "none" ]; then \ - tar xf ${TCH_LLVM_PKG_NAME}; \ - fi \ - && rm ${TCH_LLVM_PKG_NAME} \ - && cd - -ENV TCH_LLVM_PATH="/tools/${TCH_LLVM_PATH}" -ENV PATH="${TCH_LLVM_PATH}:${PATH}" +RUN mkdir -p /etc/apt/keyrings && \ + wget https://apt.llvm.org/llvm-snapshot.gpg.key -O /etc/apt/keyrings/llvm-snapshot.key && \ + echo "deb [signed-by=/etc/apt/keyrings/llvm-snapshot.key] http://apt.llvm.org/bookworm/ llvm-toolchain-bookworm-${LLVM_VERSION} main" > /etc/apt/sources.list.d/llvm.list && \ + echo "deb-src [signed-by=/etc/apt/keyrings/llvm-snapshot.key] http://apt.llvm.org/bookworm/ llvm-toolchain-bookworm-${LLVM_VERSION} main" >> /etc/apt/sources.list.d/llvm.list && \ + apt-get update && \ + apt-get install -y \ + clang-${LLVM_VERSION} \ + clangd-${LLVM_VERSION} \ + clang-tidy-${LLVM_VERSION} \ + clang-format-${LLVM_VERSION} \ + llvm-${LLVM_VERSION} \ + lld-${LLVM_VERSION} \ + libc++-${LLVM_VERSION}-dev && \ + for f in /usr/lib/llvm-${LLVM_VERSION}/bin/*; do ln -s "$f" /usr/local/bin/$(basename $f); done && \ + rm -rf /var/lib/apt/lists/* # Install packages required to compile Linux kselftests. We install the target # versions for cross-compiling, and the native versions for good measure. diff --git a/docker/build.sh b/docker/build.sh index db9821cecefe3a0cea3e86312804f178b83d8e18..741a1f85fec9c08c827cd6d206a7e47f6c60e559 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -102,9 +102,6 @@ if [ "${ARCH}" = "x86_64" ]; then TCH_PKG_URL_AARCH64=https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel TCH_PKG_NAME_AARCH64=arm-gnu-toolchain-13.2.rel1-x86_64-aarch64-none-elf.tar.xz TCH_PATH_AARCH64=arm-gnu-toolchain-13.2.Rel1-x86_64-aarch64-none-elf/bin - TCH_LLVM_PKG_URL=https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.6 - TCH_LLVM_PKG_NAME=clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz - TCH_LLVM_PATH=clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04/bin TCH_PKG_URL_AARCH32=https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel TCH_PKG_NAME_AARCH32=arm-gnu-toolchain-13.2.rel1-x86_64-arm-none-eabi.tar.xz TCH_PATH_AARCH32=arm-gnu-toolchain-13.2.Rel1-x86_64-arm-none-eabi/bin @@ -116,9 +113,6 @@ elif [ "${ARCH}" = "aarch64" ] || [ "${ARCH}" = "arm64" ]; then TCH_PKG_URL_AARCH64=https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel TCH_PKG_NAME_AARCH64=arm-gnu-toolchain-13.2.rel1-aarch64-aarch64-none-elf.tar.xz TCH_PATH_AARCH64=arm-gnu-toolchain-13.2.Rel1-aarch64-aarch64-none-elf/bin - TCH_LLVM_PKG_URL=https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.6 - TCH_LLVM_PKG_NAME=clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz - TCH_LLVM_PATH=clang+llvm-15.0.6-aarch64-linux-gnu/bin TCH_PKG_URL_AARCH32=https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel TCH_PKG_NAME_AARCH32=arm-gnu-toolchain-13.2.rel1-aarch64-arm-none-eabi.tar.xz TCH_PATH_AARCH32=arm-gnu-toolchain-13.2.Rel1-aarch64-arm-none-eabi/bin @@ -150,7 +144,6 @@ cd ${ROOT} # Grab the pre-built packages. mkdir -p assets wget_or_cache assets/${TCH_PKG_NAME_AARCH64} ${TCH_PKG_URL_AARCH64}/${TCH_PKG_NAME_AARCH64} -wget_or_cache assets/${TCH_LLVM_PKG_NAME} ${TCH_LLVM_PKG_URL}/${TCH_LLVM_PKG_NAME} wget_or_cache assets/${TCH_PKG_NAME_AARCH32} ${TCH_PKG_URL_AARCH32}/${TCH_PKG_NAME_AARCH32} wget_or_cache assets/${FVP_PKG_NAME} ${FVP_PKG_URL}/${FVP_PKG_NAME} @@ -179,8 +172,6 @@ if [ "${DRIVER}" = "docker" ]; then --build-arg=BASE=${REGISTRY}/base-slim-nofvp:${VERSION}-${ARCH} \ --build-arg=TCH_PKG_NAME_AARCH32=${TCH_PKG_NAME_AARCH32} \ --build-arg=TCH_PATH_AARCH32=${TCH_PATH_AARCH32} \ - --build-arg=TCH_LLVM_PKG_NAME=${TCH_LLVM_PKG_NAME} \ - --build-arg=TCH_LLVM_PATH=${TCH_LLVM_PATH} \ --file=Dockerfile.full \ --tag=${REGISTRY}/base-full-nofvp:${VERSION}-${ARCH} \ . @@ -225,8 +216,6 @@ elif [ "${DRIVER}" = "kaniko" ]; then --build-arg=BASE=${REGISTRY}/base-slim-nofvp:${VERSION}-${ARCH} \ --build-arg=TCH_PKG_NAME_AARCH32=${TCH_PKG_NAME_AARCH32} \ --build-arg=TCH_PATH_AARCH32=${TCH_PATH_AARCH32} \ - --build-arg=TCH_LLVM_PKG_NAME=${TCH_LLVM_PKG_NAME} \ - --build-arg=TCH_LLVM_PATH=${TCH_LLVM_PATH} \ --dockerfile=Dockerfile.full \ --destination=${REGISTRY}/base-full-nofvp:${VERSION}-${ARCH} \ --context=.