Skip to content

Commit

Permalink
fix: toolchain library fixes for arm (#257)
Browse files Browse the repository at this point in the history
* use `aarch64-linux-gnu-gcc` instead of `arm-linux-gnueabi-gcc`
* apply symlink to cirvumvent gcc-multilib issues
* reset freebsd changes
* rev to arm-linux-gnueabi-gcc
* comment out non-working tests
  • Loading branch information
pat-s authored Nov 4, 2024
1 parent 6e4b1ee commit 98489ca
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 29 deletions.
26 changes: 13 additions & 13 deletions docker/build/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -258,13 +258,13 @@ for TARGET in $TARGETS; do
ln -s /usr/local/go/pkg/linux_arm-5 /usr/local/go/pkg/linux_arm
fi
echo "Compiling for linux/arm-5..."
XGOOS="linux" XGOARCH="arm-5" GOCACHE=/gocache/linux/arm-5 CC=arm-linux-gnueabihf-gcc CXX=aarch64-linux-gnu-g++ HOST=arm-linux-gnueabihf-gcc PREFIX=/usr/aarch64-linux-gnu CFLAGS="-march=armv5t" CXXFLAGS="-march=armv5t" do_build
XGOOS="linux" XGOARCH="arm-5" GOCACHE=/gocache/linux/arm-5 CC=arm-linux-gnueabi-gcc CXX=aarch64-linux-gnu-g++ HOST=arm-linux-gnueabi-gcc PREFIX=/usr/aarch64-linux-gnu CFLAGS="-march=armv5t" CXXFLAGS="-march=armv5t" do_build
export PKG_CONFIG_PATH=/usr/aarch64-linux-gnu/lib/pkgconfig

if [[ "$USEMODULES" == false ]]; then
GOCACHE=/gocache/linux/arm-5 CC=arm-linux-gnueabihf-gcc CXX=aarch64-linux-gnu-g++ GOOS=linux GOARCH=arm GOARM=5 CGO_ENABLED=1 CGO_CFLAGS="-march=armv5t" CGO_CXXFLAGS="-march=armv5t" go get $V $X "${T[@]}" -d "$PACK_RELPATH"
GOCACHE=/gocache/linux/arm-5 CC=arm-linux-gnueabi-gcc CXX=aarch64-linux-gnu-g++ GOOS=linux GOARCH=arm GOARM=5 CGO_ENABLED=1 CGO_CFLAGS="-march=armv5t" CGO_CXXFLAGS="-march=armv5t" go get $V $X "${T[@]}" -d "$PACK_RELPATH"
fi
GOCACHE=/gocache/linux/arm-5 CC=arm-linux-gnueabihf-gcc CXX=aarch64-linux-gnu-g++ GOOS=linux GOARCH=arm GOARM=5 CGO_ENABLED=1 CGO_CFLAGS="-march=armv5t" CGO_CXXFLAGS="-march=armv5t" $GOBIN build $V $X $TP $BV "${MOD[@]}" "${T[@]}" "${LDF[@]}" "${GC[@]}" "${BM[@]}" -o "/build/$NAME-linux-arm-5$(extension linux)" "$PACK_RELPATH"
GOCACHE=/gocache/linux/arm-5 CC=arm-linux-gnueabi-gcc CXX=aarch64-linux-gnu-g++ GOOS=linux GOARCH=arm GOARM=5 CGO_ENABLED=1 CGO_CFLAGS="-march=armv5t" CGO_CXXFLAGS="-march=armv5t" $GOBIN build $V $X $TP $BV "${MOD[@]}" "${T[@]}" "${LDF[@]}" "${GC[@]}" "${BM[@]}" -o "/build/$NAME-linux-arm-5$(extension linux)" "$PACK_RELPATH"
if [ "$GO_VERSION_MAJOR" -gt 1 ] || { [ "$GO_VERSION_MAJOR" == 1 ] && [ "$GO_VERSION_MINOR" -ge 15 ]; }; then
rm /usr/local/go/pkg/linux_arm
fi
Expand All @@ -274,13 +274,13 @@ for TARGET in $TARGETS; do
ln -s /usr/local/go/pkg/linux_arm-6 /usr/local/go/pkg/linux_arm

echo "Compiling for linux/arm-6..."
XGOOS="linux" XGOARCH="arm-6" GOCACHE=/gocache/linux/arm-6 CC=arm-linux-gnueabihf-gcc CXX=aarch64-linux-gnu-g++ HOST=arm-linux-gnueabihf-gcc PREFIX=/usr/aarch64-linux-gnu CFLAGS="-march=armv6" CXXFLAGS="-march=armv6" do_build
XGOOS="linux" XGOARCH="arm-6" GOCACHE=/gocache/linux/arm-6 CC=arm-linux-gnueabi-gcc CXX=aarch64-linux-gnu-g++ HOST=arm-linux-gnueabi-gcc PREFIX=/usr/aarch64-linux-gnu CFLAGS="-march=armv6" CXXFLAGS="-march=armv6" do_build
export PKG_CONFIG_PATH=/usr/aarch64-linux-gnu/lib/pkgconfig

if [[ "$USEMODULES" == false ]]; then
GOCACHE=/gocache/linux/arm-6 CC=arm-linux-gnueabihf-gcc CXX=aarch64-linux-gnu-g++ GOOS=linux GOARCH=arm GOARM=6 CGO_ENABLED=1 CGO_CFLAGS="-march=armv6" CGO_CXXFLAGS="-march=armv6" go get $V $X "${T[@]}" -d "$PACK_RELPATH"
GOCACHE=/gocache/linux/arm-6 CC=arm-linux-gnueabi-gcc CXX=aarch64-linux-gnu-g++ GOOS=linux GOARCH=arm GOARM=6 CGO_ENABLED=1 CGO_CFLAGS="-march=armv6" CGO_CXXFLAGS="-march=armv6" go get $V $X "${T[@]}" -d "$PACK_RELPATH"
fi
GOCACHE=/gocache/linux/arm-6 CC=arm-linux-gnueabihf-gcc CXX=aarch64-linux-gnu-g++ GOOS=linux GOARCH=arm GOARM=6 CGO_ENABLED=1 CGO_CFLAGS="-march=armv6" CGO_CXXFLAGS="-march=armv6" $GOBIN build $V $X $TP $BV "${MOD[@]}" "${T[@]}" "${LDF[@]}" "${GC[@]}" "${BM[@]}" -o "/build/$NAME-linux-arm-6$(extension linux)" "$PACK_RELPATH"
GOCACHE=/gocache/linux/arm-6 CC=arm-linux-gnueabi-gcc CXX=aarch64-linux-gnu-g++ GOOS=linux GOARCH=arm GOARM=6 CGO_ENABLED=1 CGO_CFLAGS="-march=armv6" CGO_CXXFLAGS="-march=armv6" $GOBIN build $V $X $TP $BV "${MOD[@]}" "${T[@]}" "${LDF[@]}" "${GC[@]}" "${BM[@]}" -o "/build/$NAME-linux-arm-6$(extension linux)" "$PACK_RELPATH"

rm /usr/local/go/pkg/linux_arm
fi
Expand All @@ -289,26 +289,26 @@ for TARGET in $TARGETS; do
ln -s /usr/local/go/pkg/linux_arm-7 /usr/local/go/pkg/linux_arm

echo "Compiling for linux/arm-7..."
XGOOS="linux" XGOARCH="arm-7" GOCACHE=/gocache/linux/arm-7 CC=arm-linux-gnueabihf-gcc CXX=aarch64-linux-gnu-g++ HOST=arm-linux-gnueabihf-gcc PREFIX=/usr/aarch64-linux-gnu CFLAGS="-march=armv7-a -fPIC" CXXFLAGS="-march=armv7-a -fPIC" do_build
XGOOS="linux" XGOARCH="arm-7" GOCACHE=/gocache/linux/arm-7 CC=arm-linux-gnueabi-gcc CXX=aarch64-linux-gnu-g++ HOST=arm-linux-gnueabi-gcc PREFIX=/usr/aarch64-linux-gnu CFLAGS="-march=armv7-a -fPIC" CXXFLAGS="-march=armv7-a -fPIC" do_build
export PKG_CONFIG_PATH=/usr/aarch64-linux-gnu/lib/pkgconfig

if [[ "$USEMODULES" == false ]]; then
GOCACHE=/gocache/linux/arm-7 CC=arm-linux-gnueabihf-gcc CXX=aarch64-linux-gnu-g++ GOOS=linux GOARCH=arm GOARM=7 CGO_ENABLED=1 CGO_CFLAGS="-march=armv7-a -fPIC" CGO_CXXFLAGS="-march=armv7-a -fPIC" go get $V $X "${T[@]}" -d "$PACK_RELPATH"
GOCACHE=/gocache/linux/arm-7 CC=arm-linux-gnueabi-gcc CXX=aarch64-linux-gnu-g++ GOOS=linux GOARCH=arm GOARM=7 CGO_ENABLED=1 CGO_CFLAGS="-march=armv7-a -fPIC" CGO_CXXFLAGS="-march=armv7-a -fPIC" go get $V $X "${T[@]}" -d "$PACK_RELPATH"
fi
GOCACHE=/gocache/linux/arm-7 CC=arm-linux-gnueabihf-gcc CXX=aarch64-linux-gnu-g++ GOOS=linux GOARCH=arm GOARM=7 CGO_ENABLED=1 CGO_CFLAGS="-march=armv7-a -fPIC" CGO_CXXFLAGS="-march=armv7-a -fPIC" $GOBIN build $V $X $TP $BV "${MOD[@]}" "${T[@]}" "${LDF[@]}" "${GC[@]}" "${BM[@]}" -o "/build/$NAME-linux-arm-7$(extension linux)" "$PACK_RELPATH"
GOCACHE=/gocache/linux/arm-7 CC=arm-linux-gnueabi-gcc CXX=aarch64-linux-gnu-g++ GOOS=linux GOARCH=arm GOARM=7 CGO_ENABLED=1 CGO_CFLAGS="-march=armv7-a -fPIC" CGO_CXXFLAGS="-march=armv7-a -fPIC" $GOBIN build $V $X $TP $BV "${MOD[@]}" "${T[@]}" "${LDF[@]}" "${GC[@]}" "${BM[@]}" -o "/build/$NAME-linux-arm-7$(extension linux)" "$PACK_RELPATH"

rm /usr/local/go/pkg/linux_arm
fi
if { [ "$XGOOS" == "." ] || [ "$XGOOS" == "linux" ]; } && { [ "$XGOARCH" == "." ] || [ "$XGOARCH" == "arm64" ]; }; then
echo "Compiling for linux/arm64..."
mkdir -p /gocache/linux/arm64
XGOOS="linux" XGOARCH="arm64" GOCACHE=/gocache/linux/arm64 CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ PREFIX=/usr/arm-linux-gnueabihf-gcc/ do_build
export PKG_CONFIG_PATH=/usr/arm-linux-gnueabihf-gcc/lib/pkgconfig
XGOOS="linux" XGOARCH="arm64" GOCACHE=/gocache/linux/arm64 CC=arm-linux-gnueabi-gcc CXX=arm-linux-gnueabihf-g++ PREFIX=/usr/arm-linux-gnueabi-gcc/ do_build
export PKG_CONFIG_PATH=/usr/arm-linux-gnueabi-gcc/lib/pkgconfig

if [[ "$USEMODULES" == false ]]; then
GOCACHE=/gocache/linux/arm64 CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ GOOS=linux GOARCH=arm CGO_ENABLED=1 go get $V $X "${T[@]}" -d "$PACK_RELPATH"
GOCACHE=/gocache/linux/arm64 CC=arm-linux-gnueabi-gcc CXX=arm-linux-gnueabihf-g++ GOOS=linux GOARCH=arm CGO_ENABLED=1 go get $V $X "${T[@]}" -d "$PACK_RELPATH"
fi
GOCACHE=/gocache/linux/arm64 CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ GOOS=linux GOARCH=arm CGO_ENABLED=1 $GOBIN build $V $X $TP $BV "${MOD[@]}" "${T[@]}" "${LDF[@]}" "${GC[@]}" "${BM[@]}" -o "/build/$NAME-linux-arm64$(extension linux)" "$PACK_RELPATH"
GOCACHE=/gocache/linux/arm64 CC=arm-linux-gnueabi-gcc CXX=arm-linux-gnueabihf-g++ GOOS=linux GOARCH=arm CGO_ENABLED=1 $GOBIN build $V $X $TP $BV "${MOD[@]}" "${T[@]}" "${LDF[@]}" "${GC[@]}" "${BM[@]}" -o "/build/$NAME-linux-arm64$(extension linux)" "$PACK_RELPATH"
fi
if { [ "$XGOOS" == "." ] || [ "$XGOOS" == "linux" ]; } && { [ "$XGOARCH" == "." ] || [ "$XGOARCH" == "mips64" ]; }; then
echo "Compiling for linux/mips64..."
Expand Down
41 changes: 25 additions & 16 deletions docker/toolchain/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -23,25 +23,34 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"]
# trunk-ignore(hadolint/DL3008)
# trunk-ignore(hadolint/DL3015)
RUN apt-get update -y && \
apt-get install --fix-broken -y \
automake autogen build-essential clang gcc-aarch64-linux-gnu g++-aarch64-linux-gnu \
gcc-arm-linux-gnueabi g++-arm-linux-gnueabi libc6-dev-armel-cross \
gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf libc6-dev-armhf-cross \
gcc-mingw-w64 g++-mingw-w64 llvm-dev \
gcc-mips-linux-gnu g++-mips-linux-gnu libc6-dev-mips-cross \
gcc-mips64-linux-gnuabi64 g++-mips64-linux-gnuabi64 libc6-dev-mips64-cross \
gcc-mips64el-linux-gnuabi64 g++-mips64el-linux-gnuabi64 libc6-dev-mips64el-cross \
gcc-mipsel-linux-gnu g++-mipsel-linux-gnu libc6-dev-mipsel-cross \
gcc-multilib-i686-linux-gnu gcc-multilib-mips-linux-gnu gcc-multilib-mips64-linux-gnuabi64 \
gcc-multilib-x86-64-linux-gnux32 \
gcc-powerpc64le-linux-gnu g++-powerpc64le-linux-gnu libc6-dev-powerpc-ppc64-cross \
gcc-riscv64-linux-gnu g++-riscv64-linux-gnu libc6-dev-riscv64-cross \
gcc-s390x-linux-gnu g++-s390x-linux-gnu libc6-dev-s390x-cross \
zlib1g-dev
apt-get install --fix-broken -y \
automake autogen build-essential clang gcc-aarch64-linux-gnu g++-aarch64-linux-gnu \
gcc-arm-linux-gnueabi g++-arm-linux-gnueabi libc6-dev-armel-cross \
gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf libc6-dev-armhf-cross \
gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu \
gcc-mingw-w64 g++-mingw-w64 llvm-dev gcc-multilib-mipsel-linux-gnu \
gcc-multilib-mipsisa32r6-linux-gnu gcc-multilib-mipsisa32r6el-linux-gnu \
gcc-multilib-mipsisa64r6-linux-gnuabi64 gcc-multilib-mipsisa64r6el-linux-gnuabi64 \
gcc-multilib-powerpc-linux-gnu \
gcc-multilib-s390x-linux-gnu gcc-multilib-sparc64-linux-gnu \
gcc-multilib-x86-64-linux-gnux32 \
gcc-mips-linux-gnu g++-mips-linux-gnu libc6-dev-mips-cross \
gcc-mips64-linux-gnuabi64 g++-mips64-linux-gnuabi64 libc6-dev-mips64-cross \
gcc-multilib-mips64el-linux-gnuabi64 gcc-mips64el-linux-gnuabi64 g++-mips64el-linux-gnuabi64 \
libc6-dev-mips64el-cross \
gcc-mipsel-linux-gnu g++-mipsel-linux-gnu libc6-dev-mipsel-cross \
gcc-multilib-i686-linux-gnu gcc-multilib-mips-linux-gnu gcc-multilib-mips64-linux-gnuabi64 \
gcc-multilib-x86-64-linux-gnux32 \
gcc-powerpc64le-linux-gnu g++-powerpc64le-linux-gnu libc6-dev-powerpc-ppc64-cross \
gcc-riscv64-linux-gnu g++-riscv64-linux-gnu libc6-dev-riscv64-cross \
gcc-s390x-linux-gnu g++-s390x-linux-gnu libc6-dev-s390x-cross \
zlib1g-dev

# gcc-multilib has no arch-agnostic library but must be installed with arch-specific libraries
RUN if [ $(arch) = "aarch64" ] ; then apt-get install --fix-broken -y gcc-multilib-x86-64-linux-gnu; fi
RUN if [ $(arch) = "x86_64" ] ; then apt-get install --fix-broken -y gcc-multilib; fi
# https://bugs.launchpad.net/ubuntu/+source/gcc-defaults/+bug/1300211/comments/31
RUN if [ $(arch) = "x86_64" ] ; then apt install -y --fix-broken gcc-multilib-powerpc64-linux-gnu && \
ln -s /usr/include/x86_64-linux-gnu/asm/ /usr/local/include/asm; fi

RUN apt-get update -y && apt-get install -y automake autogen build-essential bzr \
ca-certificates clang cmake cpio curl git help2man \
Expand Down

0 comments on commit 98489ca

Please sign in to comment.