From ecafe28e4a9b6d9d3c280777e579c5e87fb1f560 Mon Sep 17 00:00:00 2001 From: Sven Boemer Date: Mon, 25 Nov 2024 09:58:41 -0800 Subject: [PATCH] Add Azure Linux images for .NET 10 (#1263) Contributes to https://github.com/dotnet/runtime/issues/109939. These images have LLVM 19.1.0, but will be updated to LLVM 20 per the plan, once that is released. --- .../3.0/net10.0/android/amd64/Dockerfile | 59 +++ .../net10.0/android/docker/amd64/Dockerfile | 6 + .../3.0/net10.0/cross/amd64-alpine/Dockerfile | 36 ++ .../net10.0/cross/amd64-sanitizer/Dockerfile | 50 +++ .../3.0/net10.0/cross/amd64/Dockerfile | 46 ++ .../net10.0/cross/android/amd64/Dockerfile | 6 + .../cross/android/openssl/amd64/Dockerfile | 10 + .../3.0/net10.0/cross/arm-alpine/Dockerfile | 36 ++ .../3.0/net10.0/cross/arm/Dockerfile | 48 +++ .../3.0/net10.0/cross/arm64-alpine/Dockerfile | 36 ++ .../3.0/net10.0/cross/arm64/Dockerfile | 48 +++ .../3.0/net10.0/cross/armv6/Dockerfile | 18 + .../net10.0/cross/freebsd/13/amd64/Dockerfile | 19 + .../3.0/net10.0/cross/ppc64le/Dockerfile | 11 + .../net10.0/cross/riscv64-alpine/Dockerfile | 36 ++ .../3.0/net10.0/cross/riscv64/Dockerfile | 54 +++ .../3.0/net10.0/cross/s390x/Dockerfile | 11 + .../3.0/net10.0/cross/x86/Dockerfile | 13 + .../crossdeps-builder/amd64/Dockerfile | 84 ++++ .../amd64/dimitri_john_ledkov.asc | 400 ++++++++++++++++++ .../net10.0/crossdeps-llvm/amd64/Dockerfile | 6 + .../3.0/net10.0/crossdeps/amd64/Dockerfile | 49 +++ .../3.0/net10.0/fpm/amd64/Dockerfile | 18 + src/azurelinux/3.0/net10.0/opt/Dockerfile | 14 + .../3.0/net10.0/webassembly/amd64/Dockerfile | 50 +++ src/azurelinux/manifest.json | 302 +++++++++++++ 26 files changed, 1466 insertions(+) create mode 100644 src/azurelinux/3.0/net10.0/android/amd64/Dockerfile create mode 100644 src/azurelinux/3.0/net10.0/android/docker/amd64/Dockerfile create mode 100644 src/azurelinux/3.0/net10.0/cross/amd64-alpine/Dockerfile create mode 100644 src/azurelinux/3.0/net10.0/cross/amd64-sanitizer/Dockerfile create mode 100644 src/azurelinux/3.0/net10.0/cross/amd64/Dockerfile create mode 100644 src/azurelinux/3.0/net10.0/cross/android/amd64/Dockerfile create mode 100644 src/azurelinux/3.0/net10.0/cross/android/openssl/amd64/Dockerfile create mode 100644 src/azurelinux/3.0/net10.0/cross/arm-alpine/Dockerfile create mode 100644 src/azurelinux/3.0/net10.0/cross/arm/Dockerfile create mode 100644 src/azurelinux/3.0/net10.0/cross/arm64-alpine/Dockerfile create mode 100644 src/azurelinux/3.0/net10.0/cross/arm64/Dockerfile create mode 100644 src/azurelinux/3.0/net10.0/cross/armv6/Dockerfile create mode 100644 src/azurelinux/3.0/net10.0/cross/freebsd/13/amd64/Dockerfile create mode 100644 src/azurelinux/3.0/net10.0/cross/ppc64le/Dockerfile create mode 100644 src/azurelinux/3.0/net10.0/cross/riscv64-alpine/Dockerfile create mode 100644 src/azurelinux/3.0/net10.0/cross/riscv64/Dockerfile create mode 100644 src/azurelinux/3.0/net10.0/cross/s390x/Dockerfile create mode 100644 src/azurelinux/3.0/net10.0/cross/x86/Dockerfile create mode 100644 src/azurelinux/3.0/net10.0/crossdeps-builder/amd64/Dockerfile create mode 100644 src/azurelinux/3.0/net10.0/crossdeps-builder/amd64/dimitri_john_ledkov.asc create mode 100644 src/azurelinux/3.0/net10.0/crossdeps-llvm/amd64/Dockerfile create mode 100644 src/azurelinux/3.0/net10.0/crossdeps/amd64/Dockerfile create mode 100644 src/azurelinux/3.0/net10.0/fpm/amd64/Dockerfile create mode 100644 src/azurelinux/3.0/net10.0/opt/Dockerfile create mode 100644 src/azurelinux/3.0/net10.0/webassembly/amd64/Dockerfile diff --git a/src/azurelinux/3.0/net10.0/android/amd64/Dockerfile b/src/azurelinux/3.0/net10.0/android/amd64/Dockerfile new file mode 100644 index 000000000..9098be112 --- /dev/null +++ b/src/azurelinux/3.0/net10.0/android/amd64/Dockerfile @@ -0,0 +1,59 @@ +ARG ANDROID_SDK_ROOT=/usr/local/android-sdk +ARG ANDROID_NDK_VERSION=23.2.8568313 +ARG ANDROID_NDK_ROOT=$ANDROID_SDK_ROOT/ndk/$ANDROID_NDK_VERSION +FROM mcr.microsoft.com/openjdk/jdk:17-mariner AS android-sdk-download +ARG ANDROID_SDK_ROOT +ARG ANDROID_NDK_VERSION +ARG ANDROID_NDK_ROOT + +# Dependencies for Android SDK install +RUN tdnf update -y \ + && tdnf install -y \ + # Android dependencies + wget \ + zip \ + unzip + +# Grab the necessary Android SDK packages / tools +RUN wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip \ + && echo "2d2d50857e4eb553af5a6dc3ad507a17adf43d115264b1afc116f95c92e5e258 commandlinetools-linux-11076708_latest.zip" | sha256sum -c \ + && mkdir -p /usr/local/cmdline-tools \ + && unzip commandlinetools-linux-11076708_latest.zip -d /usr/local/cmdline-tools \ + && rm -f commandlinetools-linux-11076708_latest.zip \ + && yes | /usr/local/cmdline-tools/cmdline-tools/bin/sdkmanager --sdk_root="${ANDROID_SDK_ROOT}" --licenses + +RUN yes | /usr/local/cmdline-tools/cmdline-tools/bin/sdkmanager --licenses +RUN /usr/local/cmdline-tools/cmdline-tools/bin/sdkmanager --sdk_root="${ANDROID_SDK_ROOT}" --install "build-tools;33.0.0" "platforms;android-33" "ndk;${ANDROID_NDK_VERSION}" + +# We can't upgrade the NDK version as the runtime repo requires tooling that only exists up to NDK 23 +# Remove all components of NDK 23 that are flagged by security scanners +RUN rm -r ${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/python3/lib/python3.9/site-packages/ \ + && rm -r ${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/clang-tidy + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-llvm-amd64 + +# Install Microsoft OpenJDK from the Microsoft OpenJDK 17 Mariner image. +ENV LANG=en_US.UTF-8 +ENV JAVA_HOME=/usr/lib/jvm/msopenjdk-17 +ENV PATH=$JAVA_HOME/bin:$PATH +COPY --from=mcr.microsoft.com/openjdk/jdk:17-mariner $JAVA_HOME $JAVA_HOME +ARG ANDROID_SDK_ROOT +ARG ANDROID_NDK_VERSION +ARG ANDROID_NDK_ROOT + + +# Dependencies for Android build +RUN tdnf update -y \ + && tdnf install -y \ + # Common dependencies + binutils \ + # Android dependencies + zip \ + unzip \ + # linux-bionic build dependencies + openssl-devel + +ENV ANDROID_SDK_ROOT=${ANDROID_SDK_ROOT} +ENV ANDROID_NDK_ROOT=${ANDROID_NDK_ROOT} + +COPY --from=android-sdk-download $ANDROID_SDK_ROOT $ANDROID_SDK_ROOT diff --git a/src/azurelinux/3.0/net10.0/android/docker/amd64/Dockerfile b/src/azurelinux/3.0/net10.0/android/docker/amd64/Dockerfile new file mode 100644 index 000000000..11416ef1d --- /dev/null +++ b/src/azurelinux/3.0/net10.0/android/docker/amd64/Dockerfile @@ -0,0 +1,6 @@ +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-android-amd64 + +RUN tdnf update -y \ + && tdnf install -y \ + moby-engine \ + moby-cli diff --git a/src/azurelinux/3.0/net10.0/cross/amd64-alpine/Dockerfile b/src/azurelinux/3.0/net10.0/cross/amd64-alpine/Dockerfile new file mode 100644 index 000000000..4e315cc89 --- /dev/null +++ b/src/azurelinux/3.0/net10.0/cross/amd64-alpine/Dockerfile @@ -0,0 +1,36 @@ +ARG ROOTFS_DIR=/crossrootfs/x64 + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-builder-amd64 AS builder +ARG ROOTFS_DIR + +RUN /scripts/eng/common/cross/build-rootfs.sh x64 alpine3.17 --skipunmount + +RUN TARGET_TRIPLE="x86_64-alpine-linux-musl" && \ + cmake -S llvm-project.src/runtimes -B runtimes \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_ASM_COMPILER=clang \ + -DCMAKE_C_COMPILER=clang \ + -DCMAKE_CXX_COMPILER=clang++ \ + -DCMAKE_ASM_COMPILER_TARGET="$TARGET_TRIPLE" \ + -DCMAKE_C_COMPILER_TARGET="$TARGET_TRIPLE" \ + -DCMAKE_CXX_COMPILER_TARGET="$TARGET_TRIPLE" \ + # We're going to link the static libraries we build here into PIC images, so build the static libraries as PIC. + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DCMAKE_SYSROOT="$ROOTFS_DIR" \ + # Specify linker to use for exes directly for CMake toolchain detection + -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" \ + # Don't search for tools in the sysroot as we're cross-compiling + -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM="NEVER" \ + -DLLVM_USE_LINKER=lld \ + -DLLVM_ENABLE_RUNTIMES="libcxx" \ + -DLIBCXX_ENABLE_SHARED=OFF \ + -DLIBCXX_HAS_MUSL_LIBC=ON \ + -DLIBCXX_CXX_ABI=libstdc++ \ + -DLIBCXX_CXX_ABI_INCLUDE_PATHS="$ROOTFS_DIR/usr/include/c++/12.2.1/;$ROOTFS_DIR/usr/include/c++/12.2.1/$TARGET_TRIPLE" && \ + cmake --build runtimes -j $(getconf _NPROCESSORS_ONLN) && \ + cmake --install runtimes --prefix "$ROOTFS_DIR/usr" + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-llvm-amd64 +ARG ROOTFS_DIR + +COPY --from=builder $ROOTFS_DIR $ROOTFS_DIR diff --git a/src/azurelinux/3.0/net10.0/cross/amd64-sanitizer/Dockerfile b/src/azurelinux/3.0/net10.0/cross/amd64-sanitizer/Dockerfile new file mode 100644 index 000000000..a3bd35f63 --- /dev/null +++ b/src/azurelinux/3.0/net10.0/cross/amd64-sanitizer/Dockerfile @@ -0,0 +1,50 @@ +ARG ROOTFS_DIR=/crossrootfs/x64 + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-builder-amd64 AS builder +ARG ROOTFS_DIR + +# Use Ubuntu Bionic as the base image for the rootfs +# to get a new enough libstdc++ for the sanitizer runtimes and instrumentation. +RUN /scripts/eng/common/cross/build-rootfs.sh x64 bionic --skipunmount + +RUN TARGET_TRIPLE="x86_64-linux-gnu" && \ + CLANG_MAJOR_VERSION=$(clang --version | grep -oP "(?<=version )\d+") && \ + cmake -S llvm-project.src/runtimes -B runtimes \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_ASM_COMPILER=clang \ + -DCMAKE_C_COMPILER=clang \ + -DCMAKE_CXX_COMPILER=clang++ \ + -DCMAKE_ASM_COMPILER_TARGET="$TARGET_TRIPLE" \ + -DCMAKE_C_COMPILER_TARGET="$TARGET_TRIPLE" \ + -DCMAKE_CXX_COMPILER_TARGET="$TARGET_TRIPLE" \ + # We're going to link the static libraries we build here into PIC images, so build the static libraries as PIC. + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DCMAKE_SYSROOT="$ROOTFS_DIR" \ + # Specify linker to use for exes directly for CMake toolchain detection + -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" \ + # Don't search for tools in the sysroot as we're cross-compiling + -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM="NEVER" \ + -DLLVM_USE_LINKER=lld \ + -DLLVM_ENABLE_RUNTIMES="compiler-rt;libcxx" \ + -DLIBCXX_ENABLE_SHARED=OFF \ + -DLIBCXX_CXX_ABI="libstdc++" \ + -DLIBCXX_CXX_ABI_INCLUDE_PATHS="$ROOTFS_DIR/usr/include/c++/7.5.0/;$ROOTFS_DIR/usr/include/$TARGET_TRIPLE" \ + -DCOMPILER_RT_CXX_LIBRARY="libcxx" \ + -DCOMPILER_RT_STATIC_CXX_LIBRARY=ON \ + -DSANITIZER_CXX_ABI_LIBNAME="libstdc++" \ + -DCOMPILER_RT_BUILD_MEMPROF=OFF \ + # The libfuzzer build in LLVM doesn't correctly forward the required CMake properties to the "fuzzed libc++" build + # so skip it here. + -DCOMPILER_RT_BUILD_LIBFUZZER=OFF \ + -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON \ + # Work around error building rtsan (this enables all sanitizers but rtsan) + -DCOMPILER_RT_SANITIZERS_TO_BUILD="asan;dfsan;msan;hwasan;tsan;safestack;cfi;scudo_standalone;ubsan_minimal;gwp_asan;nsan;asan_abi" \ + -DCOMPILER_RT_INSTALL_PATH="/usr/local/lib/clang/$CLANG_MAJOR_VERSION" && \ + cmake --build runtimes -j && \ + cmake --install runtimes --prefix "$ROOTFS_DIR/usr" + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-llvm-amd64 +ARG ROOTFS_DIR + +COPY --from=builder /usr/local/lib/clang /usr/local/lib/clang +COPY --from=builder $ROOTFS_DIR $ROOTFS_DIR diff --git a/src/azurelinux/3.0/net10.0/cross/amd64/Dockerfile b/src/azurelinux/3.0/net10.0/cross/amd64/Dockerfile new file mode 100644 index 000000000..ed19477b4 --- /dev/null +++ b/src/azurelinux/3.0/net10.0/cross/amd64/Dockerfile @@ -0,0 +1,46 @@ +ARG ROOTFS_DIR=/crossrootfs/x64 + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-builder-amd64 AS builder +ARG ROOTFS_DIR + +RUN /scripts/eng/common/cross/build-rootfs.sh x64 bionic --skipunmount + +RUN TARGET_TRIPLE="x86_64-linux-gnu" && \ + CLANG_MAJOR_VERSION=$(clang --version | grep -oP "(?<=version )\d+") && \ + cmake -S llvm-project.src/runtimes -B runtimes \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_ASM_COMPILER=clang \ + -DCMAKE_C_COMPILER=clang \ + -DCMAKE_CXX_COMPILER=clang++ \ + -DCMAKE_ASM_COMPILER_TARGET="$TARGET_TRIPLE" \ + -DCMAKE_C_COMPILER_TARGET="$TARGET_TRIPLE" \ + -DCMAKE_CXX_COMPILER_TARGET="$TARGET_TRIPLE" \ + # We're going to link the static libraries we build here into PIC images, so build the static libraries as PIC. + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DCMAKE_SYSROOT="$ROOTFS_DIR" \ + # Specify linker to use for exes directly for CMake toolchain detection + -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" \ + # Don't search for tools in the sysroot as we're cross-compiling + -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM="NEVER" \ + -DLLVM_USE_LINKER=lld \ + -DLLVM_ENABLE_RUNTIMES="libcxx;compiler-rt" \ + -DLIBCXX_ENABLE_SHARED=OFF \ + -DLIBCXX_CXX_ABI=libstdc++ \ + -DLIBCXX_CXX_ABI_INCLUDE_PATHS="$ROOTFS_DIR/usr/include/c++/7.5.0/;$ROOTFS_DIR/usr/include/$TARGET_TRIPLE" \ + -DCOMPILER_RT_CXX_LIBRARY="libcxx" \ + -DCOMPILER_RT_STATIC_CXX_LIBRARY=ON \ + -DCOMPILER_RT_BUILD_SANITIZERS=OFF \ + -DCOMPILER_RT_BUILD_MEMPROF=OFF \ + # The libfuzzer build in LLVM doesn't correctly forward the required CMake properties to the "fuzzed libc++" build + # so skip it here. + -DCOMPILER_RT_BUILD_LIBFUZZER=OFF \ + -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON \ + -DCOMPILER_RT_INSTALL_PATH="/usr/local/lib/clang/$CLANG_MAJOR_VERSION" && \ + cmake --build runtimes -j $(getconf _NPROCESSORS_ONLN) && \ + cmake --install runtimes --prefix "$ROOTFS_DIR/usr" + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-llvm-amd64 +ARG ROOTFS_DIR + +COPY --from=builder /usr/local/lib/clang /usr/local/lib/clang/ +COPY --from=builder $ROOTFS_DIR $ROOTFS_DIR diff --git a/src/azurelinux/3.0/net10.0/cross/android/amd64/Dockerfile b/src/azurelinux/3.0/net10.0/cross/android/amd64/Dockerfile new file mode 100644 index 000000000..b6e908ba7 --- /dev/null +++ b/src/azurelinux/3.0/net10.0/cross/android/amd64/Dockerfile @@ -0,0 +1,6 @@ +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-cross-amd64 AS crossrootx64 + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-android-amd64 + +# Copy crossrootfs from AMD64 build image, so we can build Android-targeting code for that arch +COPY --from=crossrootx64 /crossrootfs/x64 /crossrootfs/x64 diff --git a/src/azurelinux/3.0/net10.0/cross/android/openssl/amd64/Dockerfile b/src/azurelinux/3.0/net10.0/cross/android/openssl/amd64/Dockerfile new file mode 100644 index 000000000..2042ad441 --- /dev/null +++ b/src/azurelinux/3.0/net10.0/cross/android/openssl/amd64/Dockerfile @@ -0,0 +1,10 @@ +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-cross-android-amd64 + +# Copy the OpenSSL headers and libs from the x64 rootfs into the Anroid NDK so dotnet/runtime's +# OpenSSL headers hack can find them for the linux-bionic build. +RUN mkdir -p ${ANDROID_NDK_ROOT}/usr/local/include && \ + mkdir ${ANDROID_NDK_ROOT}/usr/local/lib && \ + cp -r /crossrootfs/x64/usr/include/openssl ${ANDROID_NDK_ROOT}/usr/local/include/openssl && \ + cp -r /crossrootfs/x64/usr/include/x86_64-linux-gnu/openssl ${ANDROID_NDK_ROOT}/usr/local/include && \ + cp -r $(readlink -f /crossrootfs/x64/usr/lib/x86_64-linux-gnu/libssl.so) ${ANDROID_NDK_ROOT}/usr/local/lib/libssl.so && \ + cp -r $(readlink -f /crossrootfs/x64/usr/lib/x86_64-linux-gnu/libcrypto.so) ${ANDROID_NDK_ROOT}/usr/local/lib/libcrypto.so diff --git a/src/azurelinux/3.0/net10.0/cross/arm-alpine/Dockerfile b/src/azurelinux/3.0/net10.0/cross/arm-alpine/Dockerfile new file mode 100644 index 000000000..fcd594007 --- /dev/null +++ b/src/azurelinux/3.0/net10.0/cross/arm-alpine/Dockerfile @@ -0,0 +1,36 @@ +ARG ROOTFS_DIR=/crossrootfs/arm + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-builder-amd64 AS builder +ARG ROOTFS_DIR + +RUN /scripts/eng/common/cross/build-rootfs.sh arm alpine3.17 --skipunmount + +RUN TARGET_TRIPLE="armv7-alpine-linux-musleabihf" && \ + cmake -S llvm-project.src/runtimes -B runtimes \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_ASM_COMPILER=clang \ + -DCMAKE_C_COMPILER=clang \ + -DCMAKE_CXX_COMPILER=clang++ \ + -DCMAKE_ASM_COMPILER_TARGET="$TARGET_TRIPLE" \ + -DCMAKE_C_COMPILER_TARGET="$TARGET_TRIPLE" \ + -DCMAKE_CXX_COMPILER_TARGET="$TARGET_TRIPLE" \ + # We're going to link the static libraries we build here into PIC images, so build the static libraries as PIC. + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DCMAKE_SYSROOT="$ROOTFS_DIR" \ + # Specify linker to use for exes directly for CMake toolchain detection + -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" \ + # Don't search for tools in the sysroot as we're cross-compiling + -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM="NEVER" \ + -DLLVM_USE_LINKER=lld \ + -DLLVM_ENABLE_RUNTIMES="libcxx" \ + -DLIBCXX_ENABLE_SHARED=OFF \ + -DLIBCXX_HAS_MUSL_LIBC=ON \ + -DLIBCXX_CXX_ABI=libstdc++ \ + -DLIBCXX_CXX_ABI_INCLUDE_PATHS="$ROOTFS_DIR/usr/include/c++/12.2.1/;$ROOTFS_DIR/usr/include/c++/12.2.1/$TARGET_TRIPLE" && \ + cmake --build runtimes -j $(getconf _NPROCESSORS_ONLN) && \ + cmake --install runtimes --prefix "$ROOTFS_DIR/usr" + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-llvm-amd64 +ARG ROOTFS_DIR + +COPY --from=builder $ROOTFS_DIR $ROOTFS_DIR diff --git a/src/azurelinux/3.0/net10.0/cross/arm/Dockerfile b/src/azurelinux/3.0/net10.0/cross/arm/Dockerfile new file mode 100644 index 000000000..74180364d --- /dev/null +++ b/src/azurelinux/3.0/net10.0/cross/arm/Dockerfile @@ -0,0 +1,48 @@ +ARG ROOTFS_DIR=/crossrootfs/arm + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-builder-amd64 AS builder +ARG ROOTFS_DIR + +# The arm rootfs targets Ubuntu 22.04, which is the first version with a +# glibc that supports 64-bit time_t. See https://github.com/dotnet/core/discussions/9285. +RUN /scripts/eng/common/cross/build-rootfs.sh arm jammy no-lldb --skipunmount + +RUN TARGET_TRIPLE="arm-linux-gnueabihf" && \ + CLANG_MAJOR_VERSION=$(clang --version | grep -oP "(?<=version )\d+") && \ + cmake -S llvm-project.src/runtimes -B runtimes \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_ASM_COMPILER=clang \ + -DCMAKE_C_COMPILER=clang \ + -DCMAKE_CXX_COMPILER=clang++ \ + -DCMAKE_ASM_COMPILER_TARGET="$TARGET_TRIPLE" \ + -DCMAKE_C_COMPILER_TARGET="$TARGET_TRIPLE" \ + -DCMAKE_CXX_COMPILER_TARGET="$TARGET_TRIPLE" \ + # We're going to link the static libraries we build here into PIC images, so build the static libraries as PIC. + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DCMAKE_SYSROOT="$ROOTFS_DIR" \ + # Specify linker to use for exes directly for CMake toolchain detection + -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" \ + # Don't search for tools in the sysroot as we're cross-compiling + -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM="NEVER" \ + -DLLVM_USE_LINKER=lld \ + -DLLVM_ENABLE_RUNTIMES="libcxx;compiler-rt" \ + -DLIBCXX_ENABLE_SHARED=OFF \ + -DLIBCXX_CXX_ABI=libstdc++ \ + -DLIBCXX_CXX_ABI_INCLUDE_PATHS="$ROOTFS_DIR/usr/include/c++/11/;$ROOTFS_DIR/usr/include/$TARGET_TRIPLE" \ + -DCOMPILER_RT_CXX_LIBRARY="libcxx" \ + -DCOMPILER_RT_STATIC_CXX_LIBRARY=ON \ + -DCOMPILER_RT_BUILD_SANITIZERS=OFF \ + -DCOMPILER_RT_BUILD_MEMPROF=OFF \ + # The libfuzzer build in LLVM doesn't correctly forward the required CMake properties to the "fuzzed libc++" build + # so skip it here. + -DCOMPILER_RT_BUILD_LIBFUZZER=OFF \ + -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON \ + -DCOMPILER_RT_INSTALL_PATH="/usr/local/lib/clang/$CLANG_MAJOR_VERSION" && \ + cmake --build runtimes -j $(getconf _NPROCESSORS_ONLN) && \ + cmake --install runtimes --prefix "$ROOTFS_DIR/usr" + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-llvm-amd64 +ARG ROOTFS_DIR + +COPY --from=builder /usr/local/lib/clang /usr/local/lib/clang/ +COPY --from=builder $ROOTFS_DIR $ROOTFS_DIR diff --git a/src/azurelinux/3.0/net10.0/cross/arm64-alpine/Dockerfile b/src/azurelinux/3.0/net10.0/cross/arm64-alpine/Dockerfile new file mode 100644 index 000000000..b1b22e086 --- /dev/null +++ b/src/azurelinux/3.0/net10.0/cross/arm64-alpine/Dockerfile @@ -0,0 +1,36 @@ +ARG ROOTFS_DIR=/crossrootfs/arm64 + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-builder-amd64 AS builder +ARG ROOTFS_DIR + +RUN /scripts/eng/common/cross/build-rootfs.sh arm64 alpine3.17 --skipunmount + +RUN TARGET_TRIPLE="aarch64-alpine-linux-musl" && \ + cmake -S llvm-project.src/runtimes -B runtimes \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_ASM_COMPILER=clang \ + -DCMAKE_C_COMPILER=clang \ + -DCMAKE_CXX_COMPILER=clang++ \ + -DCMAKE_ASM_COMPILER_TARGET="$TARGET_TRIPLE" \ + -DCMAKE_C_COMPILER_TARGET="$TARGET_TRIPLE" \ + -DCMAKE_CXX_COMPILER_TARGET="$TARGET_TRIPLE" \ + # We're going to link the static libraries we build here into PIC images, so build the static libraries as PIC. + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DCMAKE_SYSROOT="$ROOTFS_DIR" \ + # Specify linker to use for exes directly for CMake toolchain detection + -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" \ + # Don't search for tools in the sysroot as we're cross-compiling + -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM="NEVER" \ + -DLLVM_USE_LINKER=lld \ + -DLLVM_ENABLE_RUNTIMES="libcxx" \ + -DLIBCXX_ENABLE_SHARED=OFF \ + -DLIBCXX_HAS_MUSL_LIBC=ON \ + -DLIBCXX_CXX_ABI=libstdc++ \ + -DLIBCXX_CXX_ABI_INCLUDE_PATHS="$ROOTFS_DIR/usr/include/c++/12.2.1/;$ROOTFS_DIR/usr/include/c++/12.2.1/$TARGET_TRIPLE" && \ + cmake --build runtimes -j $(getconf _NPROCESSORS_ONLN) && \ + cmake --install runtimes --prefix "$ROOTFS_DIR/usr" + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-llvm-amd64 +ARG ROOTFS_DIR + +COPY --from=builder $ROOTFS_DIR $ROOTFS_DIR diff --git a/src/azurelinux/3.0/net10.0/cross/arm64/Dockerfile b/src/azurelinux/3.0/net10.0/cross/arm64/Dockerfile new file mode 100644 index 000000000..eab21de19 --- /dev/null +++ b/src/azurelinux/3.0/net10.0/cross/arm64/Dockerfile @@ -0,0 +1,48 @@ +ARG ROOTFS_DIR=/crossrootfs/arm64 + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-builder-amd64 AS builder +ARG ROOTFS_DIR + +RUN /scripts/eng/common/cross/build-rootfs.sh arm64 bionic --skipunmount + +RUN TARGET_TRIPLE="aarch64-linux-gnu" && \ + CLANG_MAJOR_VERSION=$(clang --version | grep -oP "(?<=version )\d+") && \ + cmake -S llvm-project.src/runtimes -B runtimes \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_ASM_COMPILER=clang \ + -DCMAKE_C_COMPILER=clang \ + -DCMAKE_CXX_COMPILER=clang++ \ + -DCMAKE_ASM_COMPILER_TARGET="$TARGET_TRIPLE" \ + -DCMAKE_C_COMPILER_TARGET="$TARGET_TRIPLE" \ + -DCMAKE_CXX_COMPILER_TARGET="$TARGET_TRIPLE" \ + # We're going to link the static libraries we build here into PIC images, so build the static libraries as PIC. + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DCMAKE_SYSROOT="$ROOTFS_DIR" \ + # Specify linker to use for exes directly for CMake toolchain detection + -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" \ + # Don't search for tools in the sysroot as we're cross-compiling + -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM="NEVER" \ + -DLLVM_USE_LINKER=lld \ + -DLLVM_ENABLE_RUNTIMES="libcxx;compiler-rt" \ + -DLIBCXX_ENABLE_SHARED=OFF \ + -DLIBCXXABI_ENABLE_SHARED=OFF \ + -DLIBCXXABI_USE_LLVM_UNWINDER=OFF \ + -DLIBCXX_CXX_ABI=libstdc++ \ + -DLIBCXX_CXX_ABI_INCLUDE_PATHS="$ROOTFS_DIR/usr/include/c++/7.5.0/;$ROOTFS_DIR/usr/include/$TARGET_TRIPLE" \ + -DCOMPILER_RT_CXX_LIBRARY="libcxx" \ + -DCOMPILER_RT_STATIC_CXX_LIBRARY=ON \ + -DCOMPILER_RT_BUILD_SANITIZERS=OFF \ + -DCOMPILER_RT_BUILD_MEMPROF=OFF \ + # The libfuzzer build in LLVM doesn't correctly forward the required CMake properties to the "fuzzed libc++" build + # so skip it here. + -DCOMPILER_RT_BUILD_LIBFUZZER=OFF \ + -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON \ + -DCOMPILER_RT_INSTALL_PATH="/usr/local/lib/clang/$CLANG_MAJOR_VERSION" && \ + cmake --build runtimes -j $(getconf _NPROCESSORS_ONLN) && \ + cmake --install runtimes --prefix "$ROOTFS_DIR/usr" + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-llvm-amd64 +ARG ROOTFS_DIR + +COPY --from=builder /usr/local/lib/clang /usr/local/lib/clang/ +COPY --from=builder $ROOTFS_DIR $ROOTFS_DIR diff --git a/src/azurelinux/3.0/net10.0/cross/armv6/Dockerfile b/src/azurelinux/3.0/net10.0/cross/armv6/Dockerfile new file mode 100644 index 000000000..1ba5c596f --- /dev/null +++ b/src/azurelinux/3.0/net10.0/cross/armv6/Dockerfile @@ -0,0 +1,18 @@ +ARG ROOTFS_DIR=/crossrootfs/armv6 + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-builder-amd64 AS builder +ARG ROOTFS_DIR + +# Install raspbian package signing keys +RUN wget http://raspbian.raspberrypi.org/raspbian/pool/main/r/raspbian-archive-keyring/raspbian-archive-keyring_20120528.2.tar.gz && \ + echo "b3f22fa8d63d8d2f8b81f77784c3dc8f65fd6a10eadda63ac30a2da483ffc9d6ac72d0b5d3d0d5bdf2a61ca264a26fa071aed3acc780f062c8ab27a2e5ac6d49 raspbian-archive-keyring_20120528.2.tar.gz" | sha512sum -c && \ + tar xf raspbian-archive-keyring_20120528.2.tar.gz && \ + mv raspbian-archive-keyring-20120528.2/keyrings/raspbian-archive-keyring.gpg /usr/share/keyrings/ && \ + rm -r raspbian-archive-keyring_20120528.2.tar.gz raspbian-archive-keyring-20120528.2 + +RUN /scripts/eng/common/cross/build-rootfs.sh armv6 bookworm lldb13 + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-llvm-amd64 +ARG ROOTFS_DIR + +COPY --from=builder "$ROOTFS_DIR" "$ROOTFS_DIR" diff --git a/src/azurelinux/3.0/net10.0/cross/freebsd/13/amd64/Dockerfile b/src/azurelinux/3.0/net10.0/cross/freebsd/13/amd64/Dockerfile new file mode 100644 index 000000000..3c054806e --- /dev/null +++ b/src/azurelinux/3.0/net10.0/cross/freebsd/13/amd64/Dockerfile @@ -0,0 +1,19 @@ +ARG ROOTFS_DIR=/crossrootfs/x64 + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-builder-amd64 AS builder +ARG ROOTFS_DIR + +# Install packages needed by the FreeBSD bootstrap scripts +RUN tdnf install -y \ + awk \ + m4 && \ + # The xz package in Azure Linux 3.0 doesn't provide liblzma.so, so we need to create a symlink to liblzma.so.5 + # so the FreeBSD bootstrap can find it. See https://github.com/microsoft/azurelinux/issues/9217 + ln -s /usr/lib/liblzma.so.5 /usr/lib/liblzma.so + +RUN /scripts/eng/common/cross/build-rootfs.sh freebsd13 x64 + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-llvm-amd64 +ARG ROOTFS_DIR + +COPY --from=builder "$ROOTFS_DIR" "$ROOTFS_DIR" diff --git a/src/azurelinux/3.0/net10.0/cross/ppc64le/Dockerfile b/src/azurelinux/3.0/net10.0/cross/ppc64le/Dockerfile new file mode 100644 index 000000000..1e4669ac0 --- /dev/null +++ b/src/azurelinux/3.0/net10.0/cross/ppc64le/Dockerfile @@ -0,0 +1,11 @@ +ARG ROOTFS_DIR=/crossrootfs/ppc64le + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-builder-amd64 AS builder +ARG ROOTFS_DIR + +RUN /scripts/eng/common/cross/build-rootfs.sh bionic ppc64le + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-llvm-amd64 +ARG ROOTFS_DIR + +COPY --from=builder "$ROOTFS_DIR" "$ROOTFS_DIR" diff --git a/src/azurelinux/3.0/net10.0/cross/riscv64-alpine/Dockerfile b/src/azurelinux/3.0/net10.0/cross/riscv64-alpine/Dockerfile new file mode 100644 index 000000000..870ef7f63 --- /dev/null +++ b/src/azurelinux/3.0/net10.0/cross/riscv64-alpine/Dockerfile @@ -0,0 +1,36 @@ +ARG ROOTFS_DIR=/crossrootfs/riscv64 + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-builder-amd64 AS builder +ARG ROOTFS_DIR + +RUN /scripts/eng/common/cross/build-rootfs.sh riscv64 alpine3.20 --skipunmount + +RUN TARGET_TRIPLE="riscv64-alpine-linux-musl" && \ + cmake -S llvm-project.src/runtimes -B runtimes \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_ASM_COMPILER=clang \ + -DCMAKE_C_COMPILER=clang \ + -DCMAKE_CXX_COMPILER=clang++ \ + -DCMAKE_ASM_COMPILER_TARGET="$TARGET_TRIPLE" \ + -DCMAKE_C_COMPILER_TARGET="$TARGET_TRIPLE" \ + -DCMAKE_CXX_COMPILER_TARGET="$TARGET_TRIPLE" \ + # We're going to link the static libraries we build here into PIC images, so build the static libraries as PIC. + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DCMAKE_SYSROOT="$ROOTFS_DIR" \ + # Specify linker to use for exes directly for CMake toolchain detection + -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" \ + # Don't search for tools in the sysroot as we're cross-compiling + -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM="NEVER" \ + -DLLVM_USE_LINKER=lld \ + -DLLVM_ENABLE_RUNTIMES="libcxx" \ + -DLIBCXX_ENABLE_SHARED=OFF \ + -DLIBCXX_HAS_MUSL_LIBC=ON \ + -DLIBCXX_CXX_ABI=libstdc++ \ + -DLIBCXX_CXX_ABI_INCLUDE_PATHS="$ROOTFS_DIR/usr/include/c++/14.2.0/;$ROOTFS_DIR/usr/include/c++/14.2.0/$TARGET_TRIPLE" && \ + cmake --build runtimes -j $(getconf _NPROCESSORS_ONLN) && \ + cmake --install runtimes --prefix "$ROOTFS_DIR/usr" + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-llvm-amd64 +ARG ROOTFS_DIR + +COPY --from=builder $ROOTFS_DIR $ROOTFS_DIR diff --git a/src/azurelinux/3.0/net10.0/cross/riscv64/Dockerfile b/src/azurelinux/3.0/net10.0/cross/riscv64/Dockerfile new file mode 100644 index 000000000..7b69e09be --- /dev/null +++ b/src/azurelinux/3.0/net10.0/cross/riscv64/Dockerfile @@ -0,0 +1,54 @@ +ARG ROOTFS_DIR=/crossrootfs/riscv64 + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-builder-amd64 AS builder +ARG ROOTFS_DIR + +# Install the latest debootstrap +RUN tdnf remove -y debootstrap && \ + curl -fsL -o debootstrap.tar.gz https://deb.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.137.tar.gz && \ + echo "666927457ee4b0b3e68e55a0efbf3fb69189610b7abbd534017d7032cb3ae833 debootstrap.tar.gz" | sha256sum -c - && \ + tar xzf debootstrap.tar.gz -C / && \ + ln -s /debootstrap/debootstrap -t /usr/local/bin && \ + rm -f debootstrap.tar.gz + +RUN /scripts/eng/common/cross/build-rootfs.sh riscv64 noble --skipunmount + +RUN TARGET_TRIPLE="riscv64-linux-gnu" && \ + CLANG_MAJOR_VERSION=$(clang --version | grep -oP "(?<=version )\d+") && \ + cmake -S llvm-project.src/runtimes -B runtimes \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_ASM_COMPILER=clang \ + -DCMAKE_C_COMPILER=clang \ + -DCMAKE_CXX_COMPILER=clang++ \ + -DCMAKE_ASM_COMPILER_TARGET="$TARGET_TRIPLE" \ + -DCMAKE_C_COMPILER_TARGET="$TARGET_TRIPLE" \ + -DCMAKE_CXX_COMPILER_TARGET="$TARGET_TRIPLE" \ + # We're going to link the static libraries we build here into PIC images, so build the static libraries as PIC. + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DCMAKE_SYSROOT="$ROOTFS_DIR" \ + # Specify linker to use for exes directly for CMake toolchain detection + -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" \ + # Don't search for tools in the sysroot as we're cross-compiling + -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM="NEVER" \ + -DLLVM_USE_LINKER=lld \ + -DLLVM_ENABLE_RUNTIMES="libcxx;compiler-rt" \ + -DLIBCXX_ENABLE_SHARED=OFF \ + -DLIBCXX_CXX_ABI=libstdc++ \ + -DLIBCXX_CXX_ABI_INCLUDE_PATHS="$ROOTFS_DIR/usr/include/c++/13/;$ROOTFS_DIR/usr/include/$TARGET_TRIPLE" \ + -DCOMPILER_RT_CXX_LIBRARY="libcxx" \ + -DCOMPILER_RT_STATIC_CXX_LIBRARY=ON \ + -DCOMPILER_RT_BUILD_SANITIZERS=OFF \ + -DCOMPILER_RT_BUILD_MEMPROF=OFF \ + # The libfuzzer build in LLVM doesn't correctly forward the required CMake properties to the "fuzzed libc++" build + # so skip it here. + -DCOMPILER_RT_BUILD_LIBFUZZER=OFF \ + -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON \ + -DCOMPILER_RT_INSTALL_PATH="/usr/local/lib/clang/$CLANG_MAJOR_VERSION" && \ + cmake --build runtimes -j $(getconf _NPROCESSORS_ONLN) && \ + cmake --install runtimes --prefix "$ROOTFS_DIR/usr" + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-llvm-amd64 +ARG ROOTFS_DIR + +COPY --from=builder /usr/local/lib/clang /usr/local/lib/clang/ +COPY --from=builder $ROOTFS_DIR $ROOTFS_DIR diff --git a/src/azurelinux/3.0/net10.0/cross/s390x/Dockerfile b/src/azurelinux/3.0/net10.0/cross/s390x/Dockerfile new file mode 100644 index 000000000..04b6fb573 --- /dev/null +++ b/src/azurelinux/3.0/net10.0/cross/s390x/Dockerfile @@ -0,0 +1,11 @@ +ARG ROOTFS_DIR=/crossrootfs/s390x + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-builder-amd64 AS builder +ARG ROOTFS_DIR + +RUN /scripts/eng/common/cross/build-rootfs.sh bionic s390x + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-llvm-amd64 +ARG ROOTFS_DIR + +COPY --from=builder "$ROOTFS_DIR" "$ROOTFS_DIR" diff --git a/src/azurelinux/3.0/net10.0/cross/x86/Dockerfile b/src/azurelinux/3.0/net10.0/cross/x86/Dockerfile new file mode 100644 index 000000000..a3e86fc4c --- /dev/null +++ b/src/azurelinux/3.0/net10.0/cross/x86/Dockerfile @@ -0,0 +1,13 @@ +ARG ROOTFS_DIR=/crossrootfs/x86 + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-builder-amd64 AS builder +ARG ROOTFS_DIR + +# We don't ship linux-x86 binaries, so we don't need to make a custom libc++ build for servicing concerns. +# We don't sanitize or instrument the linux-x64 build (as we don't ship it), so we don't need to build those runtime support libraries either. +RUN /scripts/eng/common/cross/build-rootfs.sh x86 bionic --skipunmount + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-llvm-amd64 +ARG ROOTFS_DIR + +COPY --from=builder $ROOTFS_DIR $ROOTFS_DIR diff --git a/src/azurelinux/3.0/net10.0/crossdeps-builder/amd64/Dockerfile b/src/azurelinux/3.0/net10.0/crossdeps-builder/amd64/Dockerfile new file mode 100644 index 000000000..f7e2c9235 --- /dev/null +++ b/src/azurelinux/3.0/net10.0/crossdeps-builder/amd64/Dockerfile @@ -0,0 +1,84 @@ +FROM mcr.microsoft.com/azurelinux/base/core:3.0 + +RUN tdnf install -y \ + # Common utilities + ca-certificates \ + git \ + tar \ + wget \ + # LLVM build dependencies + binutils \ + clang \ + gcc \ + make \ + cmake \ + diffutils \ + glibc-devel \ + kernel-headers \ + texinfo \ + zlib-devel \ + # Rootfs build dependencies + bzip2-devel \ + debootstrap \ + libarchive-devel \ + openssl-devel + +# dependencies which are installed from extended repo require additional setup +RUN wget https://packages.microsoft.com/azurelinux/3.0/prod/extended/x86_64/config.repo -O /etc/yum.repos.d/azurelinux-extended.repo && \ + tdnf makecache && \ + tdnf install -y \ + libbsd-devel + +# Obtain ubuntu package signing key (for use by debootstrap) +# 1. Add public key used to sign the ubuntu keyring +COPY dimitri_john_ledkov.asc . +RUN gpg --import dimitri_john_ledkov.asc && \ + rm dimitri_john_ledkov.asc && \ +# 2. Download the ubuntu keyrings + wget https://mirrors.edge.kernel.org/ubuntu/pool/main/u/ubuntu-keyring/ubuntu-keyring_2023.11.28.1.tar.xz && \ + echo "aecd455ae15561371d6e454f121f079f0641d5e1b579a5563a2bc363fc74aa2e ubuntu-keyring_2023.11.28.1.tar.xz" | sha256sum -c && \ + tar xf ubuntu-keyring_2023.11.28.1.tar.xz && \ + rm ubuntu-keyring_2023.11.28.1.tar.xz && \ +# 3. Verify keyrings + pushd ubuntu-keyring && \ + gpg --output SHA512SUMS.txt --decrypt SHA512SUMS.txt.asc && \ + sha512sum -c SHA512SUMS.txt && \ +# 4. Install the needed keyring and delete the rest + mkdir -p /usr/share/keyrings && \ + mv keyrings/ubuntu-archive-keyring.gpg /usr/share/keyrings && \ + wget -qO- "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x871920D1991BC93C" | gpg --dearmor > /usr/share/keyrings/ubuntu-archive-removed-keys.gpg && \ + popd && \ + rm -r ubuntu-keyring + +# 1. Obtain signing keys used to sign llvm sources +RUN wget https://releases.llvm.org/release-keys.asc && \ + echo "972d9449ebf7de947a1dff7f25edf8eea7963e4f7501b20d29328df55162f3b8 release-keys.asc" | sha256sum -c && \ + gpg --import release-keys.asc && \ + rm release-keys.asc && \ +# 2. Download llvm sources and signature, and verify signature + LLVM_VERSION=19.1.0 && \ + wget -O llvm-project.src.tar.xz.sig https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/llvm-project-${LLVM_VERSION}.src.tar.xz.sig && \ + echo "a81b827087cfc58701c23bd3befd1622b48e2111d583da65321f273cfefdf2eb llvm-project.src.tar.xz.sig" | sha256sum -c && \ + wget -O llvm-project.src.tar.xz https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/llvm-project-${LLVM_VERSION}.src.tar.xz && \ + echo "5042522b49945bc560ff9206f25fb87980a9b89b914193ca00d961511ff0673c llvm-project.src.tar.xz" | sha256sum -c && \ + gpg --verify llvm-project.src.tar.xz.sig && \ + rm llvm-project.src.tar.xz.sig + +# Build LLVM cross-toolchain (with support for targeting x86/x64, arm64, arm, s390x and ppc64le architectures) +RUN mkdir llvm-project.src && \ + tar -xf llvm-project.src.tar.xz --directory llvm-project.src --strip-components=1 && \ + rm llvm-project.src.tar.xz && \ + mkdir build && cd build && \ + cmake ../llvm-project.src/llvm \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_C_COMPILER=clang \ + -DCMAKE_CXX_COMPILER=clang++ \ + -DLLVM_TARGETS_TO_BUILD="X86;AArch64;ARM;PowerPC;RISCV;SystemZ" \ + -Wno-dev \ + -DLLVM_ENABLE_PROJECTS="clang;lld;clang-tools-extra" && \ + make -j $(getconf _NPROCESSORS_ONLN) && \ + make install + +# Obtain arcade scripts used to build rootfs +RUN git config --global user.email builder@dotnet-buildtools-prereqs-docker && \ + git clone --depth 1 --single-branch https://github.com/dotnet/arcade /scripts diff --git a/src/azurelinux/3.0/net10.0/crossdeps-builder/amd64/dimitri_john_ledkov.asc b/src/azurelinux/3.0/net10.0/crossdeps-builder/amd64/dimitri_john_ledkov.asc new file mode 100644 index 000000000..c36cc66e7 --- /dev/null +++ b/src/azurelinux/3.0/net10.0/crossdeps-builder/amd64/dimitri_john_ledkov.asc @@ -0,0 +1,400 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: Hockeypuck 2.1.0-189-g15ebf24 +Comment: Hostname: + +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 +WvrYM8oNhL8aJoiVU2Z5NeRPwfQ0ZZdzbwD2 +=Y9Bf +-----END PGP PUBLIC KEY BLOCK----- diff --git a/src/azurelinux/3.0/net10.0/crossdeps-llvm/amd64/Dockerfile b/src/azurelinux/3.0/net10.0/crossdeps-llvm/amd64/Dockerfile new file mode 100644 index 000000000..cabb8adad --- /dev/null +++ b/src/azurelinux/3.0/net10.0/crossdeps-llvm/amd64/Dockerfile @@ -0,0 +1,6 @@ +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-builder-amd64 AS builder + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-crossdeps-amd64 + +# Install LLVM that we built from source +COPY --from=builder /usr/local /usr/local diff --git a/src/azurelinux/3.0/net10.0/crossdeps/amd64/Dockerfile b/src/azurelinux/3.0/net10.0/crossdeps/amd64/Dockerfile new file mode 100644 index 000000000..01efda526 --- /dev/null +++ b/src/azurelinux/3.0/net10.0/crossdeps/amd64/Dockerfile @@ -0,0 +1,49 @@ +FROM mcr.microsoft.com/azurelinux/base/core:3.0 + +RUN tdnf update -y && \ + tdnf install -y \ + # Provides 'su', required by Azure DevOps + ca-certificates \ + git \ + pigz \ + util-linux \ + wget \ + # Common runtime build dependencies + awk \ + cpio \ + file \ + gcc \ + make \ + cmake \ + diffutils \ + icu \ + tar \ + # Crosscomponents build dependencies + glibc-devel \ + kernel-headers \ + lttng-ust-devel \ + # Jit rolling build dependency + python3-pip \ + # aspnetcore build dependencies + nodejs \ + npm + +# Powershell and azure cli aren't currently part of the azure linux 3.0 repositories. +# Install powershell from the rhel8 MS repo, and azure-cli using PIP + +# Install powershell from the Microsoft repository. +RUN curl -sSL -O https://packages.microsoft.com/config/rhel/8/packages-microsoft-prod.rpm && \ + rpm -i packages-microsoft-prod.rpm && \ + rm -f packages-microsoft-prod.rpm && \ + tdnf update -y && \ + tdnf install -y --setopt tsflags=nodocs \ + powershell && \ + rm /etc/yum.repos.d/microsoft-prod.repo && \ + tdnf clean all + +# Install azurecli from PIP +RUN azureEnv="/usr/local/share/azure-cli-env" && \ + python3 -m venv "$azureEnv" && \ + "$azureEnv/bin/python" -m pip install --upgrade setuptools && \ + "$azureEnv/bin/python" -m pip install azure-cli && \ + ln -s "$azureEnv/bin/az" /usr/local/bin/az diff --git a/src/azurelinux/3.0/net10.0/fpm/amd64/Dockerfile b/src/azurelinux/3.0/net10.0/fpm/amd64/Dockerfile new file mode 100644 index 000000000..fa4c0fa4d --- /dev/null +++ b/src/azurelinux/3.0/net10.0/fpm/amd64/Dockerfile @@ -0,0 +1,18 @@ +FROM mcr.microsoft.com/azurelinux/base/core:3.0 +RUN tdnf install -y \ + awk \ + build-essential \ + ca-certificates \ + git \ + icu \ + rpm-build \ + ruby \ + # Provides useradd + shadow-utils \ + tar \ + # Provides su + util-linux \ + # Provides sudo + sudo \ + && tdnf clean all \ + && gem install fpm diff --git a/src/azurelinux/3.0/net10.0/opt/Dockerfile b/src/azurelinux/3.0/net10.0/opt/Dockerfile new file mode 100644 index 000000000..d8b0e9b69 --- /dev/null +++ b/src/azurelinux/3.0/net10.0/opt/Dockerfile @@ -0,0 +1,14 @@ +FROM mcr.microsoft.com/azurelinux/base/core:3.0 + +RUN tdnf update -y && \ + tdnf install -y \ + # Common dependencies + ca-certificates \ + git \ + tar \ + util-linux \ + wget \ + # Runtime dependencies + icu \ + # Optimization dependencies (provides llvm-profdata) + llvm diff --git a/src/azurelinux/3.0/net10.0/webassembly/amd64/Dockerfile b/src/azurelinux/3.0/net10.0/webassembly/amd64/Dockerfile new file mode 100644 index 000000000..f51fb7d16 --- /dev/null +++ b/src/azurelinux/3.0/net10.0/webassembly/amd64/Dockerfile @@ -0,0 +1,50 @@ +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-cross-amd64 + +# Dependencies for WebAssembly build +RUN tdnf update -y \ + && tdnf install -y \ + # WebAssembly build dependencies + which \ + nodejs \ + npm \ + pigz \ + python3 \ + libxml2 \ + unzip + +# WebAssembly build needs typescript +RUN npm i -g typescript + +# Install V8 Engine +SHELL ["/bin/bash", "-c"] + +ENV V8_VERSION=10.8.168 +RUN curl -sSL https://netcorenativeassets.blob.core.windows.net/resource-packages/external/linux/chromium-v8/v8-linux64-rel-${V8_VERSION}.zip -o ./v8.zip \ + && unzip ./v8.zip -d /usr/local/v8 \ + && echo $'#!/usr/bin/env bash\n\ +"/usr/local/v8/d8" --snapshot_blob="/usr/local/v8/snapshot_blob.bin" "$@"\n' > /usr/local/bin/v8 \ + && chmod +x /usr/local/bin/v8 + +# Install Wasi toolchain +ENV WASI_SDK_VERSION=22 +ENV WASI_SDK_PATH=/usr/local/wasi-sdk +ENV WASI_SDK_URL=https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VERSION}/wasi-sdk-${WASI_SDK_VERSION}.0-linux.tar.gz + +RUN mkdir -p ${WASI_SDK_PATH} \ + && cd /tmp \ + && curl -L -o /tmp/wasi-sdk.tar.gz ${WASI_SDK_URL} \ + && tar --strip-components=1 -xvzf /tmp/wasi-sdk.tar.gz -C ${WASI_SDK_PATH} \ + && echo ${WASI_SDK_VERSION} > ${WASI_SDK_PATH}/wasi-sdk-version.txt \ + && rm /tmp/wasi-sdk.tar.gz + +ENV WASMTIME_VERSION=19.0.2 +ENV WASMTIME_PATH=/usr/local/wasmtime +ENV WASMTIME_URL=https://github.com/bytecodealliance/wasmtime/releases/download/v${WASMTIME_VERSION}/wasmtime-v${WASMTIME_VERSION}-x86_64-linux.tar.xz + +RUN mkdir -p ${WASMTIME_PATH} \ + && cd /tmp \ + && curl -L -o /tmp/wasmtime.tar.xz ${WASMTIME_URL} \ + && tar --strip-components=1 -xvf /tmp/wasmtime.tar.xz -C ${WASMTIME_PATH} \ + && echo ${WASMTIME_VERSION} > ${WASMTIME_PATH}/wasmtime-version.txt \ + && rm /tmp/wasmtime.tar.xz \ + && ln -s ${WASMTIME_PATH}/wasmtime /bin/wasmtime diff --git a/src/azurelinux/manifest.json b/src/azurelinux/manifest.json index 11bf8fef6..4671ae4cd 100644 --- a/src/azurelinux/manifest.json +++ b/src/azurelinux/manifest.json @@ -27,6 +27,18 @@ } ] }, + { + "platforms": [ + { + "dockerfile": "src/azurelinux/3.0/net10.0/crossdeps/amd64", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "azurelinux-3.0-net10.0-crossdeps-amd64": {} + } + } + ] + }, { "platforms": [ { @@ -426,6 +438,296 @@ } ] }, + + { + "platforms": [ + { + "dockerfile": "src/azurelinux/3.0/net10.0/fpm/amd64", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "azurelinux-3.0-net10.0-fpm-amd64": {} + } + } + ] + }, + { + "platforms": [ + { + "dockerfile": "src/azurelinux/3.0/net10.0/crossdeps-builder/amd64", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "azurelinux-3.0-net10.0-crossdeps-builder-amd64": {} + } + } + ] + }, + { + "platforms": [ + { + "dockerfile": "src/azurelinux/3.0/net10.0/crossdeps-llvm/amd64", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "azurelinux-3.0-net10.0-crossdeps-llvm-amd64": {} + } + } + ] + }, + { + "platforms": [ + { + "dockerfile": "src/azurelinux/3.0/net10.0/cross/riscv64", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "azurelinux-3.0-net10.0-cross-riscv64": {} + } + } + ] + }, { + "platforms": [ + { + "dockerfile": "src/azurelinux/3.0/net10.0/cross/riscv64-alpine", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "azurelinux-3.0-net10.0-cross-riscv64-alpine": {} + } + } + ] + }, + { + "platforms": [ + { + "dockerfile": "src/azurelinux/3.0/net10.0/cross/amd64", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "azurelinux-3.0-net10.0-cross-amd64": {} + } + } + ] + }, + { + "platforms": [ + { + "dockerfile": "src/azurelinux/3.0/net10.0/cross/amd64-sanitizer", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "azurelinux-3.0-net10.0-cross-amd64-sanitizer": {} + } + } + ] + }, + { + "platforms": [ + { + "dockerfile": "src/azurelinux/3.0/net10.0/cross/amd64-alpine", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "azurelinux-3.0-net10.0-cross-amd64-alpine": {} + } + } + ] + }, + { + "platforms": [ + { + "dockerfile": "src/azurelinux/3.0/net10.0/cross/arm", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "azurelinux-3.0-net10.0-cross-arm": {} + } + } + ] + }, + { + "platforms": [ + { + "dockerfile": "src/azurelinux/3.0/net10.0/cross/arm-alpine", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "azurelinux-3.0-net10.0-cross-arm-alpine": {} + } + } + ] + }, + { + "platforms": [ + { + "dockerfile": "src/azurelinux/3.0/net10.0/cross/arm64", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "azurelinux-3.0-net10.0-cross-arm64": {} + } + } + ] + }, + { + "platforms": [ + { + "dockerfile": "src/azurelinux/3.0/net10.0/cross/arm64-alpine", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "azurelinux-3.0-net10.0-cross-arm64-alpine": {} + } + } + ] + }, + { + "platforms": [ + { + "dockerfile": "src/azurelinux/3.0/net10.0/cross/x86", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "azurelinux-3.0-net10.0-cross-x86": {} + } + } + ] + }, + { + "platforms": [ + { + "dockerfile": "src/azurelinux/3.0/net10.0/webassembly/amd64", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "azurelinux-3.0-net10.0-webassembly-amd64": {} + } + } + ] + }, + { + "platforms": [ + { + "dockerfile": "src/azurelinux/3.0/net10.0/android/amd64", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "azurelinux-3.0-net10.0-android-amd64": {} + } + } + ] + }, + { + "platforms": [ + { + "dockerfile": "src/azurelinux/3.0/net10.0/cross/android/amd64", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "azurelinux-3.0-net10.0-cross-android-amd64": {} + } + } + ] + }, + { + "platforms": [ + { + "dockerfile": "src/azurelinux/3.0/net10.0/android/docker/amd64", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "azurelinux-3.0-net10.0-android-docker-amd64": {} + } + } + ] + }, + { + "platforms": [ + { + "dockerfile": "src/azurelinux/3.0/net10.0/cross/android/openssl/amd64", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "azurelinux-3.0-net10.0-cross-android-openssl-amd64": {} + } + } + ] + }, + { + "platforms": [ + { + "dockerfile": "src/azurelinux/3.0/net10.0/cross/freebsd/13/amd64", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "azurelinux-3.0-net10.0-cross-freebsd-13-amd64": {} + } + } + ] + }, + { + "platforms": [ + { + "dockerfile": "src/azurelinux/3.0/net10.0/cross/s390x", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "azurelinux-3.0-net10.0-cross-s390x": {} + } + } + ] + }, + { + "platforms": [ + { + "dockerfile": "src/azurelinux/3.0/net10.0/cross/ppc64le", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "azurelinux-3.0-net10.0-cross-ppc64le": {} + } + } + ] + }, + { + "platforms": [ + { + "dockerfile": "src/azurelinux/3.0/net10.0/cross/armv6", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "azurelinux-3.0-net10.0-cross-armv6": {} + } + } + ] + }, + { + "platforms": [ + { + "dockerfile": "src/azurelinux/3.0/net10.0/opt", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "azurelinux-3.0-net10.0-opt-amd64": {} + } + } + ] + }, + { + "platforms": [ + { + "architecture": "arm64", + "dockerfile": "src/azurelinux/3.0/net10.0/opt", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "azurelinux-3.0-net10.0-opt-arm64": {} + } + } + ] + }, + { "platforms": [ {