From ac44fca01dcbcfff17d3a21d73f261d1f5deb91e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 01:56:24 +0800
Subject: [PATCH 01/35] Add LoongArch64 build support
---
.../HarfBuzzSharp.NativeAssets.Linux.csproj | 54 ++++++-------
.../net4/HarfBuzzSharp.targets | 6 ++
...p.NativeAssets.Linux.NoDependencies.csproj | 78 ++++++++++---------
.../buildTransitive/net4/SkiaSharp.targets | 8 +-
.../SkiaSharp.NativeAssets.Linux.csproj | 56 ++++++-------
.../buildTransitive/net4/SkiaSharp.targets | 6 ++
scripts/Docker/_clang-cross-common.sh | 54 ++++++-------
scripts/Docker/alpine/clang-cross/Dockerfile | 69 ++++++----------
.../Docker/alpine/clang-cross/build-local.sh | 15 ++--
.../Docker/debian/clang-cross/13/Dockerfile | 64 +++++++++++++++
.../Docker/debian/clang-cross/build-local.sh | 18 +++--
scripts/azure-templates-stages.yml | 72 +++++++++++++----
scripts/cake/native-shared.cake | 2 +
13 files changed, 311 insertions(+), 191 deletions(-)
create mode 100644 scripts/Docker/debian/clang-cross/13/Dockerfile
diff --git a/binding/HarfBuzzSharp.NativeAssets.Linux/HarfBuzzSharp.NativeAssets.Linux.csproj b/binding/HarfBuzzSharp.NativeAssets.Linux/HarfBuzzSharp.NativeAssets.Linux.csproj
index 1c3ae7d00ee..65c9e7747ff 100644
--- a/binding/HarfBuzzSharp.NativeAssets.Linux/HarfBuzzSharp.NativeAssets.Linux.csproj
+++ b/binding/HarfBuzzSharp.NativeAssets.Linux/HarfBuzzSharp.NativeAssets.Linux.csproj
@@ -1,26 +1,28 @@
-
-
- $(BasicTargetFrameworks)
- HarfBuzzSharp
- $(PackagingGroup) - Native Assets for Linux
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+ $(BasicTargetFrameworks)
+ HarfBuzzSharp
+ $(PackagingGroup) - Native Assets for Linux
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/binding/HarfBuzzSharp.NativeAssets.Linux/buildTransitive/net4/HarfBuzzSharp.targets b/binding/HarfBuzzSharp.NativeAssets.Linux/buildTransitive/net4/HarfBuzzSharp.targets
index e57e8091c40..06826d3c4bb 100644
--- a/binding/HarfBuzzSharp.NativeAssets.Linux/buildTransitive/net4/HarfBuzzSharp.targets
+++ b/binding/HarfBuzzSharp.NativeAssets.Linux/buildTransitive/net4/HarfBuzzSharp.targets
@@ -25,6 +25,9 @@
<_NativeHarfBuzzSharpFile Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-riscv64\native\libHarfBuzzSharp*.so">
riscv64\
+ <_NativeHarfBuzzSharpFile Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-loongarch64\native\libHarfBuzzSharp*.so">
+ loongarch64\
+
<_NativeHarfBuzzSharpFile Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-musl-x86\native\libHarfBuzzSharp*.so">
@@ -42,6 +45,9 @@
<_NativeHarfBuzzSharpFile Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-musl-riscv64\native\libHarfBuzzSharp*.so">
musl-riscv64\
+ <_NativeHarfBuzzSharpFile Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-musl-loongarch64\native\libHarfBuzzSharp*.so">
+ musl-loongarch64\
+
diff --git a/binding/SkiaSharp.NativeAssets.Linux.NoDependencies/SkiaSharp.NativeAssets.Linux.NoDependencies.csproj b/binding/SkiaSharp.NativeAssets.Linux.NoDependencies/SkiaSharp.NativeAssets.Linux.NoDependencies.csproj
index d782128fdb3..92bbd90306b 100644
--- a/binding/SkiaSharp.NativeAssets.Linux.NoDependencies/SkiaSharp.NativeAssets.Linux.NoDependencies.csproj
+++ b/binding/SkiaSharp.NativeAssets.Linux.NoDependencies/SkiaSharp.NativeAssets.Linux.NoDependencies.csproj
@@ -1,38 +1,40 @@
-
-
- $(BasicTargetFrameworks)
- SkiaSharp
- $(PackagingGroup) - Native Assets for Linux (No Dependencies)
- This variation of the Linux native assets includes the build of libSkiaSharp.so that does not have any dependencies on third-party libraries.
-
-The complete dependency list is:
- - libpthread.so.0
- - libdl.so.2
- - libm.so.6
- - libc.so.6
- - ld-linux-x86-64.so.2
-
-The excluded dependencies are:
- - Fontconfig
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+ $(BasicTargetFrameworks)
+ SkiaSharp
+ $(PackagingGroup) - Native Assets for Linux (No Dependencies)
+ This variation of the Linux native assets includes the build of libSkiaSharp.so that does not have any dependencies on third-party libraries.
+
+The complete dependency list is:
+ - libpthread.so.0
+ - libdl.so.2
+ - libm.so.6
+ - libc.so.6
+ - ld-linux-x86-64.so.2
+
+The excluded dependencies are:
+ - Fontconfig
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/binding/SkiaSharp.NativeAssets.Linux.NoDependencies/buildTransitive/net4/SkiaSharp.targets b/binding/SkiaSharp.NativeAssets.Linux.NoDependencies/buildTransitive/net4/SkiaSharp.targets
index 816a0521bfb..ffe1394d2bc 100644
--- a/binding/SkiaSharp.NativeAssets.Linux.NoDependencies/buildTransitive/net4/SkiaSharp.targets
+++ b/binding/SkiaSharp.NativeAssets.Linux.NoDependencies/buildTransitive/net4/SkiaSharp.targets
@@ -25,6 +25,9 @@
<_NativeSkiaSharpFile Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-riscv64\native\libSkiaSharp*.so">
riscv64\
+ <_NativeSkiaSharpFile Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-loongarch64\native\libSkiaSharp*.so">
+ loongarch64\
+
<_NativeSkiaSharpFile Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-musl-x86\native\libSkiaSharp*.so">
@@ -42,6 +45,9 @@
<_NativeSkiaSharpFile Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-musl-riscv64\native\libSkiaSharp*.so">
musl-riscv64\
+ <_NativeSkiaSharpFile Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-musl-loongarch64\native\libSkiaSharp*.so">
+ musl-loongarch64\
+
@@ -52,4 +58,4 @@
-
\ No newline at end of file
+
diff --git a/binding/SkiaSharp.NativeAssets.Linux/SkiaSharp.NativeAssets.Linux.csproj b/binding/SkiaSharp.NativeAssets.Linux/SkiaSharp.NativeAssets.Linux.csproj
index cb841711d40..edfd8d4033d 100644
--- a/binding/SkiaSharp.NativeAssets.Linux/SkiaSharp.NativeAssets.Linux.csproj
+++ b/binding/SkiaSharp.NativeAssets.Linux/SkiaSharp.NativeAssets.Linux.csproj
@@ -1,27 +1,29 @@
-
-
- $(BasicTargetFrameworks)
- SkiaSharp
- $(PackagingGroup) - Native Assets for Linux
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+ $(BasicTargetFrameworks)
+ SkiaSharp
+ $(PackagingGroup) - Native Assets for Linux
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/binding/SkiaSharp.NativeAssets.Linux/buildTransitive/net4/SkiaSharp.targets b/binding/SkiaSharp.NativeAssets.Linux/buildTransitive/net4/SkiaSharp.targets
index fa4eff2bb91..ffe1394d2bc 100644
--- a/binding/SkiaSharp.NativeAssets.Linux/buildTransitive/net4/SkiaSharp.targets
+++ b/binding/SkiaSharp.NativeAssets.Linux/buildTransitive/net4/SkiaSharp.targets
@@ -25,6 +25,9 @@
<_NativeSkiaSharpFile Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-riscv64\native\libSkiaSharp*.so">
riscv64\
+ <_NativeSkiaSharpFile Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-loongarch64\native\libSkiaSharp*.so">
+ loongarch64\
+
<_NativeSkiaSharpFile Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-musl-x86\native\libSkiaSharp*.so">
@@ -42,6 +45,9 @@
<_NativeSkiaSharpFile Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-musl-riscv64\native\libSkiaSharp*.so">
musl-riscv64\
+ <_NativeSkiaSharpFile Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-musl-loongarch64\native\libSkiaSharp*.so">
+ musl-loongarch64\
+
diff --git a/scripts/Docker/_clang-cross-common.sh b/scripts/Docker/_clang-cross-common.sh
index 57b32a8314b..f5135ba2c15 100755
--- a/scripts/Docker/_clang-cross-common.sh
+++ b/scripts/Docker/_clang-cross-common.sh
@@ -1,43 +1,43 @@
#!/usr/bin/env bash
set -ex
-# Parameters:
-# $1 - The directory containing the Dockerfile [ clang-cross/10 | clang-cross ]
-# $2 - The target architecture to build for [ arm | arm64 | riscv64 | x86 | x64 ]
-# $3 - The ABI [ gnu | musl ]
-# $4 - The variant [ "" | alpine ]
-
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
-
-# the directory containing the Dockerfile
DOCKER_DIR="$1"
# the target architecture to build for
-ARCH="$2"
+ARCH="${2:-arm}"
# the docker image architecture to use
MACHINE_ARCH="$(uname -m)"
-case $MACHINE_ARCH in
- arm64) IMAGE_ARCH=arm64v8 ; MACHINE_ARCH=aarch64 ;;
- *) IMAGE_ARCH=amd64 ;;
+[ "$MACHINE_ARCH" = "arm64" ] && MACHINE_ARCH=aarch64
+IMAGE_ARCH="${3:-$([[ "$MACHINE_ARCH" == "aarch64" ]] && echo "arm64v8" || echo "amd64")}"
+
+DISTRO_VERSION=$4
+ABI=$5
+VENDOR=$6
+
+case $ARCH in
+ arm) TOOLCHAIN_ARCH=arm$VENDOR-linux-${ABI}eabihf ; TOOLCHAIN_ARCH_SHORT=armhf ; TARGET_MACHINE_ARCH=armhf ;;
+ arm64) TOOLCHAIN_ARCH=aarch64$VENDOR-linux-$ABI ; TOOLCHAIN_ARCH_SHORT=arm64 ; TARGET_MACHINE_ARCH=aarch64 ;;
+ loongarch64) TOOLCHAIN_ARCH=loongarch64$VENDOR-linux-$ABI ; TOOLCHAIN_ARCH_SHORT=loong64 ; TARGET_MACHINE_ARCH=loongarch64 ;;
+ riscv64) TOOLCHAIN_ARCH=riscv64$VENDOR-linux-$ABI ; TOOLCHAIN_ARCH_SHORT=riscv64 ; TARGET_MACHINE_ARCH=riscv64 ;;
+ x86) TOOLCHAIN_ARCH=i686$VENDOR-linux-$ABI ; TOOLCHAIN_ARCH_SHORT=i386 ; TARGET_MACHINE_ARCH=x86 ;;
+ x64) TOOLCHAIN_ARCH=x86-64$VENDOR-linux-$ABI ; TOOLCHAIN_ARCH_SHORT=amd64 ; TARGET_MACHINE_ARCH=x86_64 ;;
+ *) echo "Unsupported architecture: $ARCH" && exit 1 ;;
esac
-# the ABI
-ABI=$3
-
-# the variant
-VARIANT=$4
-
-(cd $DIR &&
- docker build --tag skiasharp-linux-$ABI-cross-$ARCH \
- --build-arg BUILD_ARCH=$ARCH \
- --build-arg IMAGE_ARCH=$IMAGE_ARCH \
- --build-arg MACHINE_ARCH=$MACHINE_ARCH \
+(cd $DIR && docker build --tag skiasharp-linux-$ABI-cross-$ARCH \
+ --build-arg TOOLCHAIN_ARCH=$TOOLCHAIN_ARCH \
+ --build-arg TOOLCHAIN_ARCH_SHORT=$TOOLCHAIN_ARCH_SHORT \
+ --build-arg IMAGE_ARCH=$IMAGE_ARCH \
+ --build-arg MACHINE_ARCH=$MACHINE_ARCH \
+ --build-arg TARGET_MACHINE_ARCH=$TARGET_MACHINE_ARCH \
+ --build-arg DISTRO_VERSION=$DISTRO_VERSION \
$DOCKER_DIR)
-[ -n "$VARIANT" ] && VARIANT="--variant=$VARIANT"
+if [ "$VENDOR" = "-alpine" ]; then vendor=alpine; fi
(cd $DIR/../.. &&
- docker run --rm --name skiasharp-linux-$ABI-cross-$ARCH --volume $(pwd):/work skiasharp-linux-$ABI-cross-$ARCH /bin/bash -c " \
- dotnet tool restore ; \
- dotnet cake --target=externals-linux-clang-cross --configuration=Release --buildarch=$ARCH $VARIANT ")
+ docker run --rm --name skiasharp-linux-$ABI-cross-$ARCH --volume $(pwd):/work skiasharp-linux-$ABI-cross-$ARCH /bin/bash -c "\
+ dotnet tool restore &&
+ dotnet cake --target=externals-linux-clang-cross --configuration=Release --buildarch=$ARCH --variant=$vendor")
diff --git a/scripts/Docker/alpine/clang-cross/Dockerfile b/scripts/Docker/alpine/clang-cross/Dockerfile
index c6ffe4431c7..f302196e96a 100644
--- a/scripts/Docker/alpine/clang-cross/Dockerfile
+++ b/scripts/Docker/alpine/clang-cross/Dockerfile
@@ -1,65 +1,44 @@
# Arguments:
-# IMAGE_ARCH - the architecture of the image [ amd64 | arm64v8 | riscv64 ]
-# DOTNET_SDK_VERSION - the version of dotnet for the Cake script [ 8.0 | * ]
-# LLVM_VERSION - the version of the LLVM compiler [ 13 | * ]
-# TOOLCHAIN_VERSION - the version of the GCC toolchain [ 9 | * ]
-# TOOLCHAIN_ARCH - the architecture of the GCC toolchain [ arm-alpine-linux-musleabihf | aarch64-alpine-linux-musl | riscv64-alpine-linux-musl ]
+# IMAGE_ARCH - the architecture of the image [ amd64 | arm64v8 | riscv64 | loongarch64 ]
+# DOTNET_SDK_VERSION - the version of dotnet for the Cake script [ 9.0 | * ]
+# TOOLCHAIN_VERSION - the version of the GCC toolchain [ 14 | * ]
+# TOOLCHAIN_ARCH - the architecture of the GCC toolchain [ arm-alpine-linux-musleabihf | aarch64-alpine-linux-musl | riscv64-alpine-linux-musl | loongarch64-alpine-linux-musl ]
+# TOOLCHAIN_ARCH_SHORT - the short form architecture of the GCC toolchain [ armhf | arm64 | riscv64 | loong64 ]
+# FONTCONFIG_VERSION - the exact version of libfontconfig1 to use [ 2.13.1-2 | * ]
ARG IMAGE_ARCH=amd64
FROM ${IMAGE_ARCH}/debian:12
-# Set the architecture-specific variables based on the value of the BUILD_ARCH argument
-ARG BUILD_ARCH=arm64
-RUN case ${BUILD_ARCH} in \
- arm) TOOLCHAIN_ARCH=armv7-alpine-linux-musleabihf ; TOOLCHAIN_ARCH_TARGET=armv7-alpine-linux-musleabihf ;; \
- arm64) TOOLCHAIN_ARCH=aarch64-alpine-linux-musl ; TOOLCHAIN_ARCH_TARGET=aarch64-alpine-linux-musl ;; \
- riscv64) TOOLCHAIN_ARCH=riscv64-alpine-linux-musl ; TOOLCHAIN_ARCH_TARGET=riscv64-alpine-linux-musl ;; \
- x86) TOOLCHAIN_ARCH=i586-alpine-linux-musl ; TOOLCHAIN_ARCH_TARGET=i586-alpine-linux-musl ;; \
- x64) TOOLCHAIN_ARCH=x86_64-alpine-linux-musl ; TOOLCHAIN_ARCH_TARGET=x86_64-alpine-linux-musl ;; \
- *) echo "Unsupported architecture: ${BUILD_ARCH}" && exit 1 ;; \
- esac \
- && echo "export TOOLCHAIN_ARCH=${TOOLCHAIN_ARCH}" > /etc/skia-env \
- && echo "export TOOLCHAIN_ARCH_TARGET=${TOOLCHAIN_ARCH_TARGET}" >> /etc/skia-env
-
# Install the required packages
-ARG LLVM_VERSION=19
RUN apt-get update \
&& apt-get install -y \
- curl python3 git clang-${LLVM_VERSION} lld-${LLVM_VERSION} ninja-build xz-utils \
+ curl python3 git clang-19 lld-19 ninja-build xz-utils curl \
&& rm -rf /var/lib/apt/lists/*
# Install the cross-compilation musl toolchain
-# First, obtain apk.static from https://gitlab.alpinelinux.org/alpine/apk-tools/-/releases/v2.12.14
+ARG DISTRO_VERSION=3.17
+ARG TOOLCHAIN_ARCH_SHORT=armhf
ARG MACHINE_ARCH=x86_64
-RUN . /etc/skia-env \
- && case "${BUILD_ARCH}" in \
- arm) APK_ARCH=armv7 ;; \
- arm64) APK_ARCH=aarch64 ;; \
- riscv64) APK_ARCH=riscv64 ;; \
- x86) APK_ARCH=x86 ;; \
- x64) APK_ARCH=x86_64 ;; \
- *) echo "Unsupported architecture: ${BUILD_ARCH}" && exit 1 ;; \
- esac \
- && case "${BUILD_ARCH}" in \
- riscv64) DISTRO_VERSION=3.20 ;; \
- *) DISTRO_VERSION=3.17 ;; \
- esac \
- && APK_DIR="$(mktemp -d)" \
- && curl -SLO --create-dirs --output-dir "$APK_DIR" "https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic/v2.12.14/$MACHINE_ARCH/apk.static" \
- && chmod +x "$APK_DIR/apk.static" \
- && "$APK_DIR/apk.static" \
+ARG TARGET_MACHINE_ARCH=armhf
+
+# obtain apk.static from gitlab.alpinelinux.org/alpine/apk-tools/-/releases/v2.14.6
+# apk.static for loongarch64 can be download in http://dl-cdn.alpinelinux.org/alpine/v3.21/main/loongarch64/apk-tools-static-2.14.6-r3.apk.
+RUN APK_DIR="$(mktemp -d)" && \
+ curl -SLO --create-dirs --output-dir "$APK_DIR" "https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic/v2.14.6/$MACHINE_ARCH/apk.static" && \
+ chmod +x "$APK_DIR/apk.static" && \
+ "$APK_DIR/apk.static" \
-X "http://dl-cdn.alpinelinux.org/alpine/v$DISTRO_VERSION/main" \
-X "http://dl-cdn.alpinelinux.org/alpine/v$DISTRO_VERSION/community" \
- -U --allow-untrusted --root /alpine --arch "$APK_ARCH" --initdb add \
- && "$APK_DIR/apk.static" \
+ -U --allow-untrusted --root /alpine --arch "$TARGET_MACHINE_ARCH" --initdb add && \
+ "$APK_DIR/apk.static" \
-X "http://dl-cdn.alpinelinux.org/alpine/v$DISTRO_VERSION/main" \
-X "http://dl-cdn.alpinelinux.org/alpine/v$DISTRO_VERSION/community" \
- -U --allow-untrusted --root /alpine --arch "$APK_ARCH" --no-scripts \
+ -U --allow-untrusted --root /alpine --arch "$TARGET_MACHINE_ARCH" --no-scripts \
add fontconfig-dev build-base linux-headers
# Install the .NET SDK
ARG DOTNET_SDK_VERSION=8.0
-ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
+ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT 1
RUN curl https://dot.net/v1/dotnet-install.sh -L -o dotnet-install.sh \
&& bash dotnet-install.sh --channel ${DOTNET_SDK_VERSION} --install-dir /usr/share/dotnet --verbose \
&& ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet \
@@ -67,10 +46,6 @@ RUN curl https://dot.net/v1/dotnet-install.sh -L -o dotnet-install.sh \
&& dotnet help \
&& dotnet --info
-ENV CC=clang-${LLVM_VERSION} CXX=clang++-${LLVM_VERSION}
+ENV CC=clang-19 CXX=clang++-19
WORKDIR /work
-
-COPY ./startup.sh /
-RUN chmod +x /startup.sh
-ENTRYPOINT [ "/startup.sh" ]
diff --git a/scripts/Docker/alpine/clang-cross/build-local.sh b/scripts/Docker/alpine/clang-cross/build-local.sh
index 591b9d2d647..4c73ad7ff9b 100755
--- a/scripts/Docker/alpine/clang-cross/build-local.sh
+++ b/scripts/Docker/alpine/clang-cross/build-local.sh
@@ -1,11 +1,16 @@
#!/usr/bin/env bash
set -ex
-# Parameters:
-# $1 - The target architecture to build for [ arm | arm64 | riscv64 | x86 | x64 ]
-
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
-ARCH="${1:-arm}"
+ARCH=$1
+ALPINE_VERSION=$3
+if [ -z "$ALPINE_VERSION" ]; then
+ case $ARCH in
+ loongarch64) ALPINE_VERSION=3.21 ;;
+ riscv64) ALPINE_VERSION=3.20 ;;
+ *) ALPINE_VERSION=3.17 ;;
+ esac
+fi
-$DIR/../../_clang-cross-common.sh "$DIR" "$ARCH" "musl" "alpine"
+$DIR/../../_clang-cross-common.sh "$DIR" "$ARCH" "$2" "$ALPINE_VERSION" "musl" "-alpine"
diff --git a/scripts/Docker/debian/clang-cross/13/Dockerfile b/scripts/Docker/debian/clang-cross/13/Dockerfile
new file mode 100644
index 00000000000..76a1789269e
--- /dev/null
+++ b/scripts/Docker/debian/clang-cross/13/Dockerfile
@@ -0,0 +1,64 @@
+# Arguments:
+# IMAGE_ARCH - the architecture of the image [ amd64 | arm64v8 | riscv64 | loongarch64 ]
+# DOTNET_SDK_VERSION - the version of dotnet for the Cake script [ 9.0 | * ]
+# TOOLCHAIN_VERSION - the version of the GCC toolchain [ 14 | * ]
+# TOOLCHAIN_ARCH - the architecture of the GCC toolchain [ arm-linux-gnueabihf | aarch64-linux-gnu | riscv64-linux-gnu | loongarch64-linux-gnu ]
+# TOOLCHAIN_ARCH_SHORT - the short form architecture of the GCC toolchain [ armhf | arm64 | loong64 ]
+# FONTCONFIG_VERSION - the exact version of libfontconfig1 to use [ 2.15.0-1 | * ]
+
+ARG IMAGE_ARCH=amd64
+FROM ${IMAGE_ARCH}/debian:12
+
+# Install the required packages (needs to add ftp.debian.org source)
+RUN apt-get update \
+ && apt-get install -y \
+ curl python3 git clang-19 ninja-build xz-utils \
+ && rm -rf /var/lib/apt/lists/*
+
+# Install the cross-compilation GCC toolchain (loongarch64 use GCC cross ports)
+ARG TOOLCHAIN_VERSION=14
+ARG TOOLCHAIN_ARCH=loongarch64-linux-gnu
+ARG TOOLCHAIN_ARCH_SHORT=loong64
+RUN apt-get update \
+ && apt-get install -y \
+ libstdc++-${TOOLCHAIN_VERSION}-dev-${TOOLCHAIN_ARCH_SHORT}-cross \
+ libgcc-${TOOLCHAIN_VERSION}-dev-${TOOLCHAIN_ARCH_SHORT}-cross \
+ binutils-${TOOLCHAIN_ARCH} \
+ && rm -rf /var/lib/apt/lists/*
+
+# Make the script more flexible and use "current" instead of the actual version
+RUN ln -s /usr/${TOOLCHAIN_ARCH}/include/c++/${TOOLCHAIN_VERSION} /usr/${TOOLCHAIN_ARCH}/include/c++/current \
+ && sed -i "s/\/usr\/${TOOLCHAIN_ARCH}\/lib\///g" /usr/${TOOLCHAIN_ARCH}/lib/libpthread.so || true \
+ && sed -i "s/\/usr\/${TOOLCHAIN_ARCH}\/lib\///g" /usr/${TOOLCHAIN_ARCH}/lib/libc.so
+
+# Install the cross-compilation skia build dependencies (fontconfig)
+ARG FONTCONFIG_VERSION=2.15.0-1.1
+RUN (mkdir -p /skia-utils/libfontconfig1-dev \
+ && cd /skia-utils/libfontconfig1-dev \
+ && curl https://pkg.loongnix.cn/loongnix/25/pool/main/f/fontconfig/libfontconfig-dev_${FONTCONFIG_VERSION}_${TOOLCHAIN_ARCH_SHORT}.deb -L -o libfontconfig1-dev.deb \
+ && ar vx libfontconfig1-dev.deb \
+ && tar -xJvf data.tar.xz \
+ && rm libfontconfig1-dev.deb \
+ && cp -R usr/lib/*/* /usr/${TOOLCHAIN_ARCH}/lib/ \
+ && cp -R usr/include/* /usr/${TOOLCHAIN_ARCH}/include/ )
+RUN (mkdir -p /skia-utils/libfontconfig1 \
+ && cd /skia-utils/libfontconfig1 \
+ && curl https://pkg.loongnix.cn/loongnix/25/pool/main/f/fontconfig/libfontconfig1_${FONTCONFIG_VERSION}_${TOOLCHAIN_ARCH_SHORT}.deb -L -o libfontconfig1.deb \
+ && ar vx libfontconfig1.deb \
+ && tar -xJvf data.tar.xz \
+ && rm libfontconfig1.deb \
+ && cp -R usr/lib/*/* /usr/${TOOLCHAIN_ARCH}/lib/ )
+
+# Install the .NET SDK
+ARG DOTNET_SDK_VERSION=8.0
+ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT 1
+RUN curl https://dot.net/v1/dotnet-install.sh -L -o dotnet-install.sh \
+ && bash dotnet-install.sh --channel ${DOTNET_SDK_VERSION} --install-dir /usr/share/dotnet --verbose \
+ && ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet \
+ && rm dotnet-install.sh \
+ && dotnet help \
+ && dotnet --info
+
+ENV CC=clang-19 CXX=clang++-19
+
+WORKDIR /work
diff --git a/scripts/Docker/debian/clang-cross/build-local.sh b/scripts/Docker/debian/clang-cross/build-local.sh
index e1f5249d931..c7983a87e02 100644
--- a/scripts/Docker/debian/clang-cross/build-local.sh
+++ b/scripts/Docker/debian/clang-cross/build-local.sh
@@ -1,13 +1,17 @@
#!/usr/bin/env bash
set -ex
-# Parameters:
-# $1 - The target architecture to build for [ arm | arm64 | riscv64 | x86 | x64 ]
-# $2 - The Debian distro version [ 10 | 12 ]
-
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
-ARCH="${1:-arm}"
-DEBIAN_VERSION="${2:-10}"
+# the target architecture to build for
+ARCH=$1
+DEBIAN_VERSION=$3
+if [ -z "$DEBIAN_VERSION" ]; then
+ case $ARCH in
+ loongarch64) DEBIAN_VERSION=13 ;;
+ riscv64) DEBIAN_VERSION=12 ;;
+ *) DEBIAN_VERSION=11 ;;
+ esac
+fi
-$DIR/../../_clang-cross-common.sh "$DIR/$DEBIAN_VERSION" "$ARCH" "gnu"
+$DIR/../../_clang-cross-common.sh "$DIR/$DEBIAN_VERSION" "$ARCH" "$2" "$DEBIAN_VERSION" "gnu"
diff --git a/scripts/azure-templates-stages.yml b/scripts/azure-templates-stages.yml
index f49bc35c0cd..c409a58f49d 100644
--- a/scripts/azure-templates-stages.yml
+++ b/scripts/azure-templates-stages.yml
@@ -362,15 +362,39 @@ stages:
matrix:
- arch: x64
docker: scripts/Docker/debian/amd64
- - ${{ each arch in split('arm,arm64,x86,riscv64', ',') }}: # separate x64 as it fails when cross-compiling
- - arch: ${{ arch }}
- docker: scripts/Docker/debian/clang-cross/10
- target: externals-linux-clang-cross
- - ${{ each arch in split('arm,arm64,x64,riscv64', ',') }}: # removed x86 as it is having issues building
- - arch: ${{ arch }}
- variant: alpine
- docker: scripts/Docker/alpine/clang-cross
- target: externals-linux-clang-cross
+ - arch: x64
+ variant: alpine
+ docker: scripts/Docker/alpine/amd64
+ - arch: arm
+ docker: scripts/Docker/debian/clang-cross/11
+ target: externals-linux-clang-cross
+ - arch: arm64
+ docker: scripts/Docker/debian/clang-cross/11
+ dockerArgs: --build-arg TOOLCHAIN_ARCH=aarch64-linux-gnu --build-arg TOOLCHAIN_ARCH_SHORT=arm64
+ target: externals-linux-clang-cross
+ - arch: riscv64
+ docker: scripts/Docker/debian/clang-cross/12
+ dockerArgs: --build-arg TOOLCHAIN_ARCH=riscv64-linux-gnu --build-arg TOOLCHAIN_ARCH_SHORT=riscv64 --build-arg DISTRO_VERSION=12
+ target: externals-linux-clang-cross
+ - arch: arm64
+ variant: alpine
+ docker: scripts/Docker/alpine/clang-cross
+ dockerArgs: --build-arg TOOLCHAIN_ARCH=aarch64-alpine-linux-musl --build-arg TOOLCHAIN_ARCH_SHORT=arm64 --build-arg TARGET_MACHINE_ARCH=aarch64
+ target: externals-linux-clang-cross
+ - arch: riscv64
+ variant: alpine
+ docker: scripts/Docker/alpine/clang-cross
+ dockerArgs: --build-arg TOOLCHAIN_ARCH=riscv64-alpine-linux-musl --build-arg TOOLCHAIN_ARCH_SHORT=riscv64 --build-arg TARGET_MACHINE_ARCH=riscv64 --build-arg DISTRO_VERSION=3.20
+ target: externals-linux-clang-cross
+ - arch: loongarch64
+ docker: scripts/Docker/debian/clang-cross/13
+ dockerArgs: --build-arg TOOLCHAIN_ARCH=loongarch64-linux-gnu --build-arg TOOLCHAIN_ARCH_SHORT=loong64
+ target: externals-linux-clang-cross
+ - arch: loongarch64
+ variant: alpine
+ docker: scripts/Docker/alpine/clang-cross
+ dockerArgs: --build-arg TOOLCHAIN_ARCH=loongarch64-alpine-linux-musl --build-arg TOOLCHAIN_ARCH_SHORT=loong64 --build-arg TARGET_MACHINE_ARCH=loongarch64 --build-arg DISTRO_VERSION=3.21
+ target: externals-linux-clang-cross
- template: /scripts/azure-templates-bootstrapper.yml@self # Build Native Tizen (Linux)
parameters:
name: native_tizen_linux
@@ -517,10 +541,12 @@ stages:
- name: native_linux_arm64_alpine_nodeps_linux
- name: native_linux_arm64_linux
- name: native_linux_arm64_nodeps_linux
- - name: native_linux_arm_alpine_linux
- - name: native_linux_arm_alpine_nodeps_linux
- name: native_linux_arm_linux
- name: native_linux_arm_nodeps_linux
+ - name: native_linux_loongarch64_alpine_linux
+ - name: native_linux_loongarch64_alpine_nodeps_linux
+ - name: native_linux_loongarch64_linux
+ - name: native_linux_loongarch64_nodeps_linux
- name: native_linux_riscv64_alpine_linux
- name: native_linux_riscv64_alpine_nodeps_linux
- name: native_linux_riscv64_linux
@@ -529,8 +555,6 @@ stages:
- name: native_linux_x64_alpine_nodeps_linux
- name: native_linux_x64_linux
- name: native_linux_x64_nodeps_linux
- - name: native_linux_x86_linux
- - name: native_linux_x86_nodeps_linux
# WASM
- name: native_wasm_2_0_23_linux
- name: native_wasm_2_0_6_linux
@@ -561,6 +585,26 @@ stages:
buildPipelineType: ${{ parameters.buildPipelineType }}
buildAgent: ${{ parameters.buildAgentHost }}
requiredArtifacts:
+ # Linux
+ - name: native_linux_arm64_linux
+ - name: native_linux_arm64_nodeps_linux
+ - name: native_linux_arm64_alpine_linux
+ - name: native_linux_arm64_alpine_nodeps_linux
+ - name: native_linux_arm_linux
+ - name: native_linux_arm_nodeps_linux
+ - name: native_linux_loongarch64_alpine_linux
+ - name: native_linux_loongarch64_alpine_nodeps_linux
+ - name: native_linux_loongarch64_linux
+ - name: native_linux_loongarch64_nodeps_linux
+ - name: native_linux_riscv64_alpine_linux
+ - name: native_linux_riscv64_alpine_nodeps_linux
+ - name: native_linux_riscv64_linux
+ - name: native_linux_riscv64_nodeps_linux
+ - name: native_linux_x64_alpine_linux
+ - name: native_linux_x64_alpine_nodeps_linux
+ - name: native_linux_x64_linux
+ - name: native_linux_x64_nodeps_linux
+ # WASM
- name: native_wasm_2_0_23_linux
- name: native_wasm_2_0_6_linux
- name: native_wasm_3_1_12_linux
@@ -883,6 +927,8 @@ stages:
requiredArtifacts:
- name: native_linux_x64_linux
- name: native_linux_arm64_linux
+ - name: native_linux_riscv64_linux
+ - name: native_linux_loongarch64_linux
postBuildSteps:
- task: PublishTestResults@2
displayName: Publish the .NET Core test results
diff --git a/scripts/cake/native-shared.cake b/scripts/cake/native-shared.cake
index 860be68d291..b8c32d4f48c 100644
--- a/scripts/cake/native-shared.cake
+++ b/scripts/cake/native-shared.cake
@@ -119,6 +119,8 @@ string ReduceArch(string arch)
return "arm64";
case "riscv64":
return "riscv64";
+ case "loongarch64":
+ return "loongarch64";
}
throw new Exception($"Unknown architecture: {arch}");
From 18ee00f7c58356118fd750f2f5084f2e09a0a234 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 02:10:17 +0800
Subject: [PATCH 02/35] Delete
binding/HarfBuzzSharp.NativeAssets.Linux/HarfBuzzSharp.NativeAssets.Linux.csproj
---
.../HarfBuzzSharp.NativeAssets.Linux.csproj | 28 -------------------
1 file changed, 28 deletions(-)
delete mode 100644 binding/HarfBuzzSharp.NativeAssets.Linux/HarfBuzzSharp.NativeAssets.Linux.csproj
diff --git a/binding/HarfBuzzSharp.NativeAssets.Linux/HarfBuzzSharp.NativeAssets.Linux.csproj b/binding/HarfBuzzSharp.NativeAssets.Linux/HarfBuzzSharp.NativeAssets.Linux.csproj
deleted file mode 100644
index 65c9e7747ff..00000000000
--- a/binding/HarfBuzzSharp.NativeAssets.Linux/HarfBuzzSharp.NativeAssets.Linux.csproj
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
- $(BasicTargetFrameworks)
- HarfBuzzSharp
- $(PackagingGroup) - Native Assets for Linux
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
From ffc55e61bb80a1edaa6659b98b1eda50f963a01d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 02:14:11 +0800
Subject: [PATCH 03/35] Create HarfBuzzSharp.NativeAssets.Linux.csproj
---
.../HarfBuzzSharp.NativeAssets.Linux.csproj | 28 +++++++++++++++++++
1 file changed, 28 insertions(+)
create mode 100644 binding/HarfBuzzSharp.NativeAssets.Linux/HarfBuzzSharp.NativeAssets.Linux.csproj
diff --git a/binding/HarfBuzzSharp.NativeAssets.Linux/HarfBuzzSharp.NativeAssets.Linux.csproj b/binding/HarfBuzzSharp.NativeAssets.Linux/HarfBuzzSharp.NativeAssets.Linux.csproj
new file mode 100644
index 00000000000..afaeedbfa00
--- /dev/null
+++ b/binding/HarfBuzzSharp.NativeAssets.Linux/HarfBuzzSharp.NativeAssets.Linux.csproj
@@ -0,0 +1,28 @@
+
+
+ $(BasicTargetFrameworks)
+ HarfBuzzSharp
+ $(PackagingGroup) - Native Assets for Linux
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
From 245e08dfd2536f08e039da219544ae0d5eb9d2ba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 02:16:12 +0800
Subject: [PATCH 04/35] Delete
binding/SkiaSharp.NativeAssets.Linux.NoDependencies/SkiaSharp.NativeAssets.Linux.NoDependencies.csproj
---
...p.NativeAssets.Linux.NoDependencies.csproj | 40 -------------------
1 file changed, 40 deletions(-)
delete mode 100644 binding/SkiaSharp.NativeAssets.Linux.NoDependencies/SkiaSharp.NativeAssets.Linux.NoDependencies.csproj
diff --git a/binding/SkiaSharp.NativeAssets.Linux.NoDependencies/SkiaSharp.NativeAssets.Linux.NoDependencies.csproj b/binding/SkiaSharp.NativeAssets.Linux.NoDependencies/SkiaSharp.NativeAssets.Linux.NoDependencies.csproj
deleted file mode 100644
index 92bbd90306b..00000000000
--- a/binding/SkiaSharp.NativeAssets.Linux.NoDependencies/SkiaSharp.NativeAssets.Linux.NoDependencies.csproj
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
- $(BasicTargetFrameworks)
- SkiaSharp
- $(PackagingGroup) - Native Assets for Linux (No Dependencies)
- This variation of the Linux native assets includes the build of libSkiaSharp.so that does not have any dependencies on third-party libraries.
-
-The complete dependency list is:
- - libpthread.so.0
- - libdl.so.2
- - libm.so.6
- - libc.so.6
- - ld-linux-x86-64.so.2
-
-The excluded dependencies are:
- - Fontconfig
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
From ee617c9a56502b75be3c19bb9a2115ea1cc1665b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 02:18:04 +0800
Subject: [PATCH 05/35] Create
SkiaSharp.NativeAssets.Linux.NoDependencies.csproj
---
...p.NativeAssets.Linux.NoDependencies.csproj | 40 +++++++++++++++++++
1 file changed, 40 insertions(+)
create mode 100644 binding/SkiaSharp.NativeAssets.Linux.NoDependencies/SkiaSharp.NativeAssets.Linux.NoDependencies.csproj
diff --git a/binding/SkiaSharp.NativeAssets.Linux.NoDependencies/SkiaSharp.NativeAssets.Linux.NoDependencies.csproj b/binding/SkiaSharp.NativeAssets.Linux.NoDependencies/SkiaSharp.NativeAssets.Linux.NoDependencies.csproj
new file mode 100644
index 00000000000..3de0a3fddef
--- /dev/null
+++ b/binding/SkiaSharp.NativeAssets.Linux.NoDependencies/SkiaSharp.NativeAssets.Linux.NoDependencies.csproj
@@ -0,0 +1,40 @@
+
+
+ $(BasicTargetFrameworks)
+ SkiaSharp
+ $(PackagingGroup) - Native Assets for Linux (No Dependencies)
+ This variation of the Linux native assets includes the build of libSkiaSharp.so that does not have any dependencies on third-party libraries.
+
+The complete dependency list is:
+ - libpthread.so.0
+ - libdl.so.2
+ - libm.so.6
+ - libc.so.6
+ - ld-linux-x86-64.so.2
+
+The excluded dependencies are:
+ - Fontconfig
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
From 451375cc2032f35bd9a4602bdfe309e2f3c7e9aa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 02:18:59 +0800
Subject: [PATCH 06/35] Delete
binding/SkiaSharp.NativeAssets.Linux/SkiaSharp.NativeAssets.Linux.csproj
---
.../SkiaSharp.NativeAssets.Linux.csproj | 29 -------------------
1 file changed, 29 deletions(-)
delete mode 100644 binding/SkiaSharp.NativeAssets.Linux/SkiaSharp.NativeAssets.Linux.csproj
diff --git a/binding/SkiaSharp.NativeAssets.Linux/SkiaSharp.NativeAssets.Linux.csproj b/binding/SkiaSharp.NativeAssets.Linux/SkiaSharp.NativeAssets.Linux.csproj
deleted file mode 100644
index edfd8d4033d..00000000000
--- a/binding/SkiaSharp.NativeAssets.Linux/SkiaSharp.NativeAssets.Linux.csproj
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
- $(BasicTargetFrameworks)
- SkiaSharp
- $(PackagingGroup) - Native Assets for Linux
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
From 144e3dc11621e45a3ef0994f83bc2afdb86288cc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 02:20:36 +0800
Subject: [PATCH 07/35] Create SkiaSharp.NativeAssets.Linux.csproj
---
.../SkiaSharp.NativeAssets.Linux.csproj | 29 +++++++++++++++++++
1 file changed, 29 insertions(+)
create mode 100644 binding/SkiaSharp.NativeAssets.Linux/SkiaSharp.NativeAssets.Linux.csproj
diff --git a/binding/SkiaSharp.NativeAssets.Linux/SkiaSharp.NativeAssets.Linux.csproj b/binding/SkiaSharp.NativeAssets.Linux/SkiaSharp.NativeAssets.Linux.csproj
new file mode 100644
index 00000000000..1555c37d877
--- /dev/null
+++ b/binding/SkiaSharp.NativeAssets.Linux/SkiaSharp.NativeAssets.Linux.csproj
@@ -0,0 +1,29 @@
+
+
+ $(BasicTargetFrameworks)
+ SkiaSharp
+ $(PackagingGroup) - Native Assets for Linux
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
From 018d6b4c3ced26e0f7781c4eb28abb0a8dcce1cb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 02:23:40 +0800
Subject: [PATCH 08/35] Update _clang-cross-common.sh
---
scripts/Docker/_clang-cross-common.sh | 54 +++++++++++++--------------
1 file changed, 27 insertions(+), 27 deletions(-)
diff --git a/scripts/Docker/_clang-cross-common.sh b/scripts/Docker/_clang-cross-common.sh
index f5135ba2c15..cad0b6c535d 100755
--- a/scripts/Docker/_clang-cross-common.sh
+++ b/scripts/Docker/_clang-cross-common.sh
@@ -1,43 +1,43 @@
#!/usr/bin/env bash
set -ex
+# Parameters:
+# $1 - The directory containing the Dockerfile [ clang-cross/10 | clang-cross ]
+# $2 - The target architecture to build for [ arm | arm64 | riscv64 | x86 | x64 | loongarch64 ]
+# $3 - The ABI [ gnu | musl ]
+# $4 - The variant [ "" | alpine ]
+
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
+
+# the directory containing the Dockerfile
DOCKER_DIR="$1"
# the target architecture to build for
-ARCH="${2:-arm}"
+ARCH="$2"
# the docker image architecture to use
MACHINE_ARCH="$(uname -m)"
-[ "$MACHINE_ARCH" = "arm64" ] && MACHINE_ARCH=aarch64
-IMAGE_ARCH="${3:-$([[ "$MACHINE_ARCH" == "aarch64" ]] && echo "arm64v8" || echo "amd64")}"
-
-DISTRO_VERSION=$4
-ABI=$5
-VENDOR=$6
-
-case $ARCH in
- arm) TOOLCHAIN_ARCH=arm$VENDOR-linux-${ABI}eabihf ; TOOLCHAIN_ARCH_SHORT=armhf ; TARGET_MACHINE_ARCH=armhf ;;
- arm64) TOOLCHAIN_ARCH=aarch64$VENDOR-linux-$ABI ; TOOLCHAIN_ARCH_SHORT=arm64 ; TARGET_MACHINE_ARCH=aarch64 ;;
- loongarch64) TOOLCHAIN_ARCH=loongarch64$VENDOR-linux-$ABI ; TOOLCHAIN_ARCH_SHORT=loong64 ; TARGET_MACHINE_ARCH=loongarch64 ;;
- riscv64) TOOLCHAIN_ARCH=riscv64$VENDOR-linux-$ABI ; TOOLCHAIN_ARCH_SHORT=riscv64 ; TARGET_MACHINE_ARCH=riscv64 ;;
- x86) TOOLCHAIN_ARCH=i686$VENDOR-linux-$ABI ; TOOLCHAIN_ARCH_SHORT=i386 ; TARGET_MACHINE_ARCH=x86 ;;
- x64) TOOLCHAIN_ARCH=x86-64$VENDOR-linux-$ABI ; TOOLCHAIN_ARCH_SHORT=amd64 ; TARGET_MACHINE_ARCH=x86_64 ;;
- *) echo "Unsupported architecture: $ARCH" && exit 1 ;;
+case $MACHINE_ARCH in
+ arm64) IMAGE_ARCH=arm64v8 ; MACHINE_ARCH=aarch64 ;;
+ *) IMAGE_ARCH=amd64 ;;
esac
-(cd $DIR && docker build --tag skiasharp-linux-$ABI-cross-$ARCH \
- --build-arg TOOLCHAIN_ARCH=$TOOLCHAIN_ARCH \
- --build-arg TOOLCHAIN_ARCH_SHORT=$TOOLCHAIN_ARCH_SHORT \
- --build-arg IMAGE_ARCH=$IMAGE_ARCH \
- --build-arg MACHINE_ARCH=$MACHINE_ARCH \
- --build-arg TARGET_MACHINE_ARCH=$TARGET_MACHINE_ARCH \
- --build-arg DISTRO_VERSION=$DISTRO_VERSION \
+# the ABI
+ABI=$3
+
+# the variant
+VARIANT=$4
+
+(cd $DIR &&
+ docker build --tag skiasharp-linux-$ABI-cross-$ARCH \
+ --build-arg BUILD_ARCH=$ARCH \
+ --build-arg IMAGE_ARCH=$IMAGE_ARCH \
+ --build-arg MACHINE_ARCH=$MACHINE_ARCH \
$DOCKER_DIR)
-if [ "$VENDOR" = "-alpine" ]; then vendor=alpine; fi
+[ -n "$VARIANT" ] && VARIANT="--variant=$VARIANT"
(cd $DIR/../.. &&
- docker run --rm --name skiasharp-linux-$ABI-cross-$ARCH --volume $(pwd):/work skiasharp-linux-$ABI-cross-$ARCH /bin/bash -c "\
- dotnet tool restore &&
- dotnet cake --target=externals-linux-clang-cross --configuration=Release --buildarch=$ARCH --variant=$vendor")
+ docker run --rm --name skiasharp-linux-$ABI-cross-$ARCH --volume $(pwd):/work skiasharp-linux-$ABI-cross-$ARCH /bin/bash -c " \
+ dotnet tool restore ; \
+ dotnet cake --target=externals-linux-clang-cross --configuration=Release --buildarch=$ARCH $VARIANT ")
From e0fac5c7deebead81f23f623682ad7cc9760779c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 02:31:26 +0800
Subject: [PATCH 09/35] Update Dockerfile
---
scripts/Docker/alpine/clang-cross/Dockerfile | 66 ++++++++++++++------
1 file changed, 47 insertions(+), 19 deletions(-)
diff --git a/scripts/Docker/alpine/clang-cross/Dockerfile b/scripts/Docker/alpine/clang-cross/Dockerfile
index f302196e96a..95e29b26e84 100644
--- a/scripts/Docker/alpine/clang-cross/Dockerfile
+++ b/scripts/Docker/alpine/clang-cross/Dockerfile
@@ -1,44 +1,68 @@
# Arguments:
# IMAGE_ARCH - the architecture of the image [ amd64 | arm64v8 | riscv64 | loongarch64 ]
-# DOTNET_SDK_VERSION - the version of dotnet for the Cake script [ 9.0 | * ]
+# DOTNET_SDK_VERSION - the version of dotnet for the Cake script [ 8.0 | * ]
+# LLVM_VERSION - the version of the LLVM compiler [ 13 | * ]
# TOOLCHAIN_VERSION - the version of the GCC toolchain [ 14 | * ]
# TOOLCHAIN_ARCH - the architecture of the GCC toolchain [ arm-alpine-linux-musleabihf | aarch64-alpine-linux-musl | riscv64-alpine-linux-musl | loongarch64-alpine-linux-musl ]
-# TOOLCHAIN_ARCH_SHORT - the short form architecture of the GCC toolchain [ armhf | arm64 | riscv64 | loong64 ]
-# FONTCONFIG_VERSION - the exact version of libfontconfig1 to use [ 2.13.1-2 | * ]
ARG IMAGE_ARCH=amd64
FROM ${IMAGE_ARCH}/debian:12
+# Set the architecture-specific variables based on the value of the BUILD_ARCH argument
+ARG BUILD_ARCH=arm64
+RUN case ${BUILD_ARCH} in \
+ arm) TOOLCHAIN_ARCH=armv7-alpine-linux-musleabihf ; TOOLCHAIN_ARCH_TARGET=armv7-alpine-linux-musleabihf ;; \
+ arm64) TOOLCHAIN_ARCH=aarch64-alpine-linux-musl ; TOOLCHAIN_ARCH_TARGET=aarch64-alpine-linux-musl ;; \
+ loongarch64) TOOLCHAIN_ARCH=loongarch64-alpine-linux-musl ; TOOLCHAIN_ARCH_TARGET=loongarch64-alpine-linux-musl ;; \
+ riscv64) TOOLCHAIN_ARCH=riscv64-alpine-linux-musl ; TOOLCHAIN_ARCH_TARGET=riscv64-alpine-linux-musl ;; \
+ x86) TOOLCHAIN_ARCH=i586-alpine-linux-musl ; TOOLCHAIN_ARCH_TARGET=i586-alpine-linux-musl ;; \
+ x64) TOOLCHAIN_ARCH=x86_64-alpine-linux-musl ; TOOLCHAIN_ARCH_TARGET=x86_64-alpine-linux-musl ;; \
+ *) echo "Unsupported architecture: ${BUILD_ARCH}" && exit 1 ;; \
+ esac \
+ && echo "export TOOLCHAIN_ARCH=${TOOLCHAIN_ARCH}" > /etc/skia-env \
+ && echo "export TOOLCHAIN_ARCH_TARGET=${TOOLCHAIN_ARCH_TARGET}" >> /etc/skia-env
+
# Install the required packages
+ARG LLVM_VERSION=19
RUN apt-get update \
&& apt-get install -y \
- curl python3 git clang-19 lld-19 ninja-build xz-utils curl \
+ curl python3 git clang-${LLVM_VERSION} lld-${LLVM_VERSION} ninja-build xz-utils \
&& rm -rf /var/lib/apt/lists/*
# Install the cross-compilation musl toolchain
-ARG DISTRO_VERSION=3.17
-ARG TOOLCHAIN_ARCH_SHORT=armhf
+# First, obtain apk.static from https://gitlab.alpinelinux.org/alpine/apk-tools/-/releases/v2.12.14
ARG MACHINE_ARCH=x86_64
-ARG TARGET_MACHINE_ARCH=armhf
-
-# obtain apk.static from gitlab.alpinelinux.org/alpine/apk-tools/-/releases/v2.14.6
-# apk.static for loongarch64 can be download in http://dl-cdn.alpinelinux.org/alpine/v3.21/main/loongarch64/apk-tools-static-2.14.6-r3.apk.
-RUN APK_DIR="$(mktemp -d)" && \
- curl -SLO --create-dirs --output-dir "$APK_DIR" "https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic/v2.14.6/$MACHINE_ARCH/apk.static" && \
- chmod +x "$APK_DIR/apk.static" && \
- "$APK_DIR/apk.static" \
+RUN . /etc/skia-env \
+ && case "${BUILD_ARCH}" in \
+ arm) APK_ARCH=armv7 ;; \
+ arm64) APK_ARCH=aarch64 ;; \
+ loongarch64) APK_ARCH=loongarch64 ;; \
+ riscv64) APK_ARCH=riscv64 ;; \
+ x86) APK_ARCH=x86 ;; \
+ x64) APK_ARCH=x86_64 ;; \
+ *) echo "Unsupported architecture: ${BUILD_ARCH}" && exit 1 ;; \
+ esac \
+ && case "${BUILD_ARCH}" in \
+ loongarch64) DISTRO_VERSION=3.21 ;; \
+ riscv64) DISTRO_VERSION=3.20 ;; \
+ *) DISTRO_VERSION=3.17 ;; \
+ esac \
+ && APK_DIR="$(mktemp -d)" \
+ && curl -SLO --create-dirs --output-dir "$APK_DIR" "https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic/v2.12.14/$MACHINE_ARCH/apk.static" \
+ && chmod +x "$APK_DIR/apk.static" \
+ && "$APK_DIR/apk.static" \
-X "http://dl-cdn.alpinelinux.org/alpine/v$DISTRO_VERSION/main" \
-X "http://dl-cdn.alpinelinux.org/alpine/v$DISTRO_VERSION/community" \
- -U --allow-untrusted --root /alpine --arch "$TARGET_MACHINE_ARCH" --initdb add && \
- "$APK_DIR/apk.static" \
+ -U --allow-untrusted --root /alpine --arch "$APK_ARCH" --initdb add \
+ && "$APK_DIR/apk.static" \
-X "http://dl-cdn.alpinelinux.org/alpine/v$DISTRO_VERSION/main" \
-X "http://dl-cdn.alpinelinux.org/alpine/v$DISTRO_VERSION/community" \
- -U --allow-untrusted --root /alpine --arch "$TARGET_MACHINE_ARCH" --no-scripts \
+ -U --allow-untrusted --root /alpine --arch "$APK_ARCH" --no-scripts \
add fontconfig-dev build-base linux-headers
# Install the .NET SDK
ARG DOTNET_SDK_VERSION=8.0
-ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT 1
+ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
RUN curl https://dot.net/v1/dotnet-install.sh -L -o dotnet-install.sh \
&& bash dotnet-install.sh --channel ${DOTNET_SDK_VERSION} --install-dir /usr/share/dotnet --verbose \
&& ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet \
@@ -46,6 +70,10 @@ RUN curl https://dot.net/v1/dotnet-install.sh -L -o dotnet-install.sh \
&& dotnet help \
&& dotnet --info
-ENV CC=clang-19 CXX=clang++-19
+ENV CC=clang-${LLVM_VERSION} CXX=clang++-${LLVM_VERSION}
WORKDIR /work
+
+COPY ./startup.sh /
+RUN chmod +x /startup.sh
+ENTRYPOINT [ "/startup.sh" ]
From 5bc0ec74ae6507d9758313249affcd4e208e9aa9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 02:33:38 +0800
Subject: [PATCH 10/35] Update build-local.sh
---
scripts/Docker/alpine/clang-cross/build-local.sh | 15 +++++----------
1 file changed, 5 insertions(+), 10 deletions(-)
diff --git a/scripts/Docker/alpine/clang-cross/build-local.sh b/scripts/Docker/alpine/clang-cross/build-local.sh
index 4c73ad7ff9b..88ba2c33bf7 100755
--- a/scripts/Docker/alpine/clang-cross/build-local.sh
+++ b/scripts/Docker/alpine/clang-cross/build-local.sh
@@ -1,16 +1,11 @@
#!/usr/bin/env bash
set -ex
+# Parameters:
+# $1 - The target architecture to build for [ arm | arm64 | riscv64 | x86 | x64 | loongarch64 ]
+
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
-ARCH=$1
-ALPINE_VERSION=$3
-if [ -z "$ALPINE_VERSION" ]; then
- case $ARCH in
- loongarch64) ALPINE_VERSION=3.21 ;;
- riscv64) ALPINE_VERSION=3.20 ;;
- *) ALPINE_VERSION=3.17 ;;
- esac
-fi
+ARCH="${1:-arm}"
-$DIR/../../_clang-cross-common.sh "$DIR" "$ARCH" "$2" "$ALPINE_VERSION" "musl" "-alpine"
+$DIR/../../_clang-cross-common.sh "$DIR" "$ARCH" "musl" "alpine"
From 7812abde492969e88cb906450544f2e069135e3e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 02:36:18 +0800
Subject: [PATCH 11/35] Update build-local.sh
---
.../Docker/debian/clang-cross/build-local.sh | 18 +++++++-----------
1 file changed, 7 insertions(+), 11 deletions(-)
diff --git a/scripts/Docker/debian/clang-cross/build-local.sh b/scripts/Docker/debian/clang-cross/build-local.sh
index c7983a87e02..caeb8c661cb 100644
--- a/scripts/Docker/debian/clang-cross/build-local.sh
+++ b/scripts/Docker/debian/clang-cross/build-local.sh
@@ -1,17 +1,13 @@
#!/usr/bin/env bash
set -ex
+# Parameters:
+# $1 - The target architecture to build for [ arm | arm64 | riscv64 | x86 | x64 | loongarch64 ]
+# $2 - The Debian distro version [ 10 | 12 | 13(Loongnix 25) ]
+
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
-# the target architecture to build for
-ARCH=$1
-DEBIAN_VERSION=$3
-if [ -z "$DEBIAN_VERSION" ]; then
- case $ARCH in
- loongarch64) DEBIAN_VERSION=13 ;;
- riscv64) DEBIAN_VERSION=12 ;;
- *) DEBIAN_VERSION=11 ;;
- esac
-fi
+ARCH="${1:-arm}"
+DEBIAN_VERSION="${2:-10}"
-$DIR/../../_clang-cross-common.sh "$DIR/$DEBIAN_VERSION" "$ARCH" "$2" "$DEBIAN_VERSION" "gnu"
+$DIR/../../_clang-cross-common.sh "$DIR/$DEBIAN_VERSION" "$ARCH" "gnu"
From 28b79a06f53f0678354cba1b0737941af2928b91 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 02:41:33 +0800
Subject: [PATCH 12/35] azure-templates-stages.yml:updated to add loong
---
scripts/azure-templates-stages.yml | 68 ++++++------------------------
1 file changed, 13 insertions(+), 55 deletions(-)
diff --git a/scripts/azure-templates-stages.yml b/scripts/azure-templates-stages.yml
index c409a58f49d..f73e3424b66 100644
--- a/scripts/azure-templates-stages.yml
+++ b/scripts/azure-templates-stages.yml
@@ -362,39 +362,15 @@ stages:
matrix:
- arch: x64
docker: scripts/Docker/debian/amd64
- - arch: x64
- variant: alpine
- docker: scripts/Docker/alpine/amd64
- - arch: arm
- docker: scripts/Docker/debian/clang-cross/11
- target: externals-linux-clang-cross
- - arch: arm64
- docker: scripts/Docker/debian/clang-cross/11
- dockerArgs: --build-arg TOOLCHAIN_ARCH=aarch64-linux-gnu --build-arg TOOLCHAIN_ARCH_SHORT=arm64
- target: externals-linux-clang-cross
- - arch: riscv64
- docker: scripts/Docker/debian/clang-cross/12
- dockerArgs: --build-arg TOOLCHAIN_ARCH=riscv64-linux-gnu --build-arg TOOLCHAIN_ARCH_SHORT=riscv64 --build-arg DISTRO_VERSION=12
- target: externals-linux-clang-cross
- - arch: arm64
- variant: alpine
- docker: scripts/Docker/alpine/clang-cross
- dockerArgs: --build-arg TOOLCHAIN_ARCH=aarch64-alpine-linux-musl --build-arg TOOLCHAIN_ARCH_SHORT=arm64 --build-arg TARGET_MACHINE_ARCH=aarch64
- target: externals-linux-clang-cross
- - arch: riscv64
- variant: alpine
- docker: scripts/Docker/alpine/clang-cross
- dockerArgs: --build-arg TOOLCHAIN_ARCH=riscv64-alpine-linux-musl --build-arg TOOLCHAIN_ARCH_SHORT=riscv64 --build-arg TARGET_MACHINE_ARCH=riscv64 --build-arg DISTRO_VERSION=3.20
- target: externals-linux-clang-cross
- - arch: loongarch64
- docker: scripts/Docker/debian/clang-cross/13
- dockerArgs: --build-arg TOOLCHAIN_ARCH=loongarch64-linux-gnu --build-arg TOOLCHAIN_ARCH_SHORT=loong64
- target: externals-linux-clang-cross
- - arch: loongarch64
- variant: alpine
- docker: scripts/Docker/alpine/clang-cross
- dockerArgs: --build-arg TOOLCHAIN_ARCH=loongarch64-alpine-linux-musl --build-arg TOOLCHAIN_ARCH_SHORT=loong64 --build-arg TARGET_MACHINE_ARCH=loongarch64 --build-arg DISTRO_VERSION=3.21
- target: externals-linux-clang-cross
+ - ${{ each arch in split('arm,arm64,x86,riscv64,loongarch64,loong64', ',') }}: # separate x64 as it fails when cross-compiling
+ - arch: ${{ arch }}
+ docker: scripts/Docker/debian/clang-cross/10
+ target: externals-linux-clang-cross
+ - ${{ each arch in split('arm,arm64,x64,riscv64,loongarch64,loong64', ',') }}: # removed x86 as it is having issues building
+ - arch: ${{ arch }}
+ variant: alpine
+ docker: scripts/Docker/alpine/clang-cross
+ target: externals-linux-clang-cross
- template: /scripts/azure-templates-bootstrapper.yml@self # Build Native Tizen (Linux)
parameters:
name: native_tizen_linux
@@ -541,6 +517,8 @@ stages:
- name: native_linux_arm64_alpine_nodeps_linux
- name: native_linux_arm64_linux
- name: native_linux_arm64_nodeps_linux
+ - name: native_linux_arm_alpine_linux
+ - name: native_linux_arm_alpine_nodeps_linux
- name: native_linux_arm_linux
- name: native_linux_arm_nodeps_linux
- name: native_linux_loongarch64_alpine_linux
@@ -555,6 +533,8 @@ stages:
- name: native_linux_x64_alpine_nodeps_linux
- name: native_linux_x64_linux
- name: native_linux_x64_nodeps_linux
+ - name: native_linux_x86_linux
+ - name: native_linux_x86_nodeps_linux
# WASM
- name: native_wasm_2_0_23_linux
- name: native_wasm_2_0_6_linux
@@ -585,26 +565,6 @@ stages:
buildPipelineType: ${{ parameters.buildPipelineType }}
buildAgent: ${{ parameters.buildAgentHost }}
requiredArtifacts:
- # Linux
- - name: native_linux_arm64_linux
- - name: native_linux_arm64_nodeps_linux
- - name: native_linux_arm64_alpine_linux
- - name: native_linux_arm64_alpine_nodeps_linux
- - name: native_linux_arm_linux
- - name: native_linux_arm_nodeps_linux
- - name: native_linux_loongarch64_alpine_linux
- - name: native_linux_loongarch64_alpine_nodeps_linux
- - name: native_linux_loongarch64_linux
- - name: native_linux_loongarch64_nodeps_linux
- - name: native_linux_riscv64_alpine_linux
- - name: native_linux_riscv64_alpine_nodeps_linux
- - name: native_linux_riscv64_linux
- - name: native_linux_riscv64_nodeps_linux
- - name: native_linux_x64_alpine_linux
- - name: native_linux_x64_alpine_nodeps_linux
- - name: native_linux_x64_linux
- - name: native_linux_x64_nodeps_linux
- # WASM
- name: native_wasm_2_0_23_linux
- name: native_wasm_2_0_6_linux
- name: native_wasm_3_1_12_linux
@@ -927,8 +887,6 @@ stages:
requiredArtifacts:
- name: native_linux_x64_linux
- name: native_linux_arm64_linux
- - name: native_linux_riscv64_linux
- - name: native_linux_loongarch64_linux
postBuildSteps:
- task: PublishTestResults@2
displayName: Publish the .NET Core test results
From 2d786bef2412dd99bbaacbb59489222cdda8083e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 02:59:58 +0800
Subject: [PATCH 13/35] azure-templates-stages.yml:LoongArch64
---
scripts/azure-templates-stages.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/scripts/azure-templates-stages.yml b/scripts/azure-templates-stages.yml
index f73e3424b66..5e8a32cc7dd 100644
--- a/scripts/azure-templates-stages.yml
+++ b/scripts/azure-templates-stages.yml
@@ -362,11 +362,11 @@ stages:
matrix:
- arch: x64
docker: scripts/Docker/debian/amd64
- - ${{ each arch in split('arm,arm64,x86,riscv64,loongarch64,loong64', ',') }}: # separate x64 as it fails when cross-compiling
+ - ${{ each arch in split('arm,arm64,x86,riscv64,loongarch64', ',') }}: # separate x64 as it fails when cross-compiling
- arch: ${{ arch }}
docker: scripts/Docker/debian/clang-cross/10
target: externals-linux-clang-cross
- - ${{ each arch in split('arm,arm64,x64,riscv64,loongarch64,loong64', ',') }}: # removed x86 as it is having issues building
+ - ${{ each arch in split('arm,arm64,x64,riscv64,loongarch64', ',') }}: # removed x86 as it is having issues building
- arch: ${{ arch }}
variant: alpine
docker: scripts/Docker/alpine/clang-cross
From 6a4e95e77c737813dffb301b7ddc770362bef913 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 11:41:06 +0800
Subject: [PATCH 14/35] Dockerfile:Changed to trixie docker and back to gcc13
---
.../Docker/debian/clang-cross/13/Dockerfile | 81 ++++++++++++-------
1 file changed, 51 insertions(+), 30 deletions(-)
diff --git a/scripts/Docker/debian/clang-cross/13/Dockerfile b/scripts/Docker/debian/clang-cross/13/Dockerfile
index 76a1789269e..52946f46f68 100644
--- a/scripts/Docker/debian/clang-cross/13/Dockerfile
+++ b/scripts/Docker/debian/clang-cross/13/Dockerfile
@@ -1,25 +1,40 @@
# Arguments:
# IMAGE_ARCH - the architecture of the image [ amd64 | arm64v8 | riscv64 | loongarch64 ]
-# DOTNET_SDK_VERSION - the version of dotnet for the Cake script [ 9.0 | * ]
-# TOOLCHAIN_VERSION - the version of the GCC toolchain [ 14 | * ]
+# DOTNET_SDK_VERSION - the version of dotnet for the Cake script [ 8.0 | * ]
+# LLVM_VERSION - the version of the LLVM compiler [ 19 | * ]
+# TOOLCHAIN_VERSION - the version of the GCC toolchain [ 13 | * ]
# TOOLCHAIN_ARCH - the architecture of the GCC toolchain [ arm-linux-gnueabihf | aarch64-linux-gnu | riscv64-linux-gnu | loongarch64-linux-gnu ]
-# TOOLCHAIN_ARCH_SHORT - the short form architecture of the GCC toolchain [ armhf | arm64 | loong64 ]
-# FONTCONFIG_VERSION - the exact version of libfontconfig1 to use [ 2.15.0-1 | * ]
+# TOOLCHAIN_ARCH_SHORT - the short form architecture of the GCC toolchain [ armhf | arm64 | riscv64 | loong64 ]
ARG IMAGE_ARCH=amd64
-FROM ${IMAGE_ARCH}/debian:12
+FROM ${IMAGE_ARCH}/debian:trixie
-# Install the required packages (needs to add ftp.debian.org source)
+# Set the architecture-specific variables based on the value of the BUILD_ARCH argument
+ARG BUILD_ARCH=arm64
+RUN case ${BUILD_ARCH} in \
+ arm) TOOLCHAIN_ARCH=arm-linux-gnueabihf ; TOOLCHAIN_ARCH_SHORT=armhf ; TOOLCHAIN_ARCH_TARGET=armv7a-linux-gnueabihf ;; \
+ arm64) TOOLCHAIN_ARCH=aarch64-linux-gnu ; TOOLCHAIN_ARCH_SHORT=arm64 ; TOOLCHAIN_ARCH_TARGET=aarch64-linux-gnu ;; \
+ loongarch64) TOOLCHAIN_ARCH=loongarch64-linux-gnu ; TOOLCHAIN_ARCH_SHORT=loong64 ; TOOLCHAIN_ARCH_TARGET=loongarch64-linux-gnu ;; \
+ riscv64) TOOLCHAIN_ARCH=riscv64-linux-gnu ; TOOLCHAIN_ARCH_SHORT=riscv64 ; TOOLCHAIN_ARCH_TARGET=riscv64-linux-gnu ;; \
+ x86) TOOLCHAIN_ARCH=i686-linux-gnu ; TOOLCHAIN_ARCH_SHORT=i386 ; TOOLCHAIN_ARCH_TARGET=i686-linux-gnu ;; \
+ x64) TOOLCHAIN_ARCH=x86-64-linux-gnu ; TOOLCHAIN_ARCH_SHORT=amd64 ; TOOLCHAIN_ARCH_TARGET=x86_64-linux-gnu ;; \
+ *) echo "Unsupported architecture: ${BUILD_ARCH}" && exit 1 ;; \
+ esac \
+ && echo "export TOOLCHAIN_ARCH=${TOOLCHAIN_ARCH}" > /etc/skia-env \
+ && echo "export TOOLCHAIN_ARCH_SHORT=${TOOLCHAIN_ARCH_SHORT}" >> /etc/skia-env \
+ && echo "export TOOLCHAIN_ARCH_TARGET=${TOOLCHAIN_ARCH_TARGET}" >> /etc/skia-env
+
+# Install the required packages
+ARG LLVM_VERSION=19
RUN apt-get update \
&& apt-get install -y \
- curl python3 git clang-19 ninja-build xz-utils \
+ curl python3 git clang-${LLVM_VERSION} ninja-build xz-utils \
&& rm -rf /var/lib/apt/lists/*
-# Install the cross-compilation GCC toolchain (loongarch64 use GCC cross ports)
-ARG TOOLCHAIN_VERSION=14
-ARG TOOLCHAIN_ARCH=loongarch64-linux-gnu
-ARG TOOLCHAIN_ARCH_SHORT=loong64
-RUN apt-get update \
+# Install the cross-compilation GCC toolchain
+ARG TOOLCHAIN_VERSION=13
+RUN . /etc/skia-env \
+ && apt-get update \
&& apt-get install -y \
libstdc++-${TOOLCHAIN_VERSION}-dev-${TOOLCHAIN_ARCH_SHORT}-cross \
libgcc-${TOOLCHAIN_VERSION}-dev-${TOOLCHAIN_ARCH_SHORT}-cross \
@@ -27,31 +42,33 @@ RUN apt-get update \
&& rm -rf /var/lib/apt/lists/*
# Make the script more flexible and use "current" instead of the actual version
-RUN ln -s /usr/${TOOLCHAIN_ARCH}/include/c++/${TOOLCHAIN_VERSION} /usr/${TOOLCHAIN_ARCH}/include/c++/current \
- && sed -i "s/\/usr\/${TOOLCHAIN_ARCH}\/lib\///g" /usr/${TOOLCHAIN_ARCH}/lib/libpthread.so || true \
+RUN . /etc/skia-env \
+ && TOOLCHAIN_ARCH=$(echo ${TOOLCHAIN_ARCH} | sed 's/x86-64/x86_64/g') \
+ && ln -s /usr/${TOOLCHAIN_ARCH}/include/c++/${TOOLCHAIN_VERSION} /usr/${TOOLCHAIN_ARCH}/include/c++/current \
+ && sed -i "s/\/usr\/${TOOLCHAIN_ARCH}\/lib\///g" /usr/${TOOLCHAIN_ARCH}/lib/libpthread.so \
&& sed -i "s/\/usr\/${TOOLCHAIN_ARCH}\/lib\///g" /usr/${TOOLCHAIN_ARCH}/lib/libc.so
# Install the cross-compilation skia build dependencies (fontconfig)
-ARG FONTCONFIG_VERSION=2.15.0-1.1
-RUN (mkdir -p /skia-utils/libfontconfig1-dev \
- && cd /skia-utils/libfontconfig1-dev \
- && curl https://pkg.loongnix.cn/loongnix/25/pool/main/f/fontconfig/libfontconfig-dev_${FONTCONFIG_VERSION}_${TOOLCHAIN_ARCH_SHORT}.deb -L -o libfontconfig1-dev.deb \
- && ar vx libfontconfig1-dev.deb \
+RUN . /etc/skia-env \
+ && mkdir -p /skia-utils/libfontconfig-dev \
+ && cd /skia-utils/libfontconfig-dev \
+ && APT_REPO=http://deb.debian.org/debian \
+ && case "${TOOLCHAIN_ARCH_SHORT}" in \
+ loong64) FC_VERSION=2.15.0-1.1 ; FC_PKG=libfontconfig-dev ; APT_REPO=https://pkg.loongnix.cn/loongnix/25 ;; \
+ riscv64) FC_VERSION=2.15.0-2.1 ; FC_PKG=libfontconfig-dev ;; \
+ *) FC_VERSION=2.13.1-2 ; FC_PKG=libfontconfig1-dev ;; \
+ esac \
+ && curl ${APT_REPO}/pool/main/f/fontconfig/${FC_PKG}_${FC_VERSION}_${TOOLCHAIN_ARCH_SHORT}.deb -L -o libfontconfig-dev.deb \
+ && ar vx libfontconfig-dev.deb \
&& tar -xJvf data.tar.xz \
- && rm libfontconfig1-dev.deb \
+ && rm libfontconfig-dev.deb \
+ && TOOLCHAIN_ARCH=$(echo ${TOOLCHAIN_ARCH} | sed 's/x86-64/x86_64/g') \
&& cp -R usr/lib/*/* /usr/${TOOLCHAIN_ARCH}/lib/ \
- && cp -R usr/include/* /usr/${TOOLCHAIN_ARCH}/include/ )
-RUN (mkdir -p /skia-utils/libfontconfig1 \
- && cd /skia-utils/libfontconfig1 \
- && curl https://pkg.loongnix.cn/loongnix/25/pool/main/f/fontconfig/libfontconfig1_${FONTCONFIG_VERSION}_${TOOLCHAIN_ARCH_SHORT}.deb -L -o libfontconfig1.deb \
- && ar vx libfontconfig1.deb \
- && tar -xJvf data.tar.xz \
- && rm libfontconfig1.deb \
- && cp -R usr/lib/*/* /usr/${TOOLCHAIN_ARCH}/lib/ )
+ && cp -R usr/include/* /usr/${TOOLCHAIN_ARCH}/include/
# Install the .NET SDK
ARG DOTNET_SDK_VERSION=8.0
-ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT 1
+ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
RUN curl https://dot.net/v1/dotnet-install.sh -L -o dotnet-install.sh \
&& bash dotnet-install.sh --channel ${DOTNET_SDK_VERSION} --install-dir /usr/share/dotnet --verbose \
&& ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet \
@@ -59,6 +76,10 @@ RUN curl https://dot.net/v1/dotnet-install.sh -L -o dotnet-install.sh \
&& dotnet help \
&& dotnet --info
-ENV CC=clang-19 CXX=clang++-19
+ENV CC=clang-${LLVM_VERSION} CXX=clang++-${LLVM_VERSION}
WORKDIR /work
+
+COPY ./startup.sh /
+RUN chmod +x /startup.sh
+ENTRYPOINT [ "/startup.sh" ]
From f5348994ce7c68346d60298bb9e148fb5bd0a870 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 11:47:31 +0800
Subject: [PATCH 15/35] build-local.sh:update instruction
---
scripts/Docker/debian/clang-cross/build-local.sh | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/scripts/Docker/debian/clang-cross/build-local.sh b/scripts/Docker/debian/clang-cross/build-local.sh
index caeb8c661cb..e4155cd9e66 100644
--- a/scripts/Docker/debian/clang-cross/build-local.sh
+++ b/scripts/Docker/debian/clang-cross/build-local.sh
@@ -3,7 +3,8 @@ set -ex
# Parameters:
# $1 - The target architecture to build for [ arm | arm64 | riscv64 | x86 | x64 | loongarch64 ]
-# $2 - The Debian distro version [ 10 | 12 | 13(Loongnix 25) ]
+# $2 - The Debian distro version [ 10 | 12 | 13 ]
+# LoongArch needs to get the packages from loongnix25
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
From a4c53a11604d52efb949ffbc88925edd187d4f3d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 11:52:01 +0800
Subject: [PATCH 16/35] azure-templates-stages.yml:Fix loongarch64 build
---
scripts/azure-templates-stages.yml | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/scripts/azure-templates-stages.yml b/scripts/azure-templates-stages.yml
index 5e8a32cc7dd..d5a5f5256f5 100644
--- a/scripts/azure-templates-stages.yml
+++ b/scripts/azure-templates-stages.yml
@@ -362,7 +362,10 @@ stages:
matrix:
- arch: x64
docker: scripts/Docker/debian/amd64
- - ${{ each arch in split('arm,arm64,x86,riscv64,loongarch64', ',') }}: # separate x64 as it fails when cross-compiling
+ - arch: loongarch64
+ docker: scripts/Docker/debian/clang-cross/13
+ target: externals-linux-clang-cross
+ - ${{ each arch in split('arm,arm64,x86,riscv64', ',') }}: # separate x64 as it fails when cross-compiling
- arch: ${{ arch }}
docker: scripts/Docker/debian/clang-cross/10
target: externals-linux-clang-cross
From cf0a58ad81ddcadc85cf33ed77e0cc817a9cf329 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 11:54:36 +0800
Subject: [PATCH 17/35] azure-templates-stages.yml:Fix loongarch64 build 2
---
scripts/azure-templates-stages.yml | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/scripts/azure-templates-stages.yml b/scripts/azure-templates-stages.yml
index d5a5f5256f5..2789cdbc096 100644
--- a/scripts/azure-templates-stages.yml
+++ b/scripts/azure-templates-stages.yml
@@ -365,11 +365,15 @@ stages:
- arch: loongarch64
docker: scripts/Docker/debian/clang-cross/13
target: externals-linux-clang-cross
+ - arch: loongarch64
+ variant: alpine
+ docker: scripts/Docker/alpine/clang-cross
+ target: externals-linux-clang-cross
- ${{ each arch in split('arm,arm64,x86,riscv64', ',') }}: # separate x64 as it fails when cross-compiling
- arch: ${{ arch }}
docker: scripts/Docker/debian/clang-cross/10
target: externals-linux-clang-cross
- - ${{ each arch in split('arm,arm64,x64,riscv64,loongarch64', ',') }}: # removed x86 as it is having issues building
+ - ${{ each arch in split('arm,arm64,x64,riscv64', ',') }}: # removed x86 as it is having issues building
- arch: ${{ arch }}
variant: alpine
docker: scripts/Docker/alpine/clang-cross
From 7f8dcd88a7119c35ab252391c83de081b14a9c50 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 12:02:20 +0800
Subject: [PATCH 18/35] Create startup.sh
---
scripts/Docker/debian/clang-cross/13/startup.sh | 6 ++++++
1 file changed, 6 insertions(+)
create mode 100644 scripts/Docker/debian/clang-cross/13/startup.sh
diff --git a/scripts/Docker/debian/clang-cross/13/startup.sh b/scripts/Docker/debian/clang-cross/13/startup.sh
new file mode 100644
index 00000000000..512bb431bf7
--- /dev/null
+++ b/scripts/Docker/debian/clang-cross/13/startup.sh
@@ -0,0 +1,6 @@
+#!/usr/bin/env bash
+set -e
+
+source /etc/skia-env
+
+exec "$@"
From 012f3ddf2388e2244b4757f0bf92af388eb1be36 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 13:12:04 +0800
Subject: [PATCH 19/35] Dockerfile:changes libpthread.so to libpthread.so.0
---
scripts/Docker/debian/clang-cross/13/Dockerfile | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/scripts/Docker/debian/clang-cross/13/Dockerfile b/scripts/Docker/debian/clang-cross/13/Dockerfile
index 52946f46f68..712adabcf10 100644
--- a/scripts/Docker/debian/clang-cross/13/Dockerfile
+++ b/scripts/Docker/debian/clang-cross/13/Dockerfile
@@ -42,13 +42,15 @@ RUN . /etc/skia-env \
&& rm -rf /var/lib/apt/lists/*
# Make the script more flexible and use "current" instead of the actual version
+# libpthread.so.0 for loong64 is in https://packages.debian.org/trixie/all/libc6-loong64-cross/filelist
RUN . /etc/skia-env \
&& TOOLCHAIN_ARCH=$(echo ${TOOLCHAIN_ARCH} | sed 's/x86-64/x86_64/g') \
&& ln -s /usr/${TOOLCHAIN_ARCH}/include/c++/${TOOLCHAIN_VERSION} /usr/${TOOLCHAIN_ARCH}/include/c++/current \
- && sed -i "s/\/usr\/${TOOLCHAIN_ARCH}\/lib\///g" /usr/${TOOLCHAIN_ARCH}/lib/libpthread.so \
+ && sed -i "s/\/usr\/${TOOLCHAIN_ARCH}\/lib\///g" /usr/${TOOLCHAIN_ARCH}/lib/libpthread.so.0 \
&& sed -i "s/\/usr\/${TOOLCHAIN_ARCH}\/lib\///g" /usr/${TOOLCHAIN_ARCH}/lib/libc.so
# Install the cross-compilation skia build dependencies (fontconfig)
+# In order to compat Loongnix 25, LoongArch APT_REPO use loongnix 25 mirrors.
RUN . /etc/skia-env \
&& mkdir -p /skia-utils/libfontconfig-dev \
&& cd /skia-utils/libfontconfig-dev \
From 4072be58417eaf109592f08deacecdb521287132 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 13:17:17 +0800
Subject: [PATCH 20/35] azure-templates-stages.yml:Revert because alpine
official support loong
---
scripts/azure-templates-stages.yml | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/scripts/azure-templates-stages.yml b/scripts/azure-templates-stages.yml
index 2789cdbc096..d5a5f5256f5 100644
--- a/scripts/azure-templates-stages.yml
+++ b/scripts/azure-templates-stages.yml
@@ -365,15 +365,11 @@ stages:
- arch: loongarch64
docker: scripts/Docker/debian/clang-cross/13
target: externals-linux-clang-cross
- - arch: loongarch64
- variant: alpine
- docker: scripts/Docker/alpine/clang-cross
- target: externals-linux-clang-cross
- ${{ each arch in split('arm,arm64,x86,riscv64', ',') }}: # separate x64 as it fails when cross-compiling
- arch: ${{ arch }}
docker: scripts/Docker/debian/clang-cross/10
target: externals-linux-clang-cross
- - ${{ each arch in split('arm,arm64,x64,riscv64', ',') }}: # removed x86 as it is having issues building
+ - ${{ each arch in split('arm,arm64,x64,riscv64,loongarch64', ',') }}: # removed x86 as it is having issues building
- arch: ${{ arch }}
variant: alpine
docker: scripts/Docker/alpine/clang-cross
From 49bcb75650b952d8f1dbe1f3ceeb0e2a0f50eaea Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 14:16:30 +0800
Subject: [PATCH 21/35] Dockerfile:Back to GCC 14 to compat libc6-loong64-cross
---
scripts/Docker/debian/clang-cross/13/Dockerfile | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/scripts/Docker/debian/clang-cross/13/Dockerfile b/scripts/Docker/debian/clang-cross/13/Dockerfile
index 712adabcf10..c74acf954c8 100644
--- a/scripts/Docker/debian/clang-cross/13/Dockerfile
+++ b/scripts/Docker/debian/clang-cross/13/Dockerfile
@@ -2,7 +2,7 @@
# IMAGE_ARCH - the architecture of the image [ amd64 | arm64v8 | riscv64 | loongarch64 ]
# DOTNET_SDK_VERSION - the version of dotnet for the Cake script [ 8.0 | * ]
# LLVM_VERSION - the version of the LLVM compiler [ 19 | * ]
-# TOOLCHAIN_VERSION - the version of the GCC toolchain [ 13 | * ]
+# TOOLCHAIN_VERSION - the version of the GCC toolchain [ 14 | * ]
# TOOLCHAIN_ARCH - the architecture of the GCC toolchain [ arm-linux-gnueabihf | aarch64-linux-gnu | riscv64-linux-gnu | loongarch64-linux-gnu ]
# TOOLCHAIN_ARCH_SHORT - the short form architecture of the GCC toolchain [ armhf | arm64 | riscv64 | loong64 ]
@@ -32,17 +32,18 @@ RUN apt-get update \
&& rm -rf /var/lib/apt/lists/*
# Install the cross-compilation GCC toolchain
-ARG TOOLCHAIN_VERSION=13
+ARG TOOLCHAIN_VERSION=14
RUN . /etc/skia-env \
&& apt-get update \
&& apt-get install -y \
+ libc6-dev-${TOOLCHAIN_ARCH_SHORT}-cross \
libstdc++-${TOOLCHAIN_VERSION}-dev-${TOOLCHAIN_ARCH_SHORT}-cross \
libgcc-${TOOLCHAIN_VERSION}-dev-${TOOLCHAIN_ARCH_SHORT}-cross \
binutils-${TOOLCHAIN_ARCH} \
&& rm -rf /var/lib/apt/lists/*
# Make the script more flexible and use "current" instead of the actual version
-# libpthread.so.0 for loong64 is in https://packages.debian.org/trixie/all/libc6-loong64-cross/filelist
+# libpthread.so.0 for loong64 is in https://packages.debian.org/trixie/all/libc6-loong64-cross/filelist that use GCC 14 and Glibc 2.41 to programmed
RUN . /etc/skia-env \
&& TOOLCHAIN_ARCH=$(echo ${TOOLCHAIN_ARCH} | sed 's/x86-64/x86_64/g') \
&& ln -s /usr/${TOOLCHAIN_ARCH}/include/c++/${TOOLCHAIN_VERSION} /usr/${TOOLCHAIN_ARCH}/include/c++/current \
From 2abe60c5870f52fdddcb51ebb91f160e9c0493e7 Mon Sep 17 00:00:00 2001
From: Matthew Leibowitz
Date: Mon, 24 Mar 2025 13:38:53 +0400
Subject: [PATCH 22/35] Update scripts/azure-templates-stages.yml
---
scripts/azure-templates-stages.yml | 1 +
1 file changed, 1 insertion(+)
diff --git a/scripts/azure-templates-stages.yml b/scripts/azure-templates-stages.yml
index d5a5f5256f5..c34c14af3ec 100644
--- a/scripts/azure-templates-stages.yml
+++ b/scripts/azure-templates-stages.yml
@@ -365,6 +365,7 @@ stages:
- arch: loongarch64
docker: scripts/Docker/debian/clang-cross/13
target: externals-linux-clang-cross
+ additionalArgs: --verifyGlibcMax=2.36
- ${{ each arch in split('arm,arm64,x86,riscv64', ',') }}: # separate x64 as it fails when cross-compiling
- arch: ${{ arch }}
docker: scripts/Docker/debian/clang-cross/10
From 7c128961ae952d3ab3711c9f72c06a6bef77e97e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 18:04:07 +0800
Subject: [PATCH 23/35]
azure-templates-stages.yml:https://packages.debian.org/trixie/binutils-loongarch64-linux-gnu
needs glibc at least 2.38
---
scripts/azure-templates-stages.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/azure-templates-stages.yml b/scripts/azure-templates-stages.yml
index c34c14af3ec..8a47256c53c 100644
--- a/scripts/azure-templates-stages.yml
+++ b/scripts/azure-templates-stages.yml
@@ -365,7 +365,7 @@ stages:
- arch: loongarch64
docker: scripts/Docker/debian/clang-cross/13
target: externals-linux-clang-cross
- additionalArgs: --verifyGlibcMax=2.36
+ additionalArgs: --verifyGlibcMax=2.38
- ${{ each arch in split('arm,arm64,x86,riscv64', ',') }}: # separate x64 as it fails when cross-compiling
- arch: ${{ arch }}
docker: scripts/Docker/debian/clang-cross/10
From 73b62c71883b79881b47cc3643b9cfc752fc2d4a Mon Sep 17 00:00:00 2001
From: Matthew Leibowitz
Date: Mon, 24 Mar 2025 15:39:43 +0400
Subject: [PATCH 24/35] Update scripts/Docker/debian/clang-cross/13/Dockerfile
---
scripts/Docker/debian/clang-cross/13/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/Docker/debian/clang-cross/13/Dockerfile b/scripts/Docker/debian/clang-cross/13/Dockerfile
index c74acf954c8..82117ac81ca 100644
--- a/scripts/Docker/debian/clang-cross/13/Dockerfile
+++ b/scripts/Docker/debian/clang-cross/13/Dockerfile
@@ -72,7 +72,7 @@ RUN . /etc/skia-env \
# Install the .NET SDK
ARG DOTNET_SDK_VERSION=8.0
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
-RUN curl https://dot.net/v1/dotnet-install.sh -L -o dotnet-install.sh \
+RUN curl https://builds.dotnet.microsoft.com/dotnet/scripts/v1/dotnet-install.sh -L -o dotnet-install.sh \
&& bash dotnet-install.sh --channel ${DOTNET_SDK_VERSION} --install-dir /usr/share/dotnet --verbose \
&& ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet \
&& rm dotnet-install.sh \
From bab37abda3a52a6424ceb0e5a2b855d1a712bcb2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 20:49:43 +0800
Subject: [PATCH 25/35] Create deepin 23 Dockerfile for backup purposes
---
.../Docker/deepin/clang-cross/23/Dockerfile | 85 +++++++++++++++++++
1 file changed, 85 insertions(+)
create mode 100644 scripts/Docker/deepin/clang-cross/23/Dockerfile
diff --git a/scripts/Docker/deepin/clang-cross/23/Dockerfile b/scripts/Docker/deepin/clang-cross/23/Dockerfile
new file mode 100644
index 00000000000..d204c51d1bd
--- /dev/null
+++ b/scripts/Docker/deepin/clang-cross/23/Dockerfile
@@ -0,0 +1,85 @@
+# Arguments:
+# IMAGE_ARCH - the architecture of the image [ amd64 | arm64v8 | riscv64 | loongarch64 ]
+# DOTNET_SDK_VERSION - the version of dotnet for the Cake script [ 8.0 | * ]
+# LLVM_VERSION - the version of the LLVM compiler [ 19 | * ]
+# TOOLCHAIN_VERSION - the version of the GCC toolchain [ 12 | * ]
+# TOOLCHAIN_ARCH - the architecture of the GCC toolchain [ arm-linux-gnueabihf | aarch64-linux-gnu | riscv64-linux-gnu | loongarch64-linux-gnu ]
+# TOOLCHAIN_ARCH_SHORT - the short form architecture of the GCC toolchain [ armhf | arm64 | riscv64 | loong64 ]
+
+ARG IMAGE_ARCH=amd64
+FROM linuxdeepin/deepin:23
+
+# Set the architecture-specific variables based on the value of the BUILD_ARCH argument
+ARG BUILD_ARCH=arm64
+RUN case ${BUILD_ARCH} in \
+ arm) TOOLCHAIN_ARCH=arm-linux-gnueabihf ; TOOLCHAIN_ARCH_SHORT=armhf ; TOOLCHAIN_ARCH_TARGET=armv7a-linux-gnueabihf ;; \
+ arm64) TOOLCHAIN_ARCH=aarch64-linux-gnu ; TOOLCHAIN_ARCH_SHORT=arm64 ; TOOLCHAIN_ARCH_TARGET=aarch64-linux-gnu ;; \
+ loongarch64) TOOLCHAIN_ARCH=loongarch64-linux-gnu ; TOOLCHAIN_ARCH_SHORT=loong64 ; TOOLCHAIN_ARCH_TARGET=loongarch64-linux-gnu ;; \
+ riscv64) TOOLCHAIN_ARCH=riscv64-linux-gnu ; TOOLCHAIN_ARCH_SHORT=riscv64 ; TOOLCHAIN_ARCH_TARGET=riscv64-linux-gnu ;; \
+ x86) TOOLCHAIN_ARCH=i686-linux-gnu ; TOOLCHAIN_ARCH_SHORT=i386 ; TOOLCHAIN_ARCH_TARGET=i686-linux-gnu ;; \
+ x64) TOOLCHAIN_ARCH=x86-64-linux-gnu ; TOOLCHAIN_ARCH_SHORT=amd64 ; TOOLCHAIN_ARCH_TARGET=x86_64-linux-gnu ;; \
+ *) echo "Unsupported architecture: ${BUILD_ARCH}" && exit 1 ;; \
+ esac \
+ && echo "export TOOLCHAIN_ARCH=${TOOLCHAIN_ARCH}" > /etc/skia-env \
+ && echo "export TOOLCHAIN_ARCH_SHORT=${TOOLCHAIN_ARCH_SHORT}" >> /etc/skia-env \
+ && echo "export TOOLCHAIN_ARCH_TARGET=${TOOLCHAIN_ARCH_TARGET}" >> /etc/skia-env
+
+# Install the required packages
+ARG LLVM_VERSION=19
+RUN apt-get update \
+ && apt-get install -y \
+ curl python3 git clang-${LLVM_VERSION} ninja-build xz-utils \
+ && rm -rf /var/lib/apt/lists/*
+
+# Install the cross-compilation GCC toolchain
+ARG TOOLCHAIN_VERSION=12
+RUN . /etc/skia-env \
+ && apt-get update \
+ && apt-get install -y \
+ libc6-dev-${TOOLCHAIN_ARCH_SHORT}-cross \
+ libstdc++-${TOOLCHAIN_VERSION}-dev-${TOOLCHAIN_ARCH_SHORT}-cross \
+ libgcc-${TOOLCHAIN_VERSION}-dev-${TOOLCHAIN_ARCH_SHORT}-cross \
+ binutils-${TOOLCHAIN_ARCH} \
+ && rm -rf /var/lib/apt/lists/*
+
+# Make the script more flexible and use "current" instead of the actual version
+# libpthread.so.0 for loong64 is in https://ci.deepin.com/repo/deepin/deepin-community/stable/pool/main/c/cross-toolchain-base
+RUN . /etc/skia-env \
+ && TOOLCHAIN_ARCH=$(echo ${TOOLCHAIN_ARCH} | sed 's/x86-64/x86_64/g') \
+ && ln -s /usr/${TOOLCHAIN_ARCH}/include/c++/${TOOLCHAIN_VERSION} /usr/${TOOLCHAIN_ARCH}/include/c++/current \
+ && sed -i "s/\/usr\/${TOOLCHAIN_ARCH}\/lib\///g" /usr/${TOOLCHAIN_ARCH}/lib/libpthread.so.0 \
+ && sed -i "s/\/usr\/${TOOLCHAIN_ARCH}\/lib\///g" /usr/${TOOLCHAIN_ARCH}/lib/libc.so
+
+# Install the cross-compilation skia build dependencies (fontconfig)
+# In https://ci.deepin.com/repo/deepin/deepin-community/stable/pool/main/f/fontconfig
+RUN . /etc/skia-env \
+ && mkdir -p /skia-utils/libfontconfig-dev \
+ && cd /skia-utils/libfontconfig-dev \
+ && APT_REPO=http://deb.debian.org/debian \
+ && FC_VERSION=2.14.2-6
+ && FC_PKG=libfontconfig-dev
+ && curl https://ci.deepin.com/repo/deepin/deepin-community/stable/pool/main/f/fontconfig/${FC_PKG}_${FC_VERSION}_${TOOLCHAIN_ARCH_SHORT}.deb -L -o libfontconfig-dev.deb \
+ && ar vx libfontconfig-dev.deb \
+ && tar -xJvf data.tar.xz \
+ && rm libfontconfig-dev.deb \
+ && TOOLCHAIN_ARCH=$(echo ${TOOLCHAIN_ARCH} | sed 's/x86-64/x86_64/g') \
+ && cp -R usr/lib/*/* /usr/${TOOLCHAIN_ARCH}/lib/ \
+ && cp -R usr/include/* /usr/${TOOLCHAIN_ARCH}/include/
+
+# Install the .NET SDK
+ARG DOTNET_SDK_VERSION=8.0
+ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
+RUN curl https://builds.dotnet.microsoft.com/dotnet/scripts/v1/dotnet-install.sh -L -o dotnet-install.sh \
+ && bash dotnet-install.sh --channel ${DOTNET_SDK_VERSION} --install-dir /usr/share/dotnet --verbose \
+ && ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet \
+ && rm dotnet-install.sh \
+ && dotnet help \
+ && dotnet --info
+
+ENV CC=clang-${LLVM_VERSION} CXX=clang++-${LLVM_VERSION}
+
+WORKDIR /work
+
+COPY ./startup.sh /
+RUN chmod +x /startup.sh
+ENTRYPOINT [ "/startup.sh" ]
From 0b5c745a396d2c5786fbde8dce2cdb9b63b1a85e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 20:53:49 +0800
Subject: [PATCH 26/35] Dockerfile:Use stable version LLVM 18
---
scripts/Docker/deepin/clang-cross/23/Dockerfile | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/scripts/Docker/deepin/clang-cross/23/Dockerfile b/scripts/Docker/deepin/clang-cross/23/Dockerfile
index d204c51d1bd..3f342e9572b 100644
--- a/scripts/Docker/deepin/clang-cross/23/Dockerfile
+++ b/scripts/Docker/deepin/clang-cross/23/Dockerfile
@@ -1,7 +1,7 @@
# Arguments:
# IMAGE_ARCH - the architecture of the image [ amd64 | arm64v8 | riscv64 | loongarch64 ]
# DOTNET_SDK_VERSION - the version of dotnet for the Cake script [ 8.0 | * ]
-# LLVM_VERSION - the version of the LLVM compiler [ 19 | * ]
+# LLVM_VERSION - the version of the LLVM compiler [ 18 | * ]
# TOOLCHAIN_VERSION - the version of the GCC toolchain [ 12 | * ]
# TOOLCHAIN_ARCH - the architecture of the GCC toolchain [ arm-linux-gnueabihf | aarch64-linux-gnu | riscv64-linux-gnu | loongarch64-linux-gnu ]
# TOOLCHAIN_ARCH_SHORT - the short form architecture of the GCC toolchain [ armhf | arm64 | riscv64 | loong64 ]
@@ -25,7 +25,7 @@ RUN case ${BUILD_ARCH} in \
&& echo "export TOOLCHAIN_ARCH_TARGET=${TOOLCHAIN_ARCH_TARGET}" >> /etc/skia-env
# Install the required packages
-ARG LLVM_VERSION=19
+ARG LLVM_VERSION=18
RUN apt-get update \
&& apt-get install -y \
curl python3 git clang-${LLVM_VERSION} ninja-build xz-utils \
From 7ea22af214aac5a1200d16259788ae8064afa537 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 21:12:58 +0800
Subject: [PATCH 27/35] Create startup.sh
---
scripts/Docker/deepin/clang-cross/23/startup.sh | 6 ++++++
1 file changed, 6 insertions(+)
create mode 100644 scripts/Docker/deepin/clang-cross/23/startup.sh
diff --git a/scripts/Docker/deepin/clang-cross/23/startup.sh b/scripts/Docker/deepin/clang-cross/23/startup.sh
new file mode 100644
index 00000000000..512bb431bf7
--- /dev/null
+++ b/scripts/Docker/deepin/clang-cross/23/startup.sh
@@ -0,0 +1,6 @@
+#!/usr/bin/env bash
+set -e
+
+source /etc/skia-env
+
+exec "$@"
From 3eaea334e6195c5db7c55d8ad0b021ab065e8b71 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 21:14:22 +0800
Subject: [PATCH 28/35] Create .dockerignore
---
scripts/Docker/deepin/clang-cross/.dockerignore | 1 +
1 file changed, 1 insertion(+)
create mode 100644 scripts/Docker/deepin/clang-cross/.dockerignore
diff --git a/scripts/Docker/deepin/clang-cross/.dockerignore b/scripts/Docker/deepin/clang-cross/.dockerignore
new file mode 100644
index 00000000000..3a09fc21d8d
--- /dev/null
+++ b/scripts/Docker/deepin/clang-cross/.dockerignore
@@ -0,0 +1 @@
+build-local.sh
From 43e52aa394fe516fe4f0855afd503cfca10eca5b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 21:17:02 +0800
Subject: [PATCH 29/35] Create Deepin 23 build-local.sh
---
scripts/Docker/deepin/clang-cross/build-local.sh | 13 +++++++++++++
1 file changed, 13 insertions(+)
create mode 100644 scripts/Docker/deepin/clang-cross/build-local.sh
diff --git a/scripts/Docker/deepin/clang-cross/build-local.sh b/scripts/Docker/deepin/clang-cross/build-local.sh
new file mode 100644
index 00000000000..48b9d0ebbea
--- /dev/null
+++ b/scripts/Docker/deepin/clang-cross/build-local.sh
@@ -0,0 +1,13 @@
+#!/usr/bin/env bash
+set -ex
+
+# Parameters:
+# $1 - The target architecture to build for [ arm | arm64 | riscv64 | x86 | x64 | loongarch64 ]
+# $2 - The Deepin distro version [ 23 ]
+
+DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
+
+ARCH="${1:-arm}"
+DEEPIN_VERSION="${2:-23}"
+
+$DIR/../../_clang-cross-common.sh "$DIR/$DEEPIN_VERSION" "$ARCH" "gnu"
From eed9a941ddcdabb4941bafc53d1d0eeaf9760b9f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 21:20:04 +0800
Subject: [PATCH 30/35] azure-templates-stages.yml:Try to use deepin 23 to
build
---
scripts/azure-templates-stages.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/azure-templates-stages.yml b/scripts/azure-templates-stages.yml
index 8a47256c53c..18a4c4f5532 100644
--- a/scripts/azure-templates-stages.yml
+++ b/scripts/azure-templates-stages.yml
@@ -363,7 +363,7 @@ stages:
- arch: x64
docker: scripts/Docker/debian/amd64
- arch: loongarch64
- docker: scripts/Docker/debian/clang-cross/13
+ docker: scripts/Docker/deepin/clang-cross/23
target: externals-linux-clang-cross
additionalArgs: --verifyGlibcMax=2.38
- ${{ each arch in split('arm,arm64,x86,riscv64', ',') }}: # separate x64 as it fails when cross-compiling
From df36e4340dbc44ec32f26e9e2345ce36ad3b718d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 21:57:54 +0800
Subject: [PATCH 31/35] azure-templates-stages.yml:Revert to debian trixie
---
scripts/azure-templates-stages.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/azure-templates-stages.yml b/scripts/azure-templates-stages.yml
index 18a4c4f5532..8a47256c53c 100644
--- a/scripts/azure-templates-stages.yml
+++ b/scripts/azure-templates-stages.yml
@@ -363,7 +363,7 @@ stages:
- arch: x64
docker: scripts/Docker/debian/amd64
- arch: loongarch64
- docker: scripts/Docker/deepin/clang-cross/23
+ docker: scripts/Docker/debian/clang-cross/13
target: externals-linux-clang-cross
additionalArgs: --verifyGlibcMax=2.38
- ${{ each arch in split('arm,arm64,x86,riscv64', ',') }}: # separate x64 as it fails when cross-compiling
From 281389fda085e4da5d09a2722fe9b97aa2fe987e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 22:01:12 +0800
Subject: [PATCH 32/35] Delete scripts/Docker/deepin/clang-cross/23/Dockerfile
---
.../Docker/deepin/clang-cross/23/Dockerfile | 85 -------------------
1 file changed, 85 deletions(-)
delete mode 100644 scripts/Docker/deepin/clang-cross/23/Dockerfile
diff --git a/scripts/Docker/deepin/clang-cross/23/Dockerfile b/scripts/Docker/deepin/clang-cross/23/Dockerfile
deleted file mode 100644
index 3f342e9572b..00000000000
--- a/scripts/Docker/deepin/clang-cross/23/Dockerfile
+++ /dev/null
@@ -1,85 +0,0 @@
-# Arguments:
-# IMAGE_ARCH - the architecture of the image [ amd64 | arm64v8 | riscv64 | loongarch64 ]
-# DOTNET_SDK_VERSION - the version of dotnet for the Cake script [ 8.0 | * ]
-# LLVM_VERSION - the version of the LLVM compiler [ 18 | * ]
-# TOOLCHAIN_VERSION - the version of the GCC toolchain [ 12 | * ]
-# TOOLCHAIN_ARCH - the architecture of the GCC toolchain [ arm-linux-gnueabihf | aarch64-linux-gnu | riscv64-linux-gnu | loongarch64-linux-gnu ]
-# TOOLCHAIN_ARCH_SHORT - the short form architecture of the GCC toolchain [ armhf | arm64 | riscv64 | loong64 ]
-
-ARG IMAGE_ARCH=amd64
-FROM linuxdeepin/deepin:23
-
-# Set the architecture-specific variables based on the value of the BUILD_ARCH argument
-ARG BUILD_ARCH=arm64
-RUN case ${BUILD_ARCH} in \
- arm) TOOLCHAIN_ARCH=arm-linux-gnueabihf ; TOOLCHAIN_ARCH_SHORT=armhf ; TOOLCHAIN_ARCH_TARGET=armv7a-linux-gnueabihf ;; \
- arm64) TOOLCHAIN_ARCH=aarch64-linux-gnu ; TOOLCHAIN_ARCH_SHORT=arm64 ; TOOLCHAIN_ARCH_TARGET=aarch64-linux-gnu ;; \
- loongarch64) TOOLCHAIN_ARCH=loongarch64-linux-gnu ; TOOLCHAIN_ARCH_SHORT=loong64 ; TOOLCHAIN_ARCH_TARGET=loongarch64-linux-gnu ;; \
- riscv64) TOOLCHAIN_ARCH=riscv64-linux-gnu ; TOOLCHAIN_ARCH_SHORT=riscv64 ; TOOLCHAIN_ARCH_TARGET=riscv64-linux-gnu ;; \
- x86) TOOLCHAIN_ARCH=i686-linux-gnu ; TOOLCHAIN_ARCH_SHORT=i386 ; TOOLCHAIN_ARCH_TARGET=i686-linux-gnu ;; \
- x64) TOOLCHAIN_ARCH=x86-64-linux-gnu ; TOOLCHAIN_ARCH_SHORT=amd64 ; TOOLCHAIN_ARCH_TARGET=x86_64-linux-gnu ;; \
- *) echo "Unsupported architecture: ${BUILD_ARCH}" && exit 1 ;; \
- esac \
- && echo "export TOOLCHAIN_ARCH=${TOOLCHAIN_ARCH}" > /etc/skia-env \
- && echo "export TOOLCHAIN_ARCH_SHORT=${TOOLCHAIN_ARCH_SHORT}" >> /etc/skia-env \
- && echo "export TOOLCHAIN_ARCH_TARGET=${TOOLCHAIN_ARCH_TARGET}" >> /etc/skia-env
-
-# Install the required packages
-ARG LLVM_VERSION=18
-RUN apt-get update \
- && apt-get install -y \
- curl python3 git clang-${LLVM_VERSION} ninja-build xz-utils \
- && rm -rf /var/lib/apt/lists/*
-
-# Install the cross-compilation GCC toolchain
-ARG TOOLCHAIN_VERSION=12
-RUN . /etc/skia-env \
- && apt-get update \
- && apt-get install -y \
- libc6-dev-${TOOLCHAIN_ARCH_SHORT}-cross \
- libstdc++-${TOOLCHAIN_VERSION}-dev-${TOOLCHAIN_ARCH_SHORT}-cross \
- libgcc-${TOOLCHAIN_VERSION}-dev-${TOOLCHAIN_ARCH_SHORT}-cross \
- binutils-${TOOLCHAIN_ARCH} \
- && rm -rf /var/lib/apt/lists/*
-
-# Make the script more flexible and use "current" instead of the actual version
-# libpthread.so.0 for loong64 is in https://ci.deepin.com/repo/deepin/deepin-community/stable/pool/main/c/cross-toolchain-base
-RUN . /etc/skia-env \
- && TOOLCHAIN_ARCH=$(echo ${TOOLCHAIN_ARCH} | sed 's/x86-64/x86_64/g') \
- && ln -s /usr/${TOOLCHAIN_ARCH}/include/c++/${TOOLCHAIN_VERSION} /usr/${TOOLCHAIN_ARCH}/include/c++/current \
- && sed -i "s/\/usr\/${TOOLCHAIN_ARCH}\/lib\///g" /usr/${TOOLCHAIN_ARCH}/lib/libpthread.so.0 \
- && sed -i "s/\/usr\/${TOOLCHAIN_ARCH}\/lib\///g" /usr/${TOOLCHAIN_ARCH}/lib/libc.so
-
-# Install the cross-compilation skia build dependencies (fontconfig)
-# In https://ci.deepin.com/repo/deepin/deepin-community/stable/pool/main/f/fontconfig
-RUN . /etc/skia-env \
- && mkdir -p /skia-utils/libfontconfig-dev \
- && cd /skia-utils/libfontconfig-dev \
- && APT_REPO=http://deb.debian.org/debian \
- && FC_VERSION=2.14.2-6
- && FC_PKG=libfontconfig-dev
- && curl https://ci.deepin.com/repo/deepin/deepin-community/stable/pool/main/f/fontconfig/${FC_PKG}_${FC_VERSION}_${TOOLCHAIN_ARCH_SHORT}.deb -L -o libfontconfig-dev.deb \
- && ar vx libfontconfig-dev.deb \
- && tar -xJvf data.tar.xz \
- && rm libfontconfig-dev.deb \
- && TOOLCHAIN_ARCH=$(echo ${TOOLCHAIN_ARCH} | sed 's/x86-64/x86_64/g') \
- && cp -R usr/lib/*/* /usr/${TOOLCHAIN_ARCH}/lib/ \
- && cp -R usr/include/* /usr/${TOOLCHAIN_ARCH}/include/
-
-# Install the .NET SDK
-ARG DOTNET_SDK_VERSION=8.0
-ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
-RUN curl https://builds.dotnet.microsoft.com/dotnet/scripts/v1/dotnet-install.sh -L -o dotnet-install.sh \
- && bash dotnet-install.sh --channel ${DOTNET_SDK_VERSION} --install-dir /usr/share/dotnet --verbose \
- && ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet \
- && rm dotnet-install.sh \
- && dotnet help \
- && dotnet --info
-
-ENV CC=clang-${LLVM_VERSION} CXX=clang++-${LLVM_VERSION}
-
-WORKDIR /work
-
-COPY ./startup.sh /
-RUN chmod +x /startup.sh
-ENTRYPOINT [ "/startup.sh" ]
From 9c17cd197dfdaa732eee71fd4cdac2da9c97ed77 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 22:03:35 +0800
Subject: [PATCH 33/35] Delete scripts/Docker/deepin/clang-cross/23/startup.sh
---
scripts/Docker/deepin/clang-cross/23/startup.sh | 6 ------
1 file changed, 6 deletions(-)
delete mode 100644 scripts/Docker/deepin/clang-cross/23/startup.sh
diff --git a/scripts/Docker/deepin/clang-cross/23/startup.sh b/scripts/Docker/deepin/clang-cross/23/startup.sh
deleted file mode 100644
index 512bb431bf7..00000000000
--- a/scripts/Docker/deepin/clang-cross/23/startup.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/usr/bin/env bash
-set -e
-
-source /etc/skia-env
-
-exec "$@"
From 2dc5921d67d7e182750bf54ef705f1ad3770699c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 22:03:46 +0800
Subject: [PATCH 34/35] Delete scripts/Docker/deepin/clang-cross/.dockerignore
---
scripts/Docker/deepin/clang-cross/.dockerignore | 1 -
1 file changed, 1 deletion(-)
delete mode 100644 scripts/Docker/deepin/clang-cross/.dockerignore
diff --git a/scripts/Docker/deepin/clang-cross/.dockerignore b/scripts/Docker/deepin/clang-cross/.dockerignore
deleted file mode 100644
index 3a09fc21d8d..00000000000
--- a/scripts/Docker/deepin/clang-cross/.dockerignore
+++ /dev/null
@@ -1 +0,0 @@
-build-local.sh
From 7303ccb9504d577072fe88830db858df294fb0f9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=B1=E9=9B=B2=E3=81=AA=E3=81=AE?=
<87938880+4Darmygeometry@users.noreply.github.com>
Date: Mon, 24 Mar 2025 22:03:54 +0800
Subject: [PATCH 35/35] Delete scripts/Docker/deepin/clang-cross/build-local.sh
---
scripts/Docker/deepin/clang-cross/build-local.sh | 13 -------------
1 file changed, 13 deletions(-)
delete mode 100644 scripts/Docker/deepin/clang-cross/build-local.sh
diff --git a/scripts/Docker/deepin/clang-cross/build-local.sh b/scripts/Docker/deepin/clang-cross/build-local.sh
deleted file mode 100644
index 48b9d0ebbea..00000000000
--- a/scripts/Docker/deepin/clang-cross/build-local.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/usr/bin/env bash
-set -ex
-
-# Parameters:
-# $1 - The target architecture to build for [ arm | arm64 | riscv64 | x86 | x64 | loongarch64 ]
-# $2 - The Deepin distro version [ 23 ]
-
-DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
-
-ARCH="${1:-arm}"
-DEEPIN_VERSION="${2:-23}"
-
-$DIR/../../_clang-cross-common.sh "$DIR/$DEEPIN_VERSION" "$ARCH" "gnu"