From de9aa5e8e9a8a32100dcc33d0b11eee359d3ca86 Mon Sep 17 00:00:00 2001 From: Dennis Ameling Date: Thu, 28 Jan 2021 14:34:11 +0100 Subject: [PATCH 1/3] Properly cross-compile for Linux arm64 --- .github/workflows/ci.yml | 19 +++++++++--------- .travis.yml | 8 +++++++- docker/arm64-cross-compile/Dockerfile | 29 +++++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 11 deletions(-) create mode 100644 docker/arm64-cross-compile/Dockerfile diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 72582452..50adc771 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -70,21 +70,20 @@ jobs: npm run prebuild-electron name: Prebuild (x64) - - run: npm run prebuild-electron-arm64 - if: ${{ matrix.os != 'macos-latest' }} - name: Prebuild for Electron (ARM64) + - run: | + npm run prebuild-electron-arm64 + npm run prebuild-node-ia32 + npm run prebuild-electron-ia32 + if: ${{ matrix.os == 'windows-latest' }} + name: Prebuild (Windows x86 + ARM64) - run: | docker build -t node-keytar/i386 docker/i386 docker run --rm -v ${PWD}:/project node-keytar/i386 /bin/bash -c "cd /project && npm run prebuild-node-ia32 && npm run prebuild-electron-ia32" + docker build -t node-keytar/arm64-cross-compile docker/arm64-cross-compile + docker run --rm -v ${PWD}:/project node-keytar/arm-64-cross-compile /bin/bash -c "cd /project && npm run prebuild-electron-arm64" if: ${{ matrix.os == 'ubuntu-16.04' }} - name: Prebuild (x86) - - - run: | - npm run prebuild-node-ia32 - npm run prebuild-electron-ia32 - if: ${{ matrix.os == 'windows-latest' }} - name: Prebuild (x86) + name: Prebuild (Linux x86 + ARM64) - run: | ls prebuilds/ diff --git a/.travis.yml b/.travis.yml index 257d48c6..32779db3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -52,5 +52,11 @@ script: - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then npm test; fi - npm run prebuild-node - npm run prebuild-electron - - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then docker build -t node-keytar/i386 docker/i386 && docker run --rm -v ${PWD}:/project node-keytar/i386 /bin/bash -c "cd /project && npm run prebuild-node-ia32 && npm run prebuild-electron-ia32 && npm run prebuild-electron-arm64"; fi + - | + if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then + docker build -t node-keytar/i386 docker/i386 + docker run --rm -v ${PWD}:/project node-keytar/i386 /bin/bash -c "cd /project && npm run prebuild-node-ia32 && npm run prebuild-electron-ia32" + docker build -t node-keytar/arm64-cross-compile docker/arm64-cross-compile + docker run --rm -v ${PWD}:/project node-keytar/arm-64-cross-compile /bin/bash -c "cd /project && npm run prebuild-electron-arm64" + fi - if [[ -n "$TRAVIS_TAG" ]]; then npm run upload; fi diff --git a/docker/arm64-cross-compile/Dockerfile b/docker/arm64-cross-compile/Dockerfile new file mode 100644 index 00000000..278c96b6 --- /dev/null +++ b/docker/arm64-cross-compile/Dockerfile @@ -0,0 +1,29 @@ +FROM debian:buster + +RUN dpkg --add-architecture arm64 +RUN apt-get update && apt-get install -y --no-install-recommends \ + crossbuild-essential-arm64 \ + python \ + git \ + pkg-config \ + fakeroot \ + rpm \ + ca-certificates \ + libx11-dev:arm64 \ + libx11-xcb-dev:arm64 \ + libxkbfile-dev:arm64 \ + libsecret-1-dev:arm64 \ + curl + +ENV AS=/usr/bin/aarch64-linux-gnu-as \ + STRIP=/usr/bin/aarch64-linux-gnu-strip \ + AR=/usr/bin/aarch64-linux-gnu-ar \ + CC=/usr/bin/aarch64-linux-gnu-gcc \ + CPP=/usr/bin/aarch64-linux-gnu-cpp \ + CXX=/usr/bin/aarch64-linux-gnu-g++ \ + LD=/usr/bin/aarch64-linux-gnu-ld \ + FC=/usr/bin/aarch64-linux-gnu-gfortran \ + PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig + +RUN curl -sL https://deb.nodesource.com/setup_15.x | bash - +RUN apt-get install -y nodejs From 1b33334070c3103d428fa356d322f35b1104b199 Mon Sep 17 00:00:00 2001 From: Dennis Ameling Date: Thu, 28 Jan 2021 14:45:25 +0100 Subject: [PATCH 2/3] Fix typo in Docker image name --- .github/workflows/ci.yml | 2 +- .travis.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 50adc771..eabfd4be 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -81,7 +81,7 @@ jobs: docker build -t node-keytar/i386 docker/i386 docker run --rm -v ${PWD}:/project node-keytar/i386 /bin/bash -c "cd /project && npm run prebuild-node-ia32 && npm run prebuild-electron-ia32" docker build -t node-keytar/arm64-cross-compile docker/arm64-cross-compile - docker run --rm -v ${PWD}:/project node-keytar/arm-64-cross-compile /bin/bash -c "cd /project && npm run prebuild-electron-arm64" + docker run --rm -v ${PWD}:/project node-keytar/arm64-cross-compile /bin/bash -c "cd /project && npm run prebuild-electron-arm64" if: ${{ matrix.os == 'ubuntu-16.04' }} name: Prebuild (Linux x86 + ARM64) diff --git a/.travis.yml b/.travis.yml index 32779db3..c16cd07e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -57,6 +57,6 @@ script: docker build -t node-keytar/i386 docker/i386 docker run --rm -v ${PWD}:/project node-keytar/i386 /bin/bash -c "cd /project && npm run prebuild-node-ia32 && npm run prebuild-electron-ia32" docker build -t node-keytar/arm64-cross-compile docker/arm64-cross-compile - docker run --rm -v ${PWD}:/project node-keytar/arm-64-cross-compile /bin/bash -c "cd /project && npm run prebuild-electron-arm64" + docker run --rm -v ${PWD}:/project node-keytar/arm64-cross-compile /bin/bash -c "cd /project && npm run prebuild-electron-arm64" fi - if [[ -n "$TRAVIS_TAG" ]]; then npm run upload; fi From d1bcf5838f0c9568562c461840e0111169cc2f93 Mon Sep 17 00:00:00 2001 From: Dennis Ameling Date: Thu, 28 Jan 2021 14:59:55 +0100 Subject: [PATCH 3/3] Fix folder permission issues --- .github/workflows/ci.yml | 3 ++- .travis.yml | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index eabfd4be..80c61803 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -78,8 +78,9 @@ jobs: name: Prebuild (Windows x86 + ARM64) - run: | + mkdir -p prebuilds && chmod 777 prebuilds docker build -t node-keytar/i386 docker/i386 - docker run --rm -v ${PWD}:/project node-keytar/i386 /bin/bash -c "cd /project && npm run prebuild-node-ia32 && npm run prebuild-electron-ia32" + docker run --rm -v ${PWD}:/project node-keytar/i386 /bin/bash -c "cd /project && npm run prebuild-node-ia32 && npm run prebuild-electron-ia32 && rm -rf build" docker build -t node-keytar/arm64-cross-compile docker/arm64-cross-compile docker run --rm -v ${PWD}:/project node-keytar/arm64-cross-compile /bin/bash -c "cd /project && npm run prebuild-electron-arm64" if: ${{ matrix.os == 'ubuntu-16.04' }} diff --git a/.travis.yml b/.travis.yml index c16cd07e..1dde81cb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -54,8 +54,9 @@ script: - npm run prebuild-electron - | if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then + mkdir -p prebuilds && chmod 777 prebuilds docker build -t node-keytar/i386 docker/i386 - docker run --rm -v ${PWD}:/project node-keytar/i386 /bin/bash -c "cd /project && npm run prebuild-node-ia32 && npm run prebuild-electron-ia32" + docker run --rm -v ${PWD}:/project node-keytar/i386 /bin/bash -c "cd /project && npm run prebuild-node-ia32 && npm run prebuild-electron-ia32 && rm -rf build" docker build -t node-keytar/arm64-cross-compile docker/arm64-cross-compile docker run --rm -v ${PWD}:/project node-keytar/arm64-cross-compile /bin/bash -c "cd /project && npm run prebuild-electron-arm64" fi