diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 72582452..80c61803 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -70,21 +70,21 @@ 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: | - 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" - if: ${{ matrix.os == 'ubuntu-16.04' }} - name: Prebuild (x86) - - run: | + npm run prebuild-electron-arm64 npm run prebuild-node-ia32 npm run prebuild-electron-ia32 if: ${{ matrix.os == 'windows-latest' }} - name: Prebuild (x86) + 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 && 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' }} + name: Prebuild (Linux x86 + ARM64) - run: | ls prebuilds/ diff --git a/.travis.yml b/.travis.yml index 257d48c6..1dde81cb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -52,5 +52,12 @@ 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 + 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 && 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 - 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