diff --git a/Makefile b/Makefile index 319d559..54a2fc5 100644 --- a/Makefile +++ b/Makefile @@ -5,22 +5,29 @@ VERSION := $(shell ./libexec/metadata version) NODE_VERSION := $(shell ./libexec/metadata node_version) RUBY_VERSION = $(shell ruby -e 'puts RUBY_VERSION.gsub(/\d+$$/, "0")') +.PHONY: vars vars: @echo $(PWD) @echo $(OS) $(CPU) @echo $(VERSION) $(NODE_VERSION) @echo $(RUBY_VERSION) +.PHONY: all all: gem test +.PHONY: build build: src/node-v$(NODE_VERSION)/out/Release/node +.PHONY: lib lib: src/node-v$(NODE_VERSION)/out/Release/libv8_monolith.a +.PHONY: gem gem: pkg/libv8-node-$(VERSION)-$(CPU)-$(OS).gem +.PHONY: test test: test/$(CPU)-$(OS) +.PHONY: ctest ctest: vendor/v8 cd test/gtest && cmake -S . -B build && cd build && cmake --build . && ctest @@ -36,12 +43,14 @@ src/node-v$(NODE_VERSION)/out/Release/node: src/node-v$(NODE_VERSION) src/node-v$(NODE_VERSION)/out/Release/libv8_monolith.a: src/node-v$(NODE_VERSION)/out/Release/node ./libexec/build-monolith $(NODE_VERSION) +.PHONY: vendor/v8 vendor/v8: src/node-v$(NODE_VERSION)/out/Release/libv8_monolith.a ./libexec/inject-libv8 $(NODE_VERSION) pkg/libv8-node-$(VERSION)-$(CPU)-$(OS).gem: vendor/v8 bundle exec rake binary +.PHONY: test/$(CPU)-$(OS) test/$(CPU)-$(OS): pkg/libv8-node-$(VERSION)-$(CPU)-$(OS).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/261/head && git checkout FETCH_HEAD && git reset --hard && git clean -f -d -x diff --git a/Makefile.docker b/Makefile.docker index 15adbfb..7ee7288 100644 --- a/Makefile.docker +++ b/Makefile.docker @@ -21,19 +21,19 @@ test/linux: test/$(subst arm64,aarch64,$(CPU))-linux test/linux-musl: test/$(subst arm64,aarch64,$(CPU))-linux-musl pkg/libv8-node-$(VERSION)-x86_64-linux.gem: - docker build --platform linux/amd64 --build-arg RUBY_VERSION=2.7 --build-arg NODE_VERSION=$(NODE_VERSION) --progress plain -t libv8-node:$(VERSION)-gnu . + docker buildx build --platform linux/amd64 --build-arg RUBY_VERSION=2.7 --build-arg NODE_VERSION=$(NODE_VERSION) --progress plain -t libv8-node:$(VERSION)-gnu . docker run --platform linux/amd64 --rm -it -v "$(PWD)/pkg":/pkg libv8-node:$(VERSION)-gnu cp $@ /pkg/ pkg/libv8-node-$(VERSION)-x86_64-linux-musl.gem: - docker build --platform linux/amd64 --build-arg RUBY_VERSION=2.7-alpine --build-arg NODE_VERSION=$(NODE_VERSION) --progress plain -t libv8-node:$(VERSION)-musl . + docker buildx build --platform linux/amd64 --build-arg RUBY_VERSION=2.7-alpine --build-arg NODE_VERSION=$(NODE_VERSION) --progress plain -t libv8-node:$(VERSION)-musl . docker run --platform linux/amd64 --rm -it -v "$(PWD)/pkg":/pkg libv8-node:$(VERSION)-musl cp $@ /pkg/ pkg/libv8-node-$(VERSION)-aarch64-linux.gem: - docker build --platform linux/arm64 --build-arg RUBY_VERSION=2.7 --build-arg NODE_VERSION=$(NODE_VERSION) --progress plain -t libv8-node:$(VERSION)-gnu . + docker buildx build --platform linux/arm64 --build-arg RUBY_VERSION=2.7 --build-arg NODE_VERSION=$(NODE_VERSION) --progress plain -t libv8-node:$(VERSION)-gnu . docker run --platform linux/arm64 --rm -it -v "$(PWD)/pkg":/pkg libv8-node:$(VERSION)-gnu cp $@ /pkg/ pkg/libv8-node-$(VERSION)-aarch64-linux-musl.gem: - docker build --platform linux/arm64 --build-arg RUBY_VERSION=2.7-alpine --build-arg NODE_VERSION=$(NODE_VERSION) --progress plain -t libv8-node:$(VERSION)-musl . + docker buildx build --platform linux/arm64 --build-arg RUBY_VERSION=2.7-alpine --build-arg NODE_VERSION=$(NODE_VERSION) --progress plain -t libv8-node:$(VERSION)-musl . docker run --platform linux/arm64 --rm -it -v "$(PWD)/pkg":/pkg libv8-node:$(VERSION)-musl cp $@ /pkg/ test/x86_64-linux: pkg/libv8-node-$(VERSION)-x86_64-linux.gem diff --git a/lib/libv8/node/version.rb b/lib/libv8/node/version.rb index d7bf450..c6c9007 100644 --- a/lib/libv8/node/version.rb +++ b/lib/libv8/node/version.rb @@ -1,7 +1,7 @@ module Libv8; end module Libv8::Node - VERSION = '18.13.0.0'.freeze - NODE_VERSION = '18.13.0'.freeze - LIBV8_VERSION = '10.2.154.23'.freeze # from v8/include/v8-version.h + VERSION = '18.19.1.0'.freeze + NODE_VERSION = '18.19.1'.freeze + LIBV8_VERSION = '10.2.154.26'.freeze # from v8/include/v8-version.h end diff --git a/libexec/build-libv8 b/libexec/build-libv8 index 309c8e9..33f0bfa 100755 --- a/libexec/build-libv8 +++ b/libexec/build-libv8 @@ -37,7 +37,15 @@ make BUILDTYPE="${BUILDTYPE}" "out/Makefile" # shellcheck disable=SC2154 # these variables are defined by `eval`ing the output of the platform script above if [ "$host_platform" != "$target_platform" ] && [ "${target_platform%%-*}" = "aarch64" ]; then - find . -iname "*.host.mk" -exec sed -i '/-msign-return-address/d' {} ';' + find . -iname "*.host.mk" -exec sed -i '/-msign-return-address /d' {} ';' +fi + +# workaround for clang 15 making -Wenum-constexpr-conversion a default and an error +# (if the host isn't arm64, no such error occurs) + +# shellcheck disable=SC2154 # these variables are defined by `eval`ing the output of the platform script above +if [ "${target_platform%%-*}" = "arm64" ]; then + find . \( -iname "*.host.mk" -or -iname "*.target.mk" \) -exec perl -pi -e 's/^(CFLAGS_(?:Release|Debug) := )([\\])/\1-Wno-enum-constexpr-conversion \2/' {} ';' fi export PATH="${PWD}/out/tools/bin:${PATH}" diff --git a/libexec/extract-node b/libexec/extract-node index e65662c..7c0c42e 100755 --- a/libexec/extract-node +++ b/libexec/extract-node @@ -30,7 +30,7 @@ extract "${src}" "${src}/node-v${version}.tar.gz" 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-icutrim.patch patch -p1 < "${top}"/patch/py2-genv8constants.patch # TODO: the following still fails on py3 so the above one forcing py2 is needed diff --git a/sums/v18.16.0.sum b/sums/v18.16.0.sum new file mode 100644 index 0000000..b3ee90b --- /dev/null +++ b/sums/v18.16.0.sum @@ -0,0 +1 @@ +6a4f5c5d76e5c50cef673099e56f19bc3266ae363f56ca0ab77dd2f3c5088c6d diff --git a/sums/v18.19.0.sum b/sums/v18.19.0.sum new file mode 100644 index 0000000..e108e24 --- /dev/null +++ b/sums/v18.19.0.sum @@ -0,0 +1 @@ +dd4c1dc1cb94e1e29f65a3a592247edeb8ceb23483123b0e1847d75c5f0b0c17 diff --git a/sums/v18.19.1.sum b/sums/v18.19.1.sum new file mode 100644 index 0000000..4f624f6 --- /dev/null +++ b/sums/v18.19.1.sum @@ -0,0 +1 @@ +637aa3f779a5a733657d4dde220747b82ab699075635990a9a611b00d2c20b09