From aae83f9d9c4d05c5a892267de4d6afea983c4396 Mon Sep 17 00:00:00 2001 From: Loic Nageleisen Date: Tue, 23 Jul 2024 14:35:17 +0200 Subject: [PATCH 01/15] Update to node 22.5.1 --- lib/libv8/node/version.rb | 6 +++--- sums/v22.5.1.sum | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 sums/v22.5.1.sum diff --git a/lib/libv8/node/version.rb b/lib/libv8/node/version.rb index 5c9859d..331d961 100644 --- a/lib/libv8/node/version.rb +++ b/lib/libv8/node/version.rb @@ -1,7 +1,7 @@ module Libv8; end module Libv8::Node - VERSION = '21.7.2.0'.freeze - NODE_VERSION = '21.7.2'.freeze - LIBV8_VERSION = '11.8.172.17'.freeze # from v8/include/v8-version.h + VERSION = '22.5.1.0'.freeze + NODE_VERSION = '22.5.1'.freeze + LIBV8_VERSION = '12.4.254.21'.freeze # from v8/include/v8-version.h end diff --git a/sums/v22.5.1.sum b/sums/v22.5.1.sum new file mode 100644 index 0000000..52bbadd --- /dev/null +++ b/sums/v22.5.1.sum @@ -0,0 +1 @@ +4a1b383f6036def4bb183f18e71a10b58784db269f9953618418bbaf47692972 From fb6f1432ea283b5aeddb5fb4d4dd1c4d75a5c173 Mon Sep 17 00:00:00 2001 From: Loic Nageleisen Date: Tue, 23 Jul 2024 14:35:35 +0200 Subject: [PATCH 02/15] Use GCC on glibc --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index f44ba8f..f625509 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ ARG RUBY_VERSION=2.7 FROM ruby:${RUBY_VERSION} RUN test ! -f /etc/alpine-release || apk add --no-cache build-base bash python3 git curl tar ccache clang -RUN test -f /etc/alpine-release || (apt-get update && apt-get install -y ccache clang) +RUN test -f /etc/alpine-release || (apt-get update && apt-get install -y ccache) ENV CCACHE_DIR=/ccache RUN gem update --system 3.3.26 && gem install bundler -v '~> 2.3.26' From e7e17d2a61e0065cf9d8f3c655ae524ea4fd26d6 Mon Sep 17 00:00:00 2001 From: Loic Nageleisen Date: Tue, 23 Jul 2024 16:22:53 +0200 Subject: [PATCH 03/15] Fix libv8 version --- lib/libv8/node/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/libv8/node/version.rb b/lib/libv8/node/version.rb index 331d961..d292d4b 100644 --- a/lib/libv8/node/version.rb +++ b/lib/libv8/node/version.rb @@ -3,5 +3,5 @@ module Libv8; end module Libv8::Node VERSION = '22.5.1.0'.freeze NODE_VERSION = '22.5.1'.freeze - LIBV8_VERSION = '12.4.254.21'.freeze # from v8/include/v8-version.h + LIBV8_VERSION = '21.4.254.21'.freeze # from v8/include/v8-version.h end From db8289946ec6161fb84497978d979b737105c799 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Wed, 21 Aug 2024 14:43:53 +0000 Subject: [PATCH 04/15] Disable use of Linux memory protection keys V8's default thread-isolated allocator has a bug on x64 Linux. It uses memory protection keys (see `man 7 pkeys`) to write-protect JIT code memory but in a way that is currently incompatible with how we use threads. Specifically, pkey permissions are inherited by child threads. Threads that are not descendants of the thread that allocates the pkey default to "no permissions" for that pkey. Concretely, if thread A creates the v8::Platform (and the pkey) and write-protects memory, then later thread B tries to access that memory, it segfaults due to the lack of permissions. The fix on V8's side is conceptually easy - call pkey_set(PKEY_DISABLE_WRITE) before accessing the memory, to flip the permissions from "none" to "can read" - but until it's actually fixed, disable thread-isolation. Fixes: https://github.com/rubyjs/mini_racer/issues/300 Refs: https://issues.chromium.org/issues/360909072 --- libexec/extract-node | 1 + patch/v8-disable-pkey.patch | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 patch/v8-disable-pkey.patch diff --git a/libexec/extract-node b/libexec/extract-node index 73e6073..395abb9 100755 --- a/libexec/extract-node +++ b/libexec/extract-node @@ -32,6 +32,7 @@ cd "${src}/node-v${version}" #patch -p1 < "${top}"/patch/gyp-libv8_monolith.patch #patch -p1 < "${top}"/patch/py2-icutrim.patch #patch -p1 < "${top}"/patch/py2-genv8constants.patch +patch -p1 < "${top}"/patch/v8-disable-pkey.patch # TODO: the following still fails on py3 so the above one forcing py2 is needed # patch -p1 < ../../py3-genv8constants.patch diff --git a/patch/v8-disable-pkey.patch b/patch/v8-disable-pkey.patch new file mode 100644 index 0000000..f3a3718 --- /dev/null +++ b/patch/v8-disable-pkey.patch @@ -0,0 +1,17 @@ +diff --git a/deps/v8/src/base/build_config.h b/deps/v8/src/base/build_config.h +index 9ed4c8f102..dfca698506 100644 +--- a/deps/v8/src/base/build_config.h ++++ b/deps/v8/src/base/build_config.h +@@ -35,11 +35,8 @@ + #define V8_HAS_PTHREAD_JIT_WRITE_PROTECT 0 + #endif + +-#if defined(V8_OS_LINUX) && defined(V8_HOST_ARCH_X64) +-#define V8_HAS_PKU_JIT_WRITE_PROTECT 1 +-#else ++// disabled, see https://issues.chromium.org/issues/360909072 + #define V8_HAS_PKU_JIT_WRITE_PROTECT 0 +-#endif + + #if defined(V8_TARGET_ARCH_IA32) || defined(V8_TARGET_ARCH_X64) + #define V8_TARGET_ARCH_STORES_RETURN_ADDRESS_ON_STACK true From a616a9a0a44e278c990c52c44a8321678701db95 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Thu, 22 Aug 2024 12:18:23 +1000 Subject: [PATCH 05/15] bump version --- lib/libv8/node/version.rb | 11 +++++++---- sums/v22.6.0.sum | 1 + 2 files changed, 8 insertions(+), 4 deletions(-) create mode 100644 sums/v22.6.0.sum diff --git a/lib/libv8/node/version.rb b/lib/libv8/node/version.rb index d292d4b..8969779 100644 --- a/lib/libv8/node/version.rb +++ b/lib/libv8/node/version.rb @@ -1,7 +1,10 @@ -module Libv8; end +# frozen_string_literal: true + +module Libv8 +end module Libv8::Node - VERSION = '22.5.1.0'.freeze - NODE_VERSION = '22.5.1'.freeze - LIBV8_VERSION = '21.4.254.21'.freeze # from v8/include/v8-version.h + VERSION = "22.6.0.0" + NODE_VERSION = "22.6.0" + LIBV8_VERSION = "12.4.254.21" # from src/node-.../deps/v8/include/v8-version.h end diff --git a/sums/v22.6.0.sum b/sums/v22.6.0.sum new file mode 100644 index 0000000..59bb42b --- /dev/null +++ b/sums/v22.6.0.sum @@ -0,0 +1 @@ +af4a8747651385515163db5da0d2e217da15cf7c832672b234128ed5118f086d From 362241d2cc98e87e41da4bde57eec0953cdf9903 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Thu, 22 Aug 2024 12:20:36 +1000 Subject: [PATCH 06/15] not sure why but we are putting the wrong version here. --- lib/libv8/node/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/libv8/node/version.rb b/lib/libv8/node/version.rb index 8969779..a54ea32 100644 --- a/lib/libv8/node/version.rb +++ b/lib/libv8/node/version.rb @@ -6,5 +6,5 @@ module Libv8 module Libv8::Node VERSION = "22.6.0.0" NODE_VERSION = "22.6.0" - LIBV8_VERSION = "12.4.254.21" # from src/node-.../deps/v8/include/v8-version.h + LIBV8_VERSION = "21.4.254.21" # from src/node-.../deps/v8/include/v8-version.h end From 8646501324578017dbbc4c12fefe3858d9d9676c Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Thu, 22 Aug 2024 12:23:35 +1000 Subject: [PATCH 07/15] lint --- lib/libv8/node/version.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/libv8/node/version.rb b/lib/libv8/node/version.rb index a54ea32..5cf4546 100644 --- a/lib/libv8/node/version.rb +++ b/lib/libv8/node/version.rb @@ -4,7 +4,7 @@ module Libv8 end module Libv8::Node - VERSION = "22.6.0.0" - NODE_VERSION = "22.6.0" - LIBV8_VERSION = "21.4.254.21" # from src/node-.../deps/v8/include/v8-version.h + VERSION = '22.6.0.0' + NODE_VERSION = '22.6.0' + LIBV8_VERSION = '21.4.254.21' # from src/node-.../deps/v8/include/v8-version.h end From 3322d01b4a4d434615a717e7c34fdd22c3deb456 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Thu, 22 Aug 2024 12:30:25 +1000 Subject: [PATCH 08/15] this should be correct... --- lib/libv8/node/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/libv8/node/version.rb b/lib/libv8/node/version.rb index 5cf4546..8bc66c5 100644 --- a/lib/libv8/node/version.rb +++ b/lib/libv8/node/version.rb @@ -6,5 +6,5 @@ module Libv8 module Libv8::Node VERSION = '22.6.0.0' NODE_VERSION = '22.6.0' - LIBV8_VERSION = '21.4.254.21' # from src/node-.../deps/v8/include/v8-version.h + LIBV8_VERSION = '12.4.254.21' # from src/node-.../deps/v8/include/v8-version.h end From 9a0ad745483525222bfc9523ad2e680aa83f3e5b Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Thu, 22 Aug 2024 12:58:50 +1000 Subject: [PATCH 09/15] attempt to upgrade CI so we only run on non EOL rubies. 2.7 and 3.0 are EOL --- .github/workflows/build.yml | 34 ++++++++++++---------------------- 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c2119c3..f194861 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -6,7 +6,7 @@ jobs: rubocop: name: Lint (Rubocop) runs-on: ubuntu-20.04 - container: ruby:2.7 + container: ruby:3.1 steps: - name: Checkout uses: actions/checkout@v2 @@ -30,7 +30,7 @@ jobs: outputs: GEM_VERSION: ${{ steps.set-metadata.outputs.GEM_VERSION }} runs-on: ubuntu-20.04 - container: ruby:2.7 + container: ruby:3.1 steps: - name: Update Rubygems and Bundler run: | @@ -290,18 +290,6 @@ jobs: - amd64 # other platforms would need emulation, which is way too slow container: - - image: ruby:2.7 - version: '2.7' - libc: gnu - - image: ruby:2.7-alpine - version: '2.7' - libc: musl - - image: ruby:3.0 - version: '3.0' - libc: gnu - - image: ruby:3.0-alpine - version: '3.0' - libc: musl - image: ruby:3.1 version: '3.1' libc: gnu @@ -314,6 +302,12 @@ jobs: - image: ruby:3.2-alpine version: '3.2' libc: musl + - image: ruby:3.3 + version: '3.3' + libc: gnu + - image: ruby:3.3-alpine + version: '3.3' + libc: musl name: Test (ruby) (${{ matrix.container.version }}, ${{ matrix.platform }}, ${{ matrix.container.libc }}) needs: build-ruby runs-on: ubuntu-20.04 @@ -393,10 +387,9 @@ jobs: fail-fast: false matrix: version: - - '2.7' - - '3.0' - '3.1' - '3.2' + - '3.3' platform: - amd64 # arm64 @@ -407,18 +400,15 @@ jobs: - gnu - musl include: - - version: '2.7' - platform: 'arm64' - libc: 'gnu' - - version: '3.0' - platform: 'arm64' - libc: 'gnu' - version: '3.1' platform: 'arm64' libc: 'gnu' - version: '3.2' platform: 'arm64' libc: 'gnu' + - version: '3.3' + platform: 'arm64' + libc: 'gnu' name: Test (linux) needs: build-linux runs-on: ubuntu-20.04 From 7a1ee4b2672dd15a2b994d109d8bf7494ef7d4f9 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Thu, 22 Aug 2024 08:13:24 +0000 Subject: [PATCH 10/15] Disable madvise(MADV_DONTFORK) Node.js uses it to speed up fork & exec (stops V8 heap pages from getting copied into the forked process; slow) but mini_racer also supports fork & continue. --- libexec/extract-node | 1 + patch/v8-disable-madv-dontfork.patch | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 patch/v8-disable-madv-dontfork.patch diff --git a/libexec/extract-node b/libexec/extract-node index 395abb9..b30b8b4 100755 --- a/libexec/extract-node +++ b/libexec/extract-node @@ -32,6 +32,7 @@ cd "${src}/node-v${version}" #patch -p1 < "${top}"/patch/gyp-libv8_monolith.patch #patch -p1 < "${top}"/patch/py2-icutrim.patch #patch -p1 < "${top}"/patch/py2-genv8constants.patch +patch -p1 < "${top}"/patch/v8-disable-madv-dontfork.patch patch -p1 < "${top}"/patch/v8-disable-pkey.patch # TODO: the following still fails on py3 so the above one forcing py2 is needed diff --git a/patch/v8-disable-madv-dontfork.patch b/patch/v8-disable-madv-dontfork.patch new file mode 100644 index 0000000..7e4317c --- /dev/null +++ b/patch/v8-disable-madv-dontfork.patch @@ -0,0 +1,16 @@ +diff --git a/tools/v8_gypfiles/features.gypi b/tools/v8_gypfiles/features.gypi +index 6e21dac6d7..bcf022fb28 100644 +--- a/tools/v8_gypfiles/features.gypi ++++ b/tools/v8_gypfiles/features.gypi +@@ -73,7 +73,10 @@ + }, { + 'v8_enable_etw_stack_walking': 0, + }], +- ['OS=="linux"', { ++ # Disable madvise(MADV_DONTFORK), it's a great optimization for programs ++ # that fork & exec but not for programs that fork and keep running. ++ # It makes mini_racer's test/test_forking.rb test segfault. ++ ['False and OS=="linux"', { + # Sets -dV8_ENABLE_PRIVATE_MAPPING_FORK_OPTIMIZATION. + # + # This flag speeds up the performance of fork/execve on Linux systems for From 1910d10df988a5e0a792fefc48073215d3bff932 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Mon, 26 Aug 2024 21:47:35 +0200 Subject: [PATCH 11/15] Fix C++ tests, switch to C++17 (#55) It was at C++14 but newer versions of V8 require C++17. --- .github/workflows/build.yml | 1 + test/gtest/CMakeLists.txt | 4 ++-- test/gtest/Framework.h | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f194861..4e3dee4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,5 +1,6 @@ name: Build on: + - pull_request - push jobs: diff --git a/test/gtest/CMakeLists.txt b/test/gtest/CMakeLists.txt index 915947c..289bd41 100644 --- a/test/gtest/CMakeLists.txt +++ b/test/gtest/CMakeLists.txt @@ -1,8 +1,8 @@ cmake_minimum_required(VERSION 3.14) project(gtest) -# GoogleTest requires at least C++14 -set(CMAKE_CXX_STANDARD 14) +# V8 requires at least C++17 +set(CMAKE_CXX_STANDARD 17) include(FetchContent) FetchContent_Declare( diff --git a/test/gtest/Framework.h b/test/gtest/Framework.h index ed54c59..59bacfe 100644 --- a/test/gtest/Framework.h +++ b/test/gtest/Framework.h @@ -16,7 +16,7 @@ struct Framework { main(); v8::V8::Dispose(); - v8::V8::ShutdownPlatform(); + v8::V8::DisposePlatform(); } inline static void runWithIsolateRaw(iso_main main) { @@ -50,4 +50,4 @@ struct Framework { main(ctx); }); } -}; \ No newline at end of file +}; From b305a1e066136e975f62441518191875e8853a94 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Tue, 27 Aug 2024 08:46:43 +0200 Subject: [PATCH 12/15] Update to node 22.7.0 (#56) Note the V8 version didn't change between 22.6.0 and 22.7.0 --- lib/libv8/node/version.rb | 4 ++-- sums/v22.7.0.sum | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 sums/v22.7.0.sum diff --git a/lib/libv8/node/version.rb b/lib/libv8/node/version.rb index 8bc66c5..b8f5267 100644 --- a/lib/libv8/node/version.rb +++ b/lib/libv8/node/version.rb @@ -4,7 +4,7 @@ module Libv8 end module Libv8::Node - VERSION = '22.6.0.0' - NODE_VERSION = '22.6.0' + VERSION = '22.7.0.0' + NODE_VERSION = '22.7.0' LIBV8_VERSION = '12.4.254.21' # from src/node-.../deps/v8/include/v8-version.h end diff --git a/sums/v22.7.0.sum b/sums/v22.7.0.sum new file mode 100644 index 0000000..9d6cc21 --- /dev/null +++ b/sums/v22.7.0.sum @@ -0,0 +1 @@ +7a7c99282d59866d971b2da12c99596cb15782b9c3efe2e2146390c14f4d490e From 62476a398d4c9c1a670240a3b070d69544be3761 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Tue, 27 Aug 2024 18:58:34 +0200 Subject: [PATCH 13/15] Work around clang 15 compiler bug (#57) Refs: https://github.com/nodejs/node/issues/54576 --- libexec/extract-node | 1 + patch/v8-no-assert-trivially-copyable.patch | 14 ++++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 patch/v8-no-assert-trivially-copyable.patch diff --git a/libexec/extract-node b/libexec/extract-node index b30b8b4..d2bd205 100755 --- a/libexec/extract-node +++ b/libexec/extract-node @@ -32,6 +32,7 @@ cd "${src}/node-v${version}" #patch -p1 < "${top}"/patch/gyp-libv8_monolith.patch #patch -p1 < "${top}"/patch/py2-icutrim.patch #patch -p1 < "${top}"/patch/py2-genv8constants.patch +patch -p1 < "${top}"/patch/v8-no-assert-trivially-copyable.patch patch -p1 < "${top}"/patch/v8-disable-madv-dontfork.patch patch -p1 < "${top}"/patch/v8-disable-pkey.patch diff --git a/patch/v8-no-assert-trivially-copyable.patch b/patch/v8-no-assert-trivially-copyable.patch new file mode 100644 index 0000000..2148c14 --- /dev/null +++ b/patch/v8-no-assert-trivially-copyable.patch @@ -0,0 +1,14 @@ +diff --git a/deps/v8/src/base/small-vector.h b/deps/v8/src/base/small-vector.h +index edaab3a7a6..533a536178 100644 +--- a/deps/v8/src/base/small-vector.h ++++ b/deps/v8/src/base/small-vector.h +@@ -20,9 +20,6 @@ namespace base { + // dynamic storage when it overflows. + template > + class SmallVector { +- // Currently only support trivially copyable and trivially destructible data +- // types, as it uses memcpy to copy elements and never calls destructors. +- ASSERT_TRIVIALLY_COPYABLE(T); + static_assert(std::is_trivially_destructible::value); + + public: From fc88262b049bc567164a59bca80fb2843a969879 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Wed, 4 Sep 2024 10:55:25 +1000 Subject: [PATCH 14/15] bump version to kick off a new ci run --- lib/libv8/node/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/libv8/node/version.rb b/lib/libv8/node/version.rb index b8f5267..ee03597 100644 --- a/lib/libv8/node/version.rb +++ b/lib/libv8/node/version.rb @@ -4,7 +4,7 @@ module Libv8 end module Libv8::Node - VERSION = '22.7.0.0' + VERSION = '22.7.0.1' NODE_VERSION = '22.7.0' LIBV8_VERSION = '12.4.254.21' # from src/node-.../deps/v8/include/v8-version.h end From 8900cf67862f6d65e578ea1ef8cd5d48555753f8 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Wed, 4 Sep 2024 14:23:49 +1000 Subject: [PATCH 15/15] Use latest version of mini racer --- Makefile.docker | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile.docker b/Makefile.docker index 87aeb3c..0532ea4 100644 --- a/Makefile.docker +++ b/Makefile.docker @@ -38,28 +38,28 @@ pkg/libv8-node-$(VERSION)-aarch64-linux-musl.gem: test/x86_64-linux: pkg/libv8-node-$(VERSION)-x86_64-linux.gem test -d test/mini_racer || git clone https://github.com/rubyjs/mini_racer.git test/mini_racer --depth 1 - cd test/mini_racer && git fetch origin refs/pull/299/head && git checkout FETCH_HEAD && git reset --hard && git clean -f -d -x + cd test/mini_racer ruby -i -ne '$$_ =~ /^\s+LIBV8_NODE_VERSION/ ? print(" LIBV8_NODE_VERSION = \"$(VERSION)\"\n") : print' test/mini_racer/lib/mini_racer/version.rb ruby -i -ne '$$_ =~ /spec.required_ruby_version/ ? "" : print' test/mini_racer/mini_racer.gemspec docker run --platform linux/amd64 --rm -it -v "$(PWD)/test:/code/test" -w "/code/test/mini_racer" libv8-node:$(VERSION)-gnu sh -c 'gem install ../../$< && bundle install && bundle exec rake compile && bundle exec rake test' test/x86_64-linux-musl: pkg/libv8-node-$(VERSION)-x86_64-linux-musl.gem test -d test/mini_racer || git clone https://github.com/rubyjs/mini_racer.git test/mini_racer --depth 1 - cd test/mini_racer && git fetch origin refs/pull/299/head && git checkout FETCH_HEAD && git reset --hard && git clean -f -d -x + cd test/mini_racer ruby -i -ne '$$_ =~ /^\s+LIBV8_NODE_VERSION/ ? print(" LIBV8_NODE_VERSION = \"$(VERSION)\"\n") : print' test/mini_racer/lib/mini_racer/version.rb ruby -i -ne '$$_ =~ /spec.required_ruby_version/ ? "" : print' test/mini_racer/mini_racer.gemspec docker run --platform linux/amd64 --rm -it -v "$(PWD)/test:/code/test" -w "/code/test/mini_racer" libv8-node:$(VERSION)-musl sh -c 'gem install ../../$< && bundle install && bundle exec rake compile && bundle exec rake test' test/aarch64-linux: pkg/libv8-node-$(VERSION)-aarch64-linux.gem test -d test/mini_racer || git clone https://github.com/rubyjs/mini_racer.git test/mini_racer --depth 1 - cd test/mini_racer && git fetch origin refs/pull/299/head && git checkout FETCH_HEAD && git reset --hard && git clean -f -d -x + cd test/mini_racer ruby -i -ne '$$_ =~ /^\s+LIBV8_NODE_VERSION/ ? print(" LIBV8_NODE_VERSION = \"$(VERSION)\"\n") : print' test/mini_racer/lib/mini_racer/version.rb ruby -i -ne '$$_ =~ /spec.required_ruby_version/ ? "" : print' test/mini_racer/mini_racer.gemspec docker run --platform linux/arm64 --rm -it -v "$(PWD)/test:/code/test" -w "/code/test/mini_racer" libv8-node:$(VERSION)-gnu sh -c 'gem install ../../$< && bundle install && bundle exec rake compile && bundle exec rake test' test/aarch64-linux-musl: pkg/libv8-node-$(VERSION)-aarch64-linux-musl.gem test -d test/mini_racer || git clone https://github.com/rubyjs/mini_racer.git test/mini_racer --depth 1 - cd test/mini_racer && git fetch origin refs/pull/299/head && git checkout FETCH_HEAD && git reset --hard && git clean -f -d -x + cd test/mini_racer ruby -i -ne '$$_ =~ /^\s+LIBV8_NODE_VERSION/ ? print(" LIBV8_NODE_VERSION = \"$(VERSION)\"\n") : print' test/mini_racer/lib/mini_racer/version.rb ruby -i -ne '$$_ =~ /spec.required_ruby_version/ ? "" : print' test/mini_racer/mini_racer.gemspec docker run --platform linux/arm64 --rm -it -v "$(PWD)/test:/code/test" -w "/code/test/mini_racer" libv8-node:$(VERSION)-musl sh -c 'gem install ../../$< && bundle install && bundle exec rake compile && bundle exec rake test'