From ddfb7787f497134462dc9218478f92cdc5e35526 Mon Sep 17 00:00:00 2001 From: DubbleClick Date: Wed, 19 Mar 2025 18:51:55 +0700 Subject: [PATCH 1/8] "static" linux glibc builder --- build-static-glibc.sh | 236 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 236 insertions(+) create mode 100644 build-static-glibc.sh diff --git a/build-static-glibc.sh b/build-static-glibc.sh new file mode 100644 index 000000000..b68f472dc --- /dev/null +++ b/build-static-glibc.sh @@ -0,0 +1,236 @@ +#!/bin/bash + +set -o errexit +set -x + +if ! type "git" >/dev/null 2>&1; then + echo "The \"git\" command must be installed." + exit 1 +fi + +arch="$(uname -m)" +os="$(uname -s | tr '[:upper:]' '[:lower:]')" +spcCommand="./bin/spc" +md5binary="md5sum" + +if ! type "cmake" >/dev/null 2>&1; then + echo "The \"cmake\" command must be installed." + exit 1 +fi + +fpic="-fPIC" +fpie="-fPIE" + +if [[ "${arch}" =~ "aarch" ]] || [[ "${arch}" =~ "arm" ]]; then + if [ -z "${DEBUG_SYMBOLS}" ]; then + export SPC_PHP_DEFAULT_OPTIMIZE_CFLAGS="-g -fstack-protector-strong -fPIC -fPIE -Os -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" + fi +else + fpic="-fpic" + fpie="-fpie" +fi + + +if [ -z "${PHP_EXTENSIONS}" ]; then + if [ -n "${EMBED}" ] && [ -f "${EMBED}/composer.json" ]; then + cd "${EMBED}" + # read the composer.json file and extract the required PHP extensions + # remove internal extensions from the list: https://github.com/crazywhalecc/static-php-cli/blob/4b16631d45a57370b4747df15c8f105130e96d03/src/globals/defines.php#L26-L34 + PHP_EXTENSIONS="$(composer check-platform-reqs --no-dev 2>/dev/null | grep ^ext | sed -e 's/^ext-core//' -e 's/^ext-hash//' -e 's/^ext-json//' -e 's/^ext-pcre//' -e 's/^ext-reflection//' -e 's/^ext-spl//' -e 's/^ext-standard//' -e 's/^ext-//' -e 's/ .*//' | xargs | tr ' ' ',')" + export PHP_EXTENSIONS + cd - + else + export PHP_EXTENSIONS="apcu,bcmath,bz2,calendar,ctype,curl,dba,dom,exif,ffi,fileinfo,filter,ftp,gd,gmp,gettext,iconv,igbinary,imagick,intl,ldap,mbregex,mbstring,mysqli,mysqlnd,opcache,openssl,parallel,pcntl,pdo,pdo_mysql,pdo_pgsql,pdo_sqlite,pgsql,phar,posix,protobuf,readline,redis,session,shmop,simplexml,soap,sockets,sodium,sqlite3,ssh2,sysvmsg,sysvsem,sysvshm,tidy,tokenizer,xlswriter,xml,xmlreader,xmlwriter,zip,zlib,yaml,zstd" + fi +fi + +if [ -z "${PHP_EXTENSION_LIBS}" ]; then + export PHP_EXTENSION_LIBS="bzip2,libavif,libjpeg,liblz4,libwebp,libzip,nghttp2" +fi + +# The Brotli library must always be built as it is required by http://github.com/dunglas/caddy-cbrotli +if ! echo "${PHP_EXTENSION_LIBS}" | grep -q "\bbrotli\b"; then + export PHP_EXTENSION_LIBS="${PHP_EXTENSION_LIBS},brotli" +fi + +if [ -z "${PHP_VERSION}" ]; then + export PHP_VERSION="8.4" +fi + +if [ -z "${FRANKENPHP_VERSION}" ]; then + FRANKENPHP_VERSION="$(git rev-parse --verify HEAD)" + export FRANKENPHP_VERSION +elif [ -d ".git/" ]; then + CURRENT_REF="$(git rev-parse --abbrev-ref HEAD)" + export CURRENT_REF + + if echo "${FRANKENPHP_VERSION}" | grep -F -q "."; then + # Tag + + # Trim "v" prefix if any + FRANKENPHP_VERSION=${FRANKENPHP_VERSION#v} + export FRANKENPHP_VERSION + + git checkout "v${FRANKENPHP_VERSION}" + else + git checkout "${FRANKENPHP_VERSION}" + fi +fi + +bin="frankenphp-${os}-${arch}" + +if [ -n "${CLEAN}" ]; then + rm -Rf dist/ + go clean -cache +fi + +cache_key="${PHP_VERSION}-${PHP_EXTENSIONS}-${PHP_EXTENSION_LIBS}" + +# Build libphp if necessary +if [ -f dist/cache_key ] && [ "$(cat dist/cache_key)" = "${cache_key}" ] && [ -f "dist/static-php-cli/buildroot/lib/libphp.a" ]; then + cd dist/static-php-cli +else + mkdir -p dist/ + cd dist/ + echo -n "${cache_key}" >cache_key + + if [ -d "static-php-cli/" ]; then + cd static-php-cli/ + # git pull + else + ln -s /app static-php-cli + # git clone --depth 1 https://github.com/crazywhalecc/static-php-cli + cd static-php-cli/ + fi + + # composer install --no-dev -a + + if [ -n "${DEBUG_SYMBOLS}" ]; then + extraOpts="${extraOpts} --no-strip" + fi + + # ${spcCommand} doctor --auto-fix + ${spcCommand} download --debug --with-php="${PHP_VERSION}" --for-extensions="${PHP_EXTENSIONS}" --for-libs="${PHP_EXTENSION_LIBS}" --ignore-cache-sources=php-src + # shellcheck disable=SC2086 + ${spcCommand} build --debug --enable-zts --build-embed ${extraOpts} "${PHP_EXTENSIONS}" --with-libs="${PHP_EXTENSION_LIBS}" +fi + +if ! type "go" >/dev/null 2>&1; then + echo "The \"go\" command must be installed." + exit 1 +fi + +XCADDY_COMMAND="xcaddy" +if ! type "$XCADDY_COMMAND" >/dev/null 2>&1; then + go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest + XCADDY_COMMAND="$(go env GOPATH)/bin/xcaddy" +fi + +curlGitHubHeaders=(--header "X-GitHub-Api-Version: 2022-11-28") +if [ "${GITHUB_TOKEN}" ]; then + curlGitHubHeaders+=(--header "Authorization: Bearer ${GITHUB_TOKEN}") +fi + +# Compile e-dant/watcher as a static library +mkdir -p watcher +cd watcher +curl -f --retry 5 "${curlGitHubHeaders[@]}" https://api.github.com/repos/e-dant/watcher/releases/latest | + grep tarball_url | + awk '{ print $2 }' | + sed 's/,$//' | + sed 's/"//g' | + xargs curl -fL --retry 5 "${curlGitHubHeaders[@]}" | + tar xz --strip-components 1 +cd watcher-c +$CC -c -o libwatcher-c.o ./src/watcher-c.cpp -I ./include -I ../include -std=c++17 -Wall -Wextra "${fpic}" +ar rcs libwatcher-c.a libwatcher-c.o +cp libwatcher-c.a ../../buildroot/lib/libwatcher-c.a +mkdir -p ../../buildroot/include/wtr +cp -R include/wtr/watcher-c.h ../../buildroot/include/wtr/watcher-c.h +cd ../../ + +# See https://github.com/docker-library/php/blob/master/8.3/alpine3.20/zts/Dockerfile#L53-L55 +CGO_CFLAGS="-DFRANKENPHP_VERSION=${FRANKENPHP_VERSION} -I${PWD}/buildroot/include/ $(${spcCommand} spc-config "${PHP_EXTENSIONS}" --with-libs="${PHP_EXTENSION_LIBS}" --includes)" +if [ -n "${DEBUG_SYMBOLS}" ]; then + CGO_CFLAGS="-g ${CGO_CFLAGS}" +else + CGO_CFLAGS="-fstack-protector-strong ${fpic} ${fpie} -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 ${CGO_CFLAGS}" +fi +export CGO_CFLAGS +export CGO_CPPFLAGS="${CGO_CFLAGS}" + +if [ "${os}" = "mac" ]; then + export CGO_LDFLAGS="-framework CoreFoundation -framework SystemConfiguration" +elif [ "${os}" = "linux" ] && [ -z "${DEBUG_SYMBOLS}" ]; then + CGO_LDFLAGS="-Wl,-O1 -pie -Wl,--allow-multiple-definition -Wl,--export-dynamic" +fi + +CGO_LDFLAGS="${CGO_LDFLAGS} ${PWD}/buildroot/lib/libbrotlicommon.a ${PWD}/buildroot/lib/libbrotlienc.a ${PWD}/buildroot/lib/libbrotlidec.a ${PWD}/buildroot/lib/libwatcher-c.a $(${spcCommand} spc-config "${PHP_EXTENSIONS}" --with-libs="${PHP_EXTENSION_LIBS}" --libs)" +if [ "${os}" = "linux" ]; then + if echo "${PHP_EXTENSIONS}" | grep -qE "\b(intl|imagick|grpc|v8js|protobuf|mongodb|tbb)\b"; then + CGO_LDFLAGS="${CGO_LDFLAGS} -lstdc++" + fi + CGO_LDFLAGS=$(echo "$CGO_LDFLAGS" | sed 's|-lphp|-Wl,--whole-archive -lphp -Wl,--no-whole-archive|g') + ar d ${PWD}/buildroot/lib/libphp.a $(ar t ${PWD}/buildroot/lib/libphp.a | grep '\.a$') +fi + +export CGO_LDFLAGS + +LIBPHP_VERSION="$(./buildroot/bin/php-config --version)" + +cd ../ + +if [ -z "${DEBUG_SYMBOLS}" ]; then + extraLdflags="-w -s" +fi + +cd ../ + +# Embed PHP app, if any +if [ -n "${EMBED}" ] && [ -d "${EMBED}" ]; then + tar -cf app.tar -C "${EMBED}" . + ${md5binary} app.tar | awk '{printf $1}' >app_checksum.txt +fi + +if [ -z "${XCADDY_ARGS}" ]; then + XCADDY_ARGS="--with github.com/dunglas/caddy-cbrotli --with github.com/dunglas/mercure/caddy --with github.com/dunglas/vulcain/caddy" +fi + +XCADDY_DEBUG=0 +if [ -n "${DEBUG_SYMBOLS}" ]; then + XCADDY_DEBUG=1 +fi + +go env +cd caddy/ +# shellcheck disable=SC2086 +CGO_ENABLED=1 \ + XCADDY_GO_BUILD_FLAGS="-buildmode=pie -tags cgo,netgo,osusergo,nobadger,nomysql,nopgx \ + -ldflags \"-linkmode=external -extldflags '-pie ${extraExtldflags} ${extraLdflags}' \ + -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP ${FRANKENPHP_VERSION} PHP ${LIBPHP_VERSION} Caddy'\"" \ + XCADDY_DEBUG="${XCADDY_DEBUG}" \ + ${XCADDY_COMMAND} build \ + --output "../dist/${bin}" \ + ${XCADDY_ARGS} \ + --with github.com/dunglas/frankenphp=.. \ + --with github.com/dunglas/frankenphp/caddy=. +cd .. + +if [ -d "${EMBED}" ]; then + truncate -s 0 app.tar + truncate -s 0 app_checksum.txt +fi + +if type "upx" >/dev/null 2>&1 && [ -z "${DEBUG_SYMBOLS}" ] && [ -z "${NO_COMPRESS}" ]; then + upx --best "dist/${bin}" +fi + +"dist/${bin}" version + +if [ -n "${RELEASE}" ]; then + gh release upload "v${FRANKENPHP_VERSION}" "dist/${bin}" --repo dunglas/frankenphp --clobber +fi + +if [ -n "${CURRENT_REF}" ]; then + git checkout "${CURRENT_REF}" +fi From 321150779324f92235ba75262d284819fafee04d Mon Sep 17 00:00:00 2001 From: DubbleClick Date: Wed, 19 Mar 2025 19:26:52 +0700 Subject: [PATCH 2/8] add dockerfile to build static glibc --- build-static-glibc.sh | 9 ++-- static-glibc-builder.Dockerfile | 84 +++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+), 5 deletions(-) create mode 100644 static-glibc-builder.Dockerfile diff --git a/build-static-glibc.sh b/build-static-glibc.sh index b68f472dc..8929505b6 100644 --- a/build-static-glibc.sh +++ b/build-static-glibc.sh @@ -96,21 +96,20 @@ else if [ -d "static-php-cli/" ]; then cd static-php-cli/ - # git pull + git pull else - ln -s /app static-php-cli - # git clone --depth 1 https://github.com/crazywhalecc/static-php-cli + git clone --depth 1 https://github.com/crazywhalecc/static-php-cli cd static-php-cli/ fi - # composer install --no-dev -a + composer install --no-dev -a if [ -n "${DEBUG_SYMBOLS}" ]; then extraOpts="${extraOpts} --no-strip" fi # ${spcCommand} doctor --auto-fix - ${spcCommand} download --debug --with-php="${PHP_VERSION}" --for-extensions="${PHP_EXTENSIONS}" --for-libs="${PHP_EXTENSION_LIBS}" --ignore-cache-sources=php-src + ${spcCommand} download --with-php="${PHP_VERSION}" --for-extensions="${PHP_EXTENSIONS}" --for-libs="${PHP_EXTENSION_LIBS}" --ignore-cache-sources=php-src # shellcheck disable=SC2086 ${spcCommand} build --debug --enable-zts --build-embed ${extraOpts} "${PHP_EXTENSIONS}" --with-libs="${PHP_EXTENSION_LIBS}" fi diff --git a/static-glibc-builder.Dockerfile b/static-glibc-builder.Dockerfile new file mode 100644 index 000000000..f6a9acf2a --- /dev/null +++ b/static-glibc-builder.Dockerfile @@ -0,0 +1,84 @@ +# syntax=docker/dockerfile:1 +#checkov:skip=CKV_DOCKER_2 +#checkov:skip=CKV_DOCKER_3 +#checkov:skip=CKV_DOCKER_7 +FROM centos:7 + +ARG TARGETARCH + +ARG FRANKENPHP_VERSION='' +ENV FRANKENPHP_VERSION=${FRANKENPHP_VERSION} + +ARG PHP_VERSION='' +ENV PHP_VERSION=${PHP_VERSION} + +ARG PHP_EXTENSIONS='' +ARG PHP_EXTENSION_LIBS='' +ARG XCADDY_ARGS='' +ARG CLEAN='' +ARG EMBED='' +ARG DEBUG_SYMBOLS='' +ARG MIMALLOC='' +ARG NO_COMPRESS='' + +RUN if [ -z "$TARGETARCH" ]; then \ + BASE_ARCH=$(uname -m); \ + if [ "$BASE_ARCH" = "arm64" ]; then \ + TARGETARCH=aarch64; \ + else \ + TARGETARCH=amd64; \ + fi \ + fi + +RUN sed -i 's/mirror.centos.org/vault.centos.org/g' /etc/yum.repos.d/*.repo && \ + sed -i 's/^#.*baseurl=http/baseurl=http/g' /etc/yum.repos.d/*.repo && \ + sed -i 's/^mirrorlist=http/#mirrorlist=http/g' /etc/yum.repos.d/*.repo + +RUN yum clean all && \ + yum makecache && \ + yum update -y && \ + yum install -y centos-release-scl && \ + yum install -y devtoolset-10-gcc-* && \ + echo "source scl_source enable devtoolset-10" >> /etc/bashrc + +# Install CMake +RUN curl -o cmake.tgz -fsSL https://github.com/Kitware/CMake/releases/download/v3.31.4/cmake-3.31.4-linux-$TARGETARCH.tar.gz && \ + mkdir /cmake && \ + tar -xzf cmake.tgz -C /cmake --strip-components 1 + +# Install GNU Make +RUN curl -o make.tgz -fsSL https://ftp.gnu.org/gnu/make/make-4.4.tar.gz && \ + tar -zxvf make.tgz && \ + cd make-4.4 && \ + ./configure && \ + make && \ + make install && \ + ln -sf /usr/local/bin/make /usr/bin/make + +# Install Automake +RUN curl -o automake.tgz -fsSL https://ftp.gnu.org/gnu/automake/automake-1.17.tar.xz && \ + tar -xvf automake.tgz && \ + cd automake-1.17 && \ + ./configure && \ + make && \ + make install && \ + ln -sf /usr/local/bin/automake /usr/bin/automake + +# Install Go +RUN curl -o go.tgz -fsSL https://go.dev/dl/go1.24.1.linux-$TARGETARCH.tar.gz && \ + rm -rf /usr/local/go && tar -C /usr/local -xzf go.tgz \ + +# Set environment variables +ENV PATH="/cmake/bin:/usr/local/go/bin:$PATH" +ENV CC=/opt/rh/devtoolset-10/root/usr/bin/gcc +ENV CXX=/opt/rh/devtoolset-10/root/usr/bin/g++ +ENV AR=/opt/rh/devtoolset-10/root/usr/bin/ar +ENV LD=/opt/rh/devtoolset-10/root/usr/bin/ld +ENV SPC_DEFAULT_C_FLAGS="-fPIE -fPIC" +ENV SPC_LIBC=glibc +ENV SPC_CMD_VAR_PHP_MAKE_EXTRA_LDFLAGS_PROGRAM="-Wl,-O1 -pie" +ENV SPC_CMD_VAR_PHP_MAKE_EXTRA_LIBS="-ldl -lpthread -lm -lresolv -lutil -lrt" + +RUN --mount=type=secret,id=github-token GITHUB_TOKEN=$(cat /run/secrets/github-token) ./build-static-glibc.sh && \ + rm -Rf dist/static-php-cli/source/* + From 14d012dd0c3de2aecc09cf40a4849eba24b1ff5e Mon Sep 17 00:00:00 2001 From: DubbleClick Date: Wed, 19 Mar 2025 19:46:35 +0700 Subject: [PATCH 3/8] something something --- static-glibc-builder.Dockerfile | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/static-glibc-builder.Dockerfile b/static-glibc-builder.Dockerfile index f6a9acf2a..ede4c0247 100644 --- a/static-glibc-builder.Dockerfile +++ b/static-glibc-builder.Dockerfile @@ -1,8 +1,4 @@ -# syntax=docker/dockerfile:1 -#checkov:skip=CKV_DOCKER_2 -#checkov:skip=CKV_DOCKER_3 -#checkov:skip=CKV_DOCKER_7 -FROM centos:7 +FROM centos:7 ARG TARGETARCH @@ -34,10 +30,20 @@ RUN sed -i 's/mirror.centos.org/vault.centos.org/g' /etc/yum.repos.d/*.repo && \ sed -i 's/^#.*baseurl=http/baseurl=http/g' /etc/yum.repos.d/*.repo && \ sed -i 's/^mirrorlist=http/#mirrorlist=http/g' /etc/yum.repos.d/*.repo +RUN yum install -y centos-release-scl + +RUN if [ "$TARGETARCH" = "aarch64" ]; then \ + sed -i 's|mirror.centos.org/centos|vault.centos.org/altarch|g' /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo ; \ + sed -i 's|mirror.centos.org/centos|vault.centos.org/altarch|g' /etc/yum.repos.d/CentOS-SCLo-scl.repo ; \ + else \ + sed -i 's/mirror.centos.org/vault.centos.org/g' /etc/yum.repos.d/*.repo ; \ + fi +RUN sed -i 's/^#.*baseurl=http/baseurl=http/g' /etc/yum.repos.d/*.repo && \ + sed -i 's/^mirrorlist=http/#mirrorlist=http/g' /etc/yum.repos.d/*.repo + RUN yum clean all && \ yum makecache && \ yum update -y && \ - yum install -y centos-release-scl && \ yum install -y devtoolset-10-gcc-* && \ echo "source scl_source enable devtoolset-10" >> /etc/bashrc From ff08093a9e66e4634620345a57caa8721e5094e6 Mon Sep 17 00:00:00 2001 From: DubbleClick Date: Wed, 19 Mar 2025 19:52:01 +0700 Subject: [PATCH 4/8] source bashrc before trying to compile make --- static-glibc-builder.Dockerfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/static-glibc-builder.Dockerfile b/static-glibc-builder.Dockerfile index ede4c0247..6fb5ace9e 100644 --- a/static-glibc-builder.Dockerfile +++ b/static-glibc-builder.Dockerfile @@ -45,14 +45,16 @@ RUN yum clean all && \ yum makecache && \ yum update -y && \ yum install -y devtoolset-10-gcc-* && \ - echo "source scl_source enable devtoolset-10" >> /etc/bashrc + localedef -c -i en_US -f UTF-8 en_US.UTF-8 + +RUN echo "source scl_source enable devtoolset-10" >> /etc/bashrc +RUN source /etc/bashrc # Install CMake RUN curl -o cmake.tgz -fsSL https://github.com/Kitware/CMake/releases/download/v3.31.4/cmake-3.31.4-linux-$TARGETARCH.tar.gz && \ mkdir /cmake && \ tar -xzf cmake.tgz -C /cmake --strip-components 1 -# Install GNU Make RUN curl -o make.tgz -fsSL https://ftp.gnu.org/gnu/make/make-4.4.tar.gz && \ tar -zxvf make.tgz && \ cd make-4.4 && \ @@ -61,7 +63,6 @@ RUN curl -o make.tgz -fsSL https://ftp.gnu.org/gnu/make/make-4.4.tar.gz && \ make install && \ ln -sf /usr/local/bin/make /usr/bin/make -# Install Automake RUN curl -o automake.tgz -fsSL https://ftp.gnu.org/gnu/automake/automake-1.17.tar.xz && \ tar -xvf automake.tgz && \ cd automake-1.17 && \ @@ -74,7 +75,6 @@ RUN curl -o automake.tgz -fsSL https://ftp.gnu.org/gnu/automake/automake-1.17.ta RUN curl -o go.tgz -fsSL https://go.dev/dl/go1.24.1.linux-$TARGETARCH.tar.gz && \ rm -rf /usr/local/go && tar -C /usr/local -xzf go.tgz \ -# Set environment variables ENV PATH="/cmake/bin:/usr/local/go/bin:$PATH" ENV CC=/opt/rh/devtoolset-10/root/usr/bin/gcc ENV CXX=/opt/rh/devtoolset-10/root/usr/bin/g++ From fc4423e33241f5b1435999735f662483ded29ae8 Mon Sep 17 00:00:00 2001 From: DubbleClick Date: Wed, 19 Mar 2025 20:10:55 +0700 Subject: [PATCH 5/8] goarch --- static-glibc-builder.Dockerfile | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/static-glibc-builder.Dockerfile b/static-glibc-builder.Dockerfile index 6fb5ace9e..f45b93283 100644 --- a/static-glibc-builder.Dockerfile +++ b/static-glibc-builder.Dockerfile @@ -1,6 +1,7 @@ FROM centos:7 ARG TARGETARCH +ARG GOARCH ARG FRANKENPHP_VERSION='' ENV FRANKENPHP_VERSION=${FRANKENPHP_VERSION} @@ -17,14 +18,14 @@ ARG DEBUG_SYMBOLS='' ARG MIMALLOC='' ARG NO_COMPRESS='' -RUN if [ -z "$TARGETARCH" ]; then \ - BASE_ARCH=$(uname -m); \ - if [ "$BASE_ARCH" = "arm64" ]; then \ - TARGETARCH=aarch64; \ - else \ - TARGETARCH=amd64; \ - fi \ - fi +RUN BASE_ARCH=$(uname -m); \ + if [ "$BASE_ARCH" = "arm64" ]; then \ + TARGETARCH=aarch64; \ + GOARCH = arm64; \ + else \ + TARGETARCH=amd64; \ + GOARCH = amd64; \ + fi \ RUN sed -i 's/mirror.centos.org/vault.centos.org/g' /etc/yum.repos.d/*.repo && \ sed -i 's/^#.*baseurl=http/baseurl=http/g' /etc/yum.repos.d/*.repo && \ @@ -51,7 +52,7 @@ RUN echo "source scl_source enable devtoolset-10" >> /etc/bashrc RUN source /etc/bashrc # Install CMake -RUN curl -o cmake.tgz -fsSL https://github.com/Kitware/CMake/releases/download/v3.31.4/cmake-3.31.4-linux-$TARGETARCH.tar.gz && \ +RUN curl -o cmake.tgz -fsSL https://github.com/Kitware/CMake/releases/download/v3.31.4/cmake-3.31.4-linux-amd64.tar.gz && \ mkdir /cmake && \ tar -xzf cmake.tgz -C /cmake --strip-components 1 @@ -72,7 +73,7 @@ RUN curl -o automake.tgz -fsSL https://ftp.gnu.org/gnu/automake/automake-1.17.ta ln -sf /usr/local/bin/automake /usr/bin/automake # Install Go -RUN curl -o go.tgz -fsSL https://go.dev/dl/go1.24.1.linux-$TARGETARCH.tar.gz && \ +RUN curl -o go.tgz -fsSL https://go.dev/dl/go1.24.1.linux-$GOARCH && \ rm -rf /usr/local/go && tar -C /usr/local -xzf go.tgz \ ENV PATH="/cmake/bin:/usr/local/go/bin:$PATH" From ce58f3724c49efbc5450c620444b89a95665a23a Mon Sep 17 00:00:00 2001 From: DubbleClick Date: Wed, 19 Mar 2025 20:11:41 +0700 Subject: [PATCH 6/8] / too much --- static-glibc-builder.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static-glibc-builder.Dockerfile b/static-glibc-builder.Dockerfile index f45b93283..f0df86f4d 100644 --- a/static-glibc-builder.Dockerfile +++ b/static-glibc-builder.Dockerfile @@ -25,7 +25,7 @@ RUN BASE_ARCH=$(uname -m); \ else \ TARGETARCH=amd64; \ GOARCH = amd64; \ - fi \ + fi RUN sed -i 's/mirror.centos.org/vault.centos.org/g' /etc/yum.repos.d/*.repo && \ sed -i 's/^#.*baseurl=http/baseurl=http/g' /etc/yum.repos.d/*.repo && \ From a5896cbd90a62c40f85398078c8dd1ec3769f28b Mon Sep 17 00:00:00 2001 From: DubbleClick Date: Wed, 19 Mar 2025 20:12:43 +0700 Subject: [PATCH 7/8] spaces --- static-glibc-builder.Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/static-glibc-builder.Dockerfile b/static-glibc-builder.Dockerfile index f0df86f4d..ea839dcbd 100644 --- a/static-glibc-builder.Dockerfile +++ b/static-glibc-builder.Dockerfile @@ -21,10 +21,10 @@ ARG NO_COMPRESS='' RUN BASE_ARCH=$(uname -m); \ if [ "$BASE_ARCH" = "arm64" ]; then \ TARGETARCH=aarch64; \ - GOARCH = arm64; \ + GOARCH=arm64; \ else \ TARGETARCH=amd64; \ - GOARCH = amd64; \ + GOARCH=amd64; \ fi RUN sed -i 's/mirror.centos.org/vault.centos.org/g' /etc/yum.repos.d/*.repo && \ From dc0534b8987aebfaa1d18384b856ded05b3ac7c8 Mon Sep 17 00:00:00 2001 From: DubbleClick Date: Wed, 19 Mar 2025 20:14:44 +0700 Subject: [PATCH 8/8] targetarch --- static-glibc-builder.Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/static-glibc-builder.Dockerfile b/static-glibc-builder.Dockerfile index ea839dcbd..b7b0645a5 100644 --- a/static-glibc-builder.Dockerfile +++ b/static-glibc-builder.Dockerfile @@ -23,7 +23,7 @@ RUN BASE_ARCH=$(uname -m); \ TARGETARCH=aarch64; \ GOARCH=arm64; \ else \ - TARGETARCH=amd64; \ + TARGETARCH=x86_64; \ GOARCH=amd64; \ fi @@ -52,7 +52,7 @@ RUN echo "source scl_source enable devtoolset-10" >> /etc/bashrc RUN source /etc/bashrc # Install CMake -RUN curl -o cmake.tgz -fsSL https://github.com/Kitware/CMake/releases/download/v3.31.4/cmake-3.31.4-linux-amd64.tar.gz && \ +RUN curl -o cmake.tgz -fsSL https://github.com/Kitware/CMake/releases/download/v3.31.4/cmake-3.31.4-linux-$TARGETARCH.tar.gz && \ mkdir /cmake && \ tar -xzf cmake.tgz -C /cmake --strip-components 1