|
| 1 | +#!/bin/bash |
| 2 | + |
| 3 | +# Stop at any error, show all commands |
| 4 | +set -exuo pipefail |
| 5 | + |
| 6 | +TOOLCHAIN_PATH=/opt/clang |
| 7 | + |
| 8 | +# Download static-clang |
| 9 | +DEFAULT_ARCH="$(uname -m)" |
| 10 | +if [ "${STATIC_CLANG_ARCH:-}" == "" ]; then |
| 11 | + STATIC_CLANG_ARCH="${RUNNER_ARCH:-${DEFAULT_ARCH}}" |
| 12 | +fi |
| 13 | +case "${STATIC_CLANG_ARCH}" in |
| 14 | + ARM64|aarch64|arm64|arm64/*) GO_ARCH=arm64;; |
| 15 | + ARM|armv7l|armv8l|arm|arm/v7) GO_ARCH=arm;; # assume arm/v7 for arm |
| 16 | + X64|x86_64|amd64|amd64/*) GO_ARCH=amd64;; |
| 17 | + X86|i686|386) GO_ARCH=386;; |
| 18 | + ppc64le) GO_ARCH=ppc64le;; |
| 19 | + riscv64) GO_ARCH=riscv64;; |
| 20 | + s390x) GO_ARCH=s390x;; |
| 21 | + *) echo "No static-clang toolchain for ${CLANG_ARCH}">2; exit 1;; |
| 22 | +esac |
| 23 | +STATIC_CLANG_VERSION=21.1.5.0 |
| 24 | +STATIC_CLANG_FILENAME="static-clang-linux-${GO_ARCH}.tar.xz" |
| 25 | +STATIC_CLANG_URL="https://github.com/mayeut/static-clang-images/releases/download/v${STATIC_CLANG_VERSION}/${STATIC_CLANG_FILENAME}" |
| 26 | +pushd /tmp |
| 27 | +cat<<'EOF' | grep "${STATIC_CLANG_FILENAME}" > "${STATIC_CLANG_FILENAME}.sha256" |
| 28 | +7af47b1c41dd1e76e08d33f13f7fe33eb43849040f69499516f3f01708b12ae0 static-clang-linux-386.tar.xz |
| 29 | +395463d070de084f249bf08d3a8a88a42f19bce24cad37b45c78d48a62a73bdc static-clang-linux-amd64.tar.xz |
| 30 | +294839579cf4d2fb5343b6ee1e1613f126c765664e253f2109725d5f49db6aa3 static-clang-linux-arm.tar.xz |
| 31 | +7476d44530b560c5bdc1b085c8651810c2fece201410d831c47b2d3b8101c1b2 static-clang-linux-arm64.tar.xz |
| 32 | +dcdb642827b5da8570b312c1a877bdf4a2b0f7e3004394a3b216134c3178f346 static-clang-linux-loong64.tar.xz |
| 33 | +6b247ae1ce6d095375cd4f37a0484f0c91f8457e3c3f3bb7f9c125a414b19bed static-clang-linux-ppc64le.tar.xz |
| 34 | +fb0cce0e1fecceb6d3eb2e095297731107c0803605815b37a5cbcec270700088 static-clang-linux-riscv64.tar.xz |
| 35 | +18cbfc7471a40a091b02b2999303dfa3f87368dd01e65d0d3ca7b216826ac84f static-clang-linux-s390x.tar.xz |
| 36 | +EOF |
| 37 | +curl -fsSLO "${STATIC_CLANG_URL}" |
| 38 | +sha256sum -c "${STATIC_CLANG_FILENAME}.sha256" |
| 39 | +tar -C /opt -xf "${STATIC_CLANG_FILENAME}" |
| 40 | +popd |
| 41 | + |
| 42 | +# configure target triple |
| 43 | +case "${AUDITWHEEL_POLICY}-${AUDITWHEEL_ARCH}" in |
| 44 | + manylinux*-armv7l) TARGET_TRIPLE=armv7-unknown-linux-gnueabihf;; |
| 45 | + musllinux*-armv7l) TARGET_TRIPLE=armv7-alpine-linux-musleabihf;; |
| 46 | + manylinux*-ppc64le) TARGET_TRIPLE=powerpc64le-unknown-linux-gnu;; |
| 47 | + musllinux*-ppc64le) TARGET_TRIPLE=powerpc64le-alpine-linux-musl;; |
| 48 | + manylinux*-*) TARGET_TRIPLE=${AUDITWHEEL_ARCH}-unknown-linux-gnu;; |
| 49 | + musllinux*-*) TARGET_TRIPLE=${AUDITWHEEL_ARCH}-alpine-linux-musl;; |
| 50 | +esac |
| 51 | +case "${AUDITWHEEL_ARCH}" in |
| 52 | + riscv64) M_ARCH="-march=rv64gc";; |
| 53 | + x86_64) M_ARCH="-march=x86-64";; |
| 54 | + armv7l) M_ARCH="-march=armv7a";; |
| 55 | + i686) M_ARCH="-march=i686";; |
| 56 | +esac |
| 57 | +GCC_TRIPLE=$(gcc -dumpmachine) |
| 58 | + |
| 59 | +cat<<EOF >"${TOOLCHAIN_PATH}/bin/${AUDITWHEEL_PLAT}.cfg" |
| 60 | + -target ${TARGET_TRIPLE} |
| 61 | + ${M_ARCH:-} |
| 62 | + --gcc-toolchain=${DEVTOOLSET_ROOTPATH:-}/usr |
| 63 | + --gcc-triple=${GCC_TRIPLE} |
| 64 | +EOF |
| 65 | + |
| 66 | +cat<<EOF >"${TOOLCHAIN_PATH}/bin/clang.cfg" |
| 67 | + @${AUDITWHEEL_PLAT}.cfg |
| 68 | +EOF |
| 69 | + |
| 70 | +cat<<EOF >"${TOOLCHAIN_PATH}/bin/clang++.cfg" |
| 71 | + @${AUDITWHEEL_PLAT}.cfg |
| 72 | +EOF |
| 73 | + |
| 74 | +cat<<EOF >"${TOOLCHAIN_PATH}/bin/clang-cpp.cfg" |
| 75 | + @${AUDITWHEEL_PLAT}.cfg |
| 76 | +EOF |
| 77 | + |
| 78 | +# override entrypoint to add the toolchain to PATH |
| 79 | +mv /usr/local/bin/manylinux-entrypoint /usr/local/bin/manylinux-entrypoint-org |
| 80 | +cat<<EOF >/usr/local/bin/manylinux-entrypoint |
| 81 | +#!/bin/bash |
| 82 | +
|
| 83 | +set -eu |
| 84 | +
|
| 85 | +export PATH="${TOOLCHAIN_PATH}/bin:\${PATH}" |
| 86 | +exec /usr/local/bin/manylinux-entrypoint-org "\$@" |
| 87 | +EOF |
| 88 | + |
| 89 | +chmod +x /usr/local/bin/manylinux-entrypoint |
0 commit comments