Skip to content

Commit bfb638f

Browse files
committed
build: make list of cross compilers more explicit, switch to ARMv8
Since the container image could be run on different architectures we can't implicitly assume that the x86_64 compiler is available, it needs to be made explicit. Additionally, we stopped releasing ARMv7 (32-bit) binaries a long time ago, we should test against ARMv8 (64-bit) instead.
1 parent 4000876 commit bfb638f

6 files changed

Lines changed: 26 additions & 27 deletions

File tree

.github/workflows/build.yml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,13 @@ jobs:
6363
file: ./contrib/containers/ci/ci-slim.Dockerfile
6464
name: dashcore-ci-slim
6565

66-
depends-arm-linux:
67-
name: arm-linux-gnueabihf
66+
depends-aarch64-linux:
67+
name: aarch64-linux-gnu
6868
uses: ./.github/workflows/build-depends.yml
6969
needs: [container, cache-sources]
7070
if: ${{ vars.SKIP_ARM_LINUX == '' }}
7171
with:
72-
build-target: arm-linux
72+
build-target: aarch64-linux
7373
container-path: ${{ needs.container.outputs.path }}
7474

7575
depends-linux64:
@@ -131,16 +131,16 @@ jobs:
131131
with:
132132
container-path: ${{ needs.container-slim.outputs.path }}
133133

134-
src-arm-linux:
135-
name: arm-linux-build
134+
src-aarch64-linux:
135+
name: aarch64-linux-build
136136
uses: ./.github/workflows/build-src.yml
137-
needs: [container, depends-arm-linux]
137+
needs: [container, depends-aarch64-linux]
138138
with:
139-
build-target: arm-linux
139+
build-target: aarch64-linux
140140
container-path: ${{ needs.container.outputs.path }}
141-
depends-key: ${{ needs.depends-arm-linux.outputs.key }}
142-
depends-host: ${{ needs.depends-arm-linux.outputs.host }}
143-
depends-dep-opts: ${{ needs.depends-arm-linux.outputs.dep-opts }}
141+
depends-key: ${{ needs.depends-aarch64-linux.outputs.key }}
142+
depends-host: ${{ needs.depends-aarch64-linux.outputs.host }}
143+
depends-dep-opts: ${{ needs.depends-aarch64-linux.outputs.dep-opts }}
144144

145145
src-linux64:
146146
name: linux64-build

.github/workflows/guix-build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ jobs:
7575
runs-on: ubuntu-24.04-arm
7676
strategy:
7777
matrix:
78-
build_target: [x86_64-linux-gnu, arm-linux-gnueabihf, aarch64-linux-gnu, riscv64-linux-gnu, powerpc64-linux-gnu, x86_64-w64-mingw32, x86_64-apple-darwin, arm64-apple-darwin]
78+
build_target: [x86_64-linux-gnu, aarch64-linux-gnu, riscv64-linux-gnu, powerpc64-linux-gnu, x86_64-w64-mingw32, x86_64-apple-darwin, arm64-apple-darwin]
7979

8080
timeout-minutes: 480
8181
steps:

ci/dash/matrix.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ export LSAN_OPTIONS="suppressions=${BASE_ROOT_DIR}/test/sanitizer_suppressions/l
1616
export TSAN_OPTIONS="suppressions=${BASE_ROOT_DIR}/test/sanitizer_suppressions/tsan:halt_on_error=1"
1717
export UBSAN_OPTIONS="suppressions=${BASE_ROOT_DIR}/test/sanitizer_suppressions/ubsan:print_stacktrace=1:halt_on_error=1:report_error_type=1"
1818

19-
if [ "$BUILD_TARGET" = "arm-linux" ]; then
20-
source ./ci/test/00_setup_env_arm.sh
19+
if [ "$BUILD_TARGET" = "aarch64-linux" ]; then
20+
source ./ci/test/00_setup_env_aarch64.sh
2121
elif [ "$BUILD_TARGET" = "linux64" ]; then
2222
source ./ci/test/00_setup_env_native_qt5.sh
2323
elif [ "$BUILD_TARGET" = "linux64_asan" ]; then
Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,21 @@
66

77
export LC_ALL=C.UTF-8
88

9-
export HOST=arm-linux-gnueabihf
9+
export HOST=aarch64-linux-gnu
1010
# The host arch is unknown, so we run the tests through qemu.
11-
# If the host is arm and wants to run the tests natively, it can set QEMU_USER_CMD to the empty string.
12-
if [ -z ${QEMU_USER_CMD+x} ]; then export QEMU_USER_CMD="${QEMU_USER_CMD:-"qemu-arm -L /usr/arm-linux-gnueabihf/"}"; fi
13-
export DPKG_ADD_ARCH="armhf"
14-
export PACKAGES="python3-zmq g++-arm-linux-gnueabihf busybox libc6:armhf libstdc++6:armhf libfontconfig1:armhf libxcb1:armhf"
11+
# If the host is arm64 and wants to run the tests natively, it can set QEMU_USER_CMD to the empty string.
12+
if [ -z ${QEMU_USER_CMD+x} ]; then export QEMU_USER_CMD="${QEMU_USER_CMD:-"qemu-aarch64 -L /usr/aarch64-linux-gnu/"}"; fi
13+
export DPKG_ADD_ARCH="arm64"
14+
export PACKAGES="python3-zmq g++-aarch64-linux-gnu busybox libc6:arm64 libstdc++6:arm64 libfontconfig1:arm64 libxcb1:arm64"
1515
if [ -n "$QEMU_USER_CMD" ]; then
1616
# Likely cross-compiling, so install the needed gcc and qemu-user
1717
export PACKAGES="$PACKAGES qemu-user"
1818
fi
19-
export CONTAINER_NAME=ci_arm_linux
19+
export CONTAINER_NAME=ci_aarch64_linux
2020
# Use debian to avoid 404 apt errors when cross compiling
2121
export CHECK_DOC=0
2222
export USE_BUSY_BOX=true
2323
export RUN_UNIT_TESTS=false
2424
export RUN_FUNCTIONAL_TESTS=false
2525
export GOAL="install"
26-
# -Wno-psabi is to disable ABI warnings: "note: parameter passing for argument of type ... changed in GCC 7.1"
27-
# This could be removed once the ABI change warning does not show up by default
28-
export BITCOIN_CONFIG="--enable-reduce-exports CXXFLAGS=-Wno-psabi"
26+
export BITCOIN_CONFIG="--enable-reduce-exports"

contrib/containers/ci/ci.Dockerfile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@ RUN set -ex; \
1919
cmake \
2020
g++-11 \
2121
g++-14 \
22-
g++-arm-linux-gnueabihf \
22+
g++-aarch64-linux-gnu \
2323
g++-mingw-w64-x86-64 \
24+
g++-x86-64-linux-gnu \
2425
gawk \
2526
gettext \
2627
libtool \

contrib/containers/deploy/Dockerfile.GitHubActions.Dispatch

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ RUN apt-get update && \
99
build-essential \
1010
ca-certificates \
1111
curl \
12-
g++-arm-linux-gnueabihf \
12+
g++-aarch64-linux-gnu \
1313
libtool \
1414
pkg-config \
1515
python3 \
@@ -23,22 +23,22 @@ COPY . .
2323
ARG TARGETPLATFORM
2424

2525
RUN case "$TARGETPLATFORM" in \
26-
"linux/arm64") make HOST=arm-linux-gnueabihf -C depends -j`nproc | awk '{x=$1/2; print x}'` ;; \
26+
"linux/arm64") make HOST=aarch64-linux-gnu -C depends -j`nproc | awk '{x=$1/2; print x}'` ;; \
2727
"linux/amd64") make HOST=x86_64-pc-linux-gnu -C depends -j`nproc | awk '{x=$1/2; print x}'` ;; \
2828
*) exit 1 ;; \
2929
esac
3030

3131
RUN ./autogen.sh && \
3232
case "$TARGETPLATFORM" in \
33-
"linux/arm64") ./configure --prefix=`pwd`/depends/arm-linux-gnueabihf ;; \
33+
"linux/arm64") ./configure --prefix=`pwd`/depends/aarch64-linux-gnu ;; \
3434
"linux/amd64") ./configure --prefix=`pwd`/depends/x86_64-pc-linux-gnu ;; \
3535
esac
3636

3737
RUN make -j`nproc | awk '{x=$1/2; print x}'` && make install
3838

3939
RUN mkdir built-target && \
4040
case "$TARGETPLATFORM" in \
41-
"linux/arm64") cp depends/arm-linux-gnueabihf/bin/dash* /home/dash/built-target ;; \
41+
"linux/arm64") cp depends/aarch64-linux-gnu/bin/dash* /home/dash/built-target ;; \
4242
"linux/amd64") cp depends/x86_64-pc-linux-gnu/bin/dash* /home/dash/built-target ;; \
4343
esac
4444

0 commit comments

Comments
 (0)