From 14393b673f9f944e20ea3462f7655099f1672500 Mon Sep 17 00:00:00 2001 From: Sunoru Date: Thu, 6 Jul 2023 19:02:22 -0400 Subject: [PATCH 01/13] More platforms. --- .github/workflows/build.yml | 29 ++++++++++++++----- scripts/build-linux.sh | 11 ------- scripts/build.sh | 18 ++++++++++++ scripts/build/linux-arm64.sh | 8 +++++ scripts/build/linux-armv7.sh | 8 +++++ scripts/build/linux-x64.sh | 8 +++++ scripts/build/linux-x86.sh | 8 +++++ .../{build-macos.sh => build/macos-x64.sh} | 2 -- .../{build-windows.sh => build/win-x64.sh} | 4 +-- scripts/build/win-x86.sh | 9 ++++++ scripts/download.sh | 3 +- 11 files changed, 83 insertions(+), 25 deletions(-) delete mode 100755 scripts/build-linux.sh create mode 100644 scripts/build.sh create mode 100644 scripts/build/linux-arm64.sh create mode 100644 scripts/build/linux-armv7.sh create mode 100644 scripts/build/linux-x64.sh create mode 100644 scripts/build/linux-x86.sh rename scripts/{build-macos.sh => build/macos-x64.sh} (79%) mode change 100755 => 100644 rename scripts/{build-windows.sh => build/win-x64.sh} (65%) mode change 100755 => 100644 create mode 100644 scripts/build/win-x86.sh diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 35031e0..72db686 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,6 +10,7 @@ on: env: NODE_VERSION: "v18.16.1" + NODE_SOURCE_DIR: "./node" jobs: build: @@ -18,7 +19,26 @@ jobs: matrix: arch: [x64] os: [macos-latest, ubuntu-latest, windows-2019] + include: + - arch: x64 + os: macos-latest + - arch: x64 + os: windows-2019 + - arch: x64 + os: ubuntu-latest + + - arch: x86 + os: windows-2019 + - arch: x86 + os: ubuntu-latest + + - arch: armv7 + os: ubuntu-latest + - arch: arm64 + os: ubuntu-latest runs-on: ${{ matrix.os }} + env: + TARGET_ARCH: ${{ matrix.arch }} steps: - uses: actions/checkout@v2 - name: Download source code @@ -26,14 +46,7 @@ jobs: run: ./scripts/download.sh - name: Build shell: bash - run: | - if [ "$RUNNER_OS" == "Linux" ]; then - ./scripts/build-linux.sh - elif [ "$RUNNER_OS" == "Windows" ]; then - ./scripts/build-windows.sh - else - ./scripts/build-macos.sh - fi + run: ./scripts/build.sh - name: Upload artifacts uses: actions/upload-artifact@v2.3.1 with: diff --git a/scripts/build-linux.sh b/scripts/build-linux.sh deleted file mode 100755 index 084547a..0000000 --- a/scripts/build-linux.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -set -ex - -. "$(dirname "$0")"/prepare-env.sh -cd ./node - -./configure --prefix=$OUTPUT_PREFIX --shared - -make -j`nproc` -make install -cp ./LICENSE "${OUTPUT_PREFIX}/LICENSE" diff --git a/scripts/build.sh b/scripts/build.sh new file mode 100644 index 0000000..facfd7c --- /dev/null +++ b/scripts/build.sh @@ -0,0 +1,18 @@ +#!/bin/bash +set -ex + +SCRIPTS_DIR="$(dirname "$0")" +. $SCRIPTS_DIR/prepare-env.sh +cd "$NODE_SOURCE_DIR" + +if [ "$RUNNER_OS" == "Linux" ]; then + TARGET_OS="linux" +elif [ "$RUNNER_OS" == "macOS" ]; then + TARGET_OS="macos" +elif [ "$RUNNER_OS" == "Windows" ]; then + TARGET_OS="win" +else + echo "Unknown OS: $RUNNER_OS" + exit 1 +fi +$SCRIPTS_DIR/build/$TARGET_OS-$TARGET_ARCH.sh diff --git a/scripts/build/linux-arm64.sh b/scripts/build/linux-arm64.sh new file mode 100644 index 0000000..55052b9 --- /dev/null +++ b/scripts/build/linux-arm64.sh @@ -0,0 +1,8 @@ +#!/bin/bash +set -ex + +./configure --prefix=$OUTPUT_PREFIX --shared --cross-compiling --dest-cpu=arm64 --dest-os=linux + +make -j`nproc` +make install +cp ./LICENSE "${OUTPUT_PREFIX}/LICENSE" diff --git a/scripts/build/linux-armv7.sh b/scripts/build/linux-armv7.sh new file mode 100644 index 0000000..b17d647 --- /dev/null +++ b/scripts/build/linux-armv7.sh @@ -0,0 +1,8 @@ +#!/bin/bash +set -ex + +./configure --prefix=$OUTPUT_PREFIX --shared --cross-compiling --dest-cpu=armv7 --dest-os=linux + +make -j`nproc` +make install +cp ./LICENSE "${OUTPUT_PREFIX}/LICENSE" diff --git a/scripts/build/linux-x64.sh b/scripts/build/linux-x64.sh new file mode 100644 index 0000000..06bc7de --- /dev/null +++ b/scripts/build/linux-x64.sh @@ -0,0 +1,8 @@ +#!/bin/bash +set -ex + +./configure --prefix=$OUTPUT_PREFIX --shared --no-cross-compiling + +make -j`nproc` +make install +cp ./LICENSE "${OUTPUT_PREFIX}/LICENSE" diff --git a/scripts/build/linux-x86.sh b/scripts/build/linux-x86.sh new file mode 100644 index 0000000..61f39f3 --- /dev/null +++ b/scripts/build/linux-x86.sh @@ -0,0 +1,8 @@ +#!/bin/bash +set -ex + +./configure --prefix=$OUTPUT_PREFIX --shared --cross-compiling --dest-cpu=x86 --dest-os=linux + +make -j`nproc` +make install +cp ./LICENSE "${OUTPUT_PREFIX}/LICENSE" diff --git a/scripts/build-macos.sh b/scripts/build/macos-x64.sh old mode 100755 new mode 100644 similarity index 79% rename from scripts/build-macos.sh rename to scripts/build/macos-x64.sh index 5bef1ff..d625a24 --- a/scripts/build-macos.sh +++ b/scripts/build/macos-x64.sh @@ -2,8 +2,6 @@ set -ex brew install coreutils -. "$(dirname "$0")"/prepare-env.sh -cd ./node ./configure --prefix=$OUTPUT_PREFIX --shared diff --git a/scripts/build-windows.sh b/scripts/build/win-x64.sh old mode 100755 new mode 100644 similarity index 65% rename from scripts/build-windows.sh rename to scripts/build/win-x64.sh index 1f961a1..1e088d0 --- a/scripts/build-windows.sh +++ b/scripts/build/win-x64.sh @@ -2,10 +2,8 @@ set -ex choco install nasm -. "$(dirname "$0")"/prepare-env.sh -cd ./node -./vcbuild.bat release dll package +./vcbuild.bat release dll package x64 mv ./out/Release/node-${NODE_VERSION}-win-x64 "${OUTPUT_PREFIX}/" cp ./LICENSE "${OUTPUT_PREFIX}/LICENSE" diff --git a/scripts/build/win-x86.sh b/scripts/build/win-x86.sh new file mode 100644 index 0000000..71a6be1 --- /dev/null +++ b/scripts/build/win-x86.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -ex + +choco install nasm + +./vcbuild.bat release dll package x86 + +mv ./out/Release/node-${NODE_VERSION}-win-x86 "${OUTPUT_PREFIX}/" +cp ./LICENSE "${OUTPUT_PREFIX}/LICENSE" diff --git a/scripts/download.sh b/scripts/download.sh index ae32eb3..183ee65 100755 --- a/scripts/download.sh +++ b/scripts/download.sh @@ -1,6 +1,7 @@ #!/bin/bash echo "NODE_VERSION=${NODE_VERSION}" +echo "NODE_SOURCE_DIR=${NODE_SOURCE_DIR}" curl -O https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}.tar.gz tar zxf ./node-${NODE_VERSION}.tar.gz -mv ./node-${NODE_VERSION} ./node +mv ./node-${NODE_VERSION} "$NODE_SOURCE_DIR" From 392e437b840087cf4b9501ff2e4040702cbe7d35 Mon Sep 17 00:00:00 2001 From: Sunoru Date: Thu, 6 Jul 2023 19:07:09 -0400 Subject: [PATCH 02/13] Update mode. --- scripts/build.sh | 0 scripts/build/linux-arm64.sh | 0 scripts/build/linux-armv7.sh | 0 scripts/build/linux-x64.sh | 0 scripts/build/linux-x86.sh | 0 scripts/build/macos-x64.sh | 0 scripts/build/win-x64.sh | 0 scripts/build/win-x86.sh | 0 8 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 scripts/build.sh mode change 100644 => 100755 scripts/build/linux-arm64.sh mode change 100644 => 100755 scripts/build/linux-armv7.sh mode change 100644 => 100755 scripts/build/linux-x64.sh mode change 100644 => 100755 scripts/build/linux-x86.sh mode change 100644 => 100755 scripts/build/macos-x64.sh mode change 100644 => 100755 scripts/build/win-x64.sh mode change 100644 => 100755 scripts/build/win-x86.sh diff --git a/scripts/build.sh b/scripts/build.sh old mode 100644 new mode 100755 diff --git a/scripts/build/linux-arm64.sh b/scripts/build/linux-arm64.sh old mode 100644 new mode 100755 diff --git a/scripts/build/linux-armv7.sh b/scripts/build/linux-armv7.sh old mode 100644 new mode 100755 diff --git a/scripts/build/linux-x64.sh b/scripts/build/linux-x64.sh old mode 100644 new mode 100755 diff --git a/scripts/build/linux-x86.sh b/scripts/build/linux-x86.sh old mode 100644 new mode 100755 diff --git a/scripts/build/macos-x64.sh b/scripts/build/macos-x64.sh old mode 100644 new mode 100755 diff --git a/scripts/build/win-x64.sh b/scripts/build/win-x64.sh old mode 100644 new mode 100755 diff --git a/scripts/build/win-x86.sh b/scripts/build/win-x86.sh old mode 100644 new mode 100755 From 3f5a7fdb69b0d4ddc11a100f673a51f24d58cae1 Mon Sep 17 00:00:00 2001 From: Sunoru Date: Thu, 6 Jul 2023 19:12:17 -0400 Subject: [PATCH 03/13] Use abspath for scripts dir. --- scripts/build.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scripts/build.sh b/scripts/build.sh index facfd7c..de4a2b6 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -2,6 +2,10 @@ set -ex SCRIPTS_DIR="$(dirname "$0")" +case "$SCRIPTS_DIR" in + /*) ;; + *) SCRIPTS_DIR="$(pwd)/$SCRIPTS_DIR" +esac . $SCRIPTS_DIR/prepare-env.sh cd "$NODE_SOURCE_DIR" From 89296c3b7bf7a3a2ee0f7c8a4a2f6a0669a7dcfc Mon Sep 17 00:00:00 2001 From: Sunoru Date: Thu, 6 Jul 2023 19:31:14 -0400 Subject: [PATCH 04/13] Update scripts. --- .github/workflows/build.yml | 1 - patches/configure.py.patch | 17 +++++++++++++++++ scripts/build.sh | 12 ++++-------- scripts/build/linux-arm64.sh | 8 -------- scripts/build/linux-armv7.sh | 8 -------- scripts/build/linux-x64.sh | 8 -------- scripts/build/linux-x86.sh | 8 -------- scripts/build/linux.sh | 17 +++++++++++++++++ scripts/build/{macos-x64.sh => macos.sh} | 2 -- scripts/build/win-x64.sh | 9 --------- scripts/build/win-x86.sh | 9 --------- scripts/build/win.sh | 9 +++++++++ scripts/download.sh | 2 +- scripts/prepare-env.sh | 5 +++++ 14 files changed, 53 insertions(+), 62 deletions(-) create mode 100644 patches/configure.py.patch delete mode 100755 scripts/build/linux-arm64.sh delete mode 100755 scripts/build/linux-armv7.sh delete mode 100755 scripts/build/linux-x64.sh delete mode 100755 scripts/build/linux-x86.sh create mode 100644 scripts/build/linux.sh rename scripts/build/{macos-x64.sh => macos.sh} (85%) mode change 100755 => 100644 delete mode 100755 scripts/build/win-x64.sh delete mode 100755 scripts/build/win-x86.sh create mode 100644 scripts/build/win.sh diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 72db686..393daab 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,7 +10,6 @@ on: env: NODE_VERSION: "v18.16.1" - NODE_SOURCE_DIR: "./node" jobs: build: diff --git a/patches/configure.py.patch b/patches/configure.py.patch new file mode 100644 index 0000000..43d9c1c --- /dev/null +++ b/patches/configure.py.patch @@ -0,0 +1,17 @@ +diff --git a/configure.py b/configure.py +index a4e5723067..60ec604454 100755 +--- a/configure.py ++++ b/configure.py +@@ -1245,9 +1245,9 @@ def configure_node(o): + + o['variables']['want_separate_host_toolset'] = int(cross_compiling) + +- # Enable branch protection for arm64 +- if target_arch == 'arm64': +- o['cflags']+=['-msign-return-address=all'] ++ # # Enable branch protection for arm64 ++ # if target_arch == 'arm64': ++ # o['cflags']+=['-msign-return-address=all'] + + if options.node_snapshot_main is not None: + if options.shared: diff --git a/scripts/build.sh b/scripts/build.sh index de4a2b6..2404ca7 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -1,13 +1,9 @@ #!/bin/bash set -ex -SCRIPTS_DIR="$(dirname "$0")" -case "$SCRIPTS_DIR" in - /*) ;; - *) SCRIPTS_DIR="$(pwd)/$SCRIPTS_DIR" -esac -. $SCRIPTS_DIR/prepare-env.sh -cd "$NODE_SOURCE_DIR" +. "$(dirname "$0")"/prepare-env.sh +SCRIPTS_DIR=$WORKSPACE/scripts +cd $WORKSPACE/node if [ "$RUNNER_OS" == "Linux" ]; then TARGET_OS="linux" @@ -19,4 +15,4 @@ else echo "Unknown OS: $RUNNER_OS" exit 1 fi -$SCRIPTS_DIR/build/$TARGET_OS-$TARGET_ARCH.sh +. $SCRIPTS_DIR/build/$TARGET_OS.sh diff --git a/scripts/build/linux-arm64.sh b/scripts/build/linux-arm64.sh deleted file mode 100755 index 55052b9..0000000 --- a/scripts/build/linux-arm64.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -set -ex - -./configure --prefix=$OUTPUT_PREFIX --shared --cross-compiling --dest-cpu=arm64 --dest-os=linux - -make -j`nproc` -make install -cp ./LICENSE "${OUTPUT_PREFIX}/LICENSE" diff --git a/scripts/build/linux-armv7.sh b/scripts/build/linux-armv7.sh deleted file mode 100755 index b17d647..0000000 --- a/scripts/build/linux-armv7.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -set -ex - -./configure --prefix=$OUTPUT_PREFIX --shared --cross-compiling --dest-cpu=armv7 --dest-os=linux - -make -j`nproc` -make install -cp ./LICENSE "${OUTPUT_PREFIX}/LICENSE" diff --git a/scripts/build/linux-x64.sh b/scripts/build/linux-x64.sh deleted file mode 100755 index 06bc7de..0000000 --- a/scripts/build/linux-x64.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -set -ex - -./configure --prefix=$OUTPUT_PREFIX --shared --no-cross-compiling - -make -j`nproc` -make install -cp ./LICENSE "${OUTPUT_PREFIX}/LICENSE" diff --git a/scripts/build/linux-x86.sh b/scripts/build/linux-x86.sh deleted file mode 100755 index 61f39f3..0000000 --- a/scripts/build/linux-x86.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -set -ex - -./configure --prefix=$OUTPUT_PREFIX --shared --cross-compiling --dest-cpu=x86 --dest-os=linux - -make -j`nproc` -make install -cp ./LICENSE "${OUTPUT_PREFIX}/LICENSE" diff --git a/scripts/build/linux.sh b/scripts/build/linux.sh new file mode 100644 index 0000000..cc013d3 --- /dev/null +++ b/scripts/build/linux.sh @@ -0,0 +1,17 @@ +#!/bin/bash +set -ex + +if [ "$TARGET_ARCH" == "x64" ]; then + ./configure --prefix=$OUTPUT_PREFIX --shared --no-cross-compiling +else + DEST_CPU=$TARGET_ARCH + if [ "$TARGET_ARCH" == "armv7" ]; then + DEST_CPU="arm" + fi + ./configure --prefix=$OUTPUT_PREFIX --shared \ + --cross-compiling --dest-cpu=$DEST_CPU --dest-os=linux +fi + +make -j`nproc` +make install +cp ./LICENSE "${OUTPUT_PREFIX}/LICENSE" diff --git a/scripts/build/macos-x64.sh b/scripts/build/macos.sh old mode 100755 new mode 100644 similarity index 85% rename from scripts/build/macos-x64.sh rename to scripts/build/macos.sh index d625a24..1578f32 --- a/scripts/build/macos-x64.sh +++ b/scripts/build/macos.sh @@ -1,8 +1,6 @@ #!/bin/bash set -ex -brew install coreutils - ./configure --prefix=$OUTPUT_PREFIX --shared make -j`sysctl -n hw.ncpu` diff --git a/scripts/build/win-x64.sh b/scripts/build/win-x64.sh deleted file mode 100755 index 1e088d0..0000000 --- a/scripts/build/win-x64.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash -set -ex - -choco install nasm - -./vcbuild.bat release dll package x64 - -mv ./out/Release/node-${NODE_VERSION}-win-x64 "${OUTPUT_PREFIX}/" -cp ./LICENSE "${OUTPUT_PREFIX}/LICENSE" diff --git a/scripts/build/win-x86.sh b/scripts/build/win-x86.sh deleted file mode 100755 index 71a6be1..0000000 --- a/scripts/build/win-x86.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash -set -ex - -choco install nasm - -./vcbuild.bat release dll package x86 - -mv ./out/Release/node-${NODE_VERSION}-win-x86 "${OUTPUT_PREFIX}/" -cp ./LICENSE "${OUTPUT_PREFIX}/LICENSE" diff --git a/scripts/build/win.sh b/scripts/build/win.sh new file mode 100644 index 0000000..a599141 --- /dev/null +++ b/scripts/build/win.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -ex + +choco install nasm + +./vcbuild.bat release dll package ${TARGET_ARCH} + +mv ./out/Release/node-${NODE_VERSION}-win-${TARGET_ARCH} "${OUTPUT_PREFIX}/" +cp ./LICENSE "${OUTPUT_PREFIX}/LICENSE" diff --git a/scripts/download.sh b/scripts/download.sh index 183ee65..07e7000 100755 --- a/scripts/download.sh +++ b/scripts/download.sh @@ -4,4 +4,4 @@ echo "NODE_VERSION=${NODE_VERSION}" echo "NODE_SOURCE_DIR=${NODE_SOURCE_DIR}" curl -O https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}.tar.gz tar zxf ./node-${NODE_VERSION}.tar.gz -mv ./node-${NODE_VERSION} "$NODE_SOURCE_DIR" +mv ./node-${NODE_VERSION} ./node diff --git a/scripts/prepare-env.sh b/scripts/prepare-env.sh index e7ed698..84b1c31 100755 --- a/scripts/prepare-env.sh +++ b/scripts/prepare-env.sh @@ -1,6 +1,11 @@ #!/bin/bash set -ex +if [ "$RUNNER_OS" == "macOS" ]; then + brew install coreutils + TARGET_OS="linux" +fi + export WORKSPACE=$(realpath "$(dirname "$0")"/..) export OUTPUT_PREFIX="${WORKSPACE}/artifacts" mkdir -p "${OUTPUT_PREFIX}" From 782f79296dba8cd8c7b0f7d251f55486b476ab30 Mon Sep 17 00:00:00 2001 From: Sunoru Date: Thu, 6 Jul 2023 19:38:07 -0400 Subject: [PATCH 05/13] Update scripts. --- .github/workflows/build.yml | 4 ++++ scripts/build/linux.sh | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 393daab..c08193a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -8,6 +8,10 @@ on: branches: - main +concurrency: + group: ${{ github.ref }} + cancel-in-progress: true + env: NODE_VERSION: "v18.16.1" diff --git a/scripts/build/linux.sh b/scripts/build/linux.sh index cc013d3..16deb2a 100644 --- a/scripts/build/linux.sh +++ b/scripts/build/linux.sh @@ -8,6 +8,11 @@ else if [ "$TARGET_ARCH" == "armv7" ]; then DEST_CPU="arm" fi + # 32 bit + if [ "$TARGET_ARCH" == "armv7" || "$TARGET_ARCH" == "x86" ]; then + sudo apt-get install gcc-multilib g++-multilib + fi + patch -p1 $WORKSPACE/patches/configure.py.patch ./configure --prefix=$OUTPUT_PREFIX --shared \ --cross-compiling --dest-cpu=$DEST_CPU --dest-os=linux fi From 75f99667e66d4a294a6c94a882b229a2b6428c01 Mon Sep 17 00:00:00 2001 From: Sunoru Date: Thu, 6 Jul 2023 19:40:42 -0400 Subject: [PATCH 06/13] Update scripts. --- scripts/build.sh | 6 +++--- scripts/build/linux.sh | 6 +++--- scripts/prepare-env.sh | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/scripts/build.sh b/scripts/build.sh index 2404ca7..17e5e66 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -5,11 +5,11 @@ set -ex SCRIPTS_DIR=$WORKSPACE/scripts cd $WORKSPACE/node -if [ "$RUNNER_OS" == "Linux" ]; then +if [[ "$RUNNER_OS" == "Linux" ]]; then TARGET_OS="linux" -elif [ "$RUNNER_OS" == "macOS" ]; then +elif [[ "$RUNNER_OS" == "macOS" ]]; then TARGET_OS="macos" -elif [ "$RUNNER_OS" == "Windows" ]; then +elif [[ "$RUNNER_OS" == "Windows" ]]; then TARGET_OS="win" else echo "Unknown OS: $RUNNER_OS" diff --git a/scripts/build/linux.sh b/scripts/build/linux.sh index 16deb2a..1d24e6e 100644 --- a/scripts/build/linux.sh +++ b/scripts/build/linux.sh @@ -1,15 +1,15 @@ #!/bin/bash set -ex -if [ "$TARGET_ARCH" == "x64" ]; then +if [[ "$TARGET_ARCH" == "x64" ]]; then ./configure --prefix=$OUTPUT_PREFIX --shared --no-cross-compiling else DEST_CPU=$TARGET_ARCH - if [ "$TARGET_ARCH" == "armv7" ]; then + if [[ "$TARGET_ARCH" == "armv7" ]]; then DEST_CPU="arm" fi # 32 bit - if [ "$TARGET_ARCH" == "armv7" || "$TARGET_ARCH" == "x86" ]; then + if [[ "$TARGET_ARCH" == "armv7" || "$TARGET_ARCH" == "x86" ]]; then sudo apt-get install gcc-multilib g++-multilib fi patch -p1 $WORKSPACE/patches/configure.py.patch diff --git a/scripts/prepare-env.sh b/scripts/prepare-env.sh index 84b1c31..88c8093 100755 --- a/scripts/prepare-env.sh +++ b/scripts/prepare-env.sh @@ -1,7 +1,7 @@ #!/bin/bash set -ex -if [ "$RUNNER_OS" == "macOS" ]; then +if [[ "$RUNNER_OS" == "macOS" ]]; then brew install coreutils TARGET_OS="linux" fi From 05b8169e6052016bc1f39eb529f4ce04ba8ef5d4 Mon Sep 17 00:00:00 2001 From: Sunoru Date: Thu, 6 Jul 2023 20:15:11 -0400 Subject: [PATCH 07/13] Update scripts. --- .github/workflows/build.yml | 2 +- patches/configure.py.patch | 20 ++++++++------------ scripts/build/linux.sh | 13 +++++++++---- scripts/download.sh | 1 - 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c08193a..2966c60 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,7 +18,7 @@ env: jobs: build: strategy: - fail-fast: false + fail-fast: true matrix: arch: [x64] os: [macos-latest, ubuntu-latest, windows-2019] diff --git a/patches/configure.py.patch b/patches/configure.py.patch index 43d9c1c..04999dd 100644 --- a/patches/configure.py.patch +++ b/patches/configure.py.patch @@ -1,17 +1,13 @@ diff --git a/configure.py b/configure.py -index a4e5723067..60ec604454 100755 +index 40e0395..b70d238 100755 --- a/configure.py +++ b/configure.py -@@ -1245,9 +1245,9 @@ def configure_node(o): - - o['variables']['want_separate_host_toolset'] = int(cross_compiling) - -- # Enable branch protection for arm64 -- if target_arch == 'arm64': +@@ -1296,7 +1296,7 @@ def configure_node(o): + + # Enable branch protection for arm64 + if target_arch == 'arm64': - o['cflags']+=['-msign-return-address=all'] -+ # # Enable branch protection for arm64 -+ # if target_arch == 'arm64': -+ # o['cflags']+=['-msign-return-address=all'] - ++ # o['cflags']+=['-msign-return-address=all'] + o['variables']['arm_fpu'] = options.arm_fpu or 'neon' + if options.node_snapshot_main is not None: - if options.shared: diff --git a/scripts/build/linux.sh b/scripts/build/linux.sh index 1d24e6e..492d712 100644 --- a/scripts/build/linux.sh +++ b/scripts/build/linux.sh @@ -7,12 +7,17 @@ else DEST_CPU=$TARGET_ARCH if [[ "$TARGET_ARCH" == "armv7" ]]; then DEST_CPU="arm" - fi - # 32 bit - if [[ "$TARGET_ARCH" == "armv7" || "$TARGET_ARCH" == "x86" ]]; then + sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf + CC=arm-linux-gnueabihf-gcc + CXX=arm-linux-gnueabihf-g++ + elif [[ "$TARGET_ARCH" == "x86" ]]; then sudo apt-get install gcc-multilib g++-multilib + elif [[ "$TARGET_ARCH" == "arm64" ]]; then + sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu + CC=aarch64-linux-gnu-gcc + CXX=aarch64-linux-gnu-g++ fi - patch -p1 $WORKSPACE/patches/configure.py.patch + patch -p1 < $WORKSPACE/patches/configure.py.patch ./configure --prefix=$OUTPUT_PREFIX --shared \ --cross-compiling --dest-cpu=$DEST_CPU --dest-os=linux fi diff --git a/scripts/download.sh b/scripts/download.sh index 07e7000..ae32eb3 100755 --- a/scripts/download.sh +++ b/scripts/download.sh @@ -1,7 +1,6 @@ #!/bin/bash echo "NODE_VERSION=${NODE_VERSION}" -echo "NODE_SOURCE_DIR=${NODE_SOURCE_DIR}" curl -O https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}.tar.gz tar zxf ./node-${NODE_VERSION}.tar.gz mv ./node-${NODE_VERSION} ./node From bf6bcf4cd16f9b78e8b27b1815e89cf883f317d1 Mon Sep 17 00:00:00 2001 From: Sunoru Date: Thu, 6 Jul 2023 20:18:28 -0400 Subject: [PATCH 08/13] Update scripts. --- scripts/build/linux.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/build/linux.sh b/scripts/build/linux.sh index 492d712..3b11878 100644 --- a/scripts/build/linux.sh +++ b/scripts/build/linux.sh @@ -8,14 +8,14 @@ else if [[ "$TARGET_ARCH" == "armv7" ]]; then DEST_CPU="arm" sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf - CC=arm-linux-gnueabihf-gcc - CXX=arm-linux-gnueabihf-g++ + export CC=arm-linux-gnueabihf-gcc + export CXX=arm-linux-gnueabihf-g++ elif [[ "$TARGET_ARCH" == "x86" ]]; then sudo apt-get install gcc-multilib g++-multilib elif [[ "$TARGET_ARCH" == "arm64" ]]; then sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu - CC=aarch64-linux-gnu-gcc - CXX=aarch64-linux-gnu-g++ + export CC=aarch64-linux-gnu-gcc + export CXX=aarch64-linux-gnu-g++ fi patch -p1 < $WORKSPACE/patches/configure.py.patch ./configure --prefix=$OUTPUT_PREFIX --shared \ From 9010fbbda34a7237014a7442773dbaa65a764a91 Mon Sep 17 00:00:00 2001 From: Sunoru Date: Thu, 6 Jul 2023 20:27:19 -0400 Subject: [PATCH 09/13] Disable Linux x86. --- .github/workflows/build.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2966c60..a7bccd7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -32,8 +32,9 @@ jobs: - arch: x86 os: windows-2019 - - arch: x86 - os: ubuntu-latest + # https://github.com/nodejs/node/issues/33019 + # - arch: x86 + # os: ubuntu-latest - arch: armv7 os: ubuntu-latest From 9d2895f27fe658e280a20e9d398c65283cea5534 Mon Sep 17 00:00:00 2001 From: Sunoru Date: Sat, 8 Jul 2023 13:24:34 -0400 Subject: [PATCH 10/13] Add CC_host. --- scripts/build/linux.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/build/linux.sh b/scripts/build/linux.sh index 3b11878..cef17dc 100644 --- a/scripts/build/linux.sh +++ b/scripts/build/linux.sh @@ -1,6 +1,9 @@ #!/bin/bash set -ex +export CC_host=gcc +export CXX_host=g++ + if [[ "$TARGET_ARCH" == "x64" ]]; then ./configure --prefix=$OUTPUT_PREFIX --shared --no-cross-compiling else From 77592fb5d7a85ad38267c32c6707d7e2552a3a89 Mon Sep 17 00:00:00 2001 From: Sunoru Date: Sat, 8 Jul 2023 13:30:23 -0400 Subject: [PATCH 11/13] Add dependency. --- scripts/build/linux.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/build/linux.sh b/scripts/build/linux.sh index cef17dc..6926f09 100644 --- a/scripts/build/linux.sh +++ b/scripts/build/linux.sh @@ -10,7 +10,8 @@ else DEST_CPU=$TARGET_ARCH if [[ "$TARGET_ARCH" == "armv7" ]]; then DEST_CPU="arm" - sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf + sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf \ + libstdc++-10-dev-armhf-cross export CC=arm-linux-gnueabihf-gcc export CXX=arm-linux-gnueabihf-g++ elif [[ "$TARGET_ARCH" == "x86" ]]; then From ff4d323eca6bf5c9751b28df3a93f0ad2b3fa8e4 Mon Sep 17 00:00:00 2001 From: Sunoru Date: Sat, 8 Jul 2023 13:35:09 -0400 Subject: [PATCH 12/13] Add dependency. --- scripts/build/linux.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build/linux.sh b/scripts/build/linux.sh index 6926f09..77ba826 100644 --- a/scripts/build/linux.sh +++ b/scripts/build/linux.sh @@ -11,7 +11,7 @@ else if [[ "$TARGET_ARCH" == "armv7" ]]; then DEST_CPU="arm" sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf \ - libstdc++-10-dev-armhf-cross + libstdc++-10-dev-armhf-cross gcc-multilib g++-multilib export CC=arm-linux-gnueabihf-gcc export CXX=arm-linux-gnueabihf-g++ elif [[ "$TARGET_ARCH" == "x86" ]]; then From ac14a7963a874b208bb6ce1dc0f73d29e5e3b67d Mon Sep 17 00:00:00 2001 From: Sunoru Date: Sat, 8 Jul 2023 13:59:10 -0400 Subject: [PATCH 13/13] Add dependency. --- .github/workflows/build.yml | 4 ++-- scripts/build/linux.sh | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a7bccd7..c4e71fa 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -36,8 +36,8 @@ jobs: # - arch: x86 # os: ubuntu-latest - - arch: armv7 - os: ubuntu-latest + # - arch: armv7 + # os: ubuntu-latest - arch: arm64 os: ubuntu-latest runs-on: ${{ matrix.os }} diff --git a/scripts/build/linux.sh b/scripts/build/linux.sh index 77ba826..c4b9f29 100644 --- a/scripts/build/linux.sh +++ b/scripts/build/linux.sh @@ -10,8 +10,9 @@ else DEST_CPU=$TARGET_ARCH if [[ "$TARGET_ARCH" == "armv7" ]]; then DEST_CPU="arm" - sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf \ - libstdc++-10-dev-armhf-cross gcc-multilib g++-multilib + sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf + # FIXME: gcc-multilib conflicts. + # libstdc++-6-dev-armhf-cross gcc-multilib g++-multilib export CC=arm-linux-gnueabihf-gcc export CXX=arm-linux-gnueabihf-g++ elif [[ "$TARGET_ARCH" == "x86" ]]; then