From 71a5dfdfd0858ab747b8a9127e488abc9d84f395 Mon Sep 17 00:00:00 2001 From: Pierre Tachoire Date: Mon, 4 Dec 2023 11:19:32 +0100 Subject: [PATCH 1/4] upgrade jsruntime-lib --- vendor/jsruntime-lib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/jsruntime-lib b/vendor/jsruntime-lib index d63b0a59..254739a9 160000 --- a/vendor/jsruntime-lib +++ b/vendor/jsruntime-lib @@ -1 +1 @@ -Subproject commit d63b0a592f51e7743723a47e9faa49a7e8e61f26 +Subproject commit 254739a97282dfe255f0b96fac7e1b854a19934f From f210c773f0cd861271cf2c82995d3cb33e34ab47 Mon Sep 17 00:00:00 2001 From: Pierre Tachoire Date: Mon, 4 Dec 2023 11:19:15 +0100 Subject: [PATCH 2/4] zig: add a zig version check --- build.zig | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/build.zig b/build.zig index e2aa6bc4..8e63fb42 100644 --- a/build.zig +++ b/build.zig @@ -1,10 +1,31 @@ const std = @import("std"); +const builtin = @import("builtin"); + const jsruntime_path = "vendor/jsruntime-lib/"; const jsruntime = @import("vendor/jsruntime-lib/build.zig"); const jsruntime_pkgs = jsruntime.packages(jsruntime_path); +const zig_version = builtin.zig_version; + +/// Do not rename this constant. It is scanned by some scripts to determine +/// which zig version to install. +const recommended_zig_version = jsruntime.recommended_zig_version; + pub fn build(b: *std.build.Builder) !void { + switch (comptime zig_version.order(std.SemanticVersion.parse(recommended_zig_version) catch unreachable)) { + .eq => {}, + .lt => { + @compileError("The minimum version of Zig required to compile is '" ++ recommended_zig_version ++ "', found '" ++ builtin.zig_version_string ++ "'."); + }, + .gt => { + std.debug.print( + "WARNING: Recommended Zig version '{s}', but found '{s}', build may fail...\n\n", + .{ recommended_zig_version, builtin.zig_version_string }, + ); + }, + } + const target = b.standardTargetOptions(.{}); const mode = b.standardOptimizeOption(.{}); From 6806c151a3c8b802fde286524a4d141b0a2d41b2 Mon Sep 17 00:00:00 2001 From: Pierre Tachoire Date: Mon, 4 Dec 2023 12:18:49 +0100 Subject: [PATCH 3/4] make: add download-zig target --- Makefile | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index b701e17a..90d5ebc4 100644 --- a/Makefile +++ b/Makefile @@ -23,7 +23,36 @@ help: # $(ZIG) commands # ------------ -.PHONY: build build-release run run-release shell test bench +.PHONY: build build-release run run-release shell test bench download-zig + +zig_version = $(shell grep 'recommended_zig_version = "' "vendor/jsruntime-lib/build.zig" | cut -d'"' -f2) +kernel = $(shell uname -ms) + +## Download the zig recommended version +download-zig: +ifeq ($(kernel), Darwin x86_64) + $(eval target="macos") + $(eval arch="x86_64") +else ifeq ($(kernel), Darwin arm64) + $(eval target="macos") + $(eval arch="aarch64") +else ifeq ($(kernel), Linux aarch64) + $(eval target="linux") + $(eval arch="aarch64") +else ifeq ($(kernel), Linux arm64) + $(eval target="linux") + $(eval arch="aarch64") +else ifeq ($(kernel), Linux x86_64) + $(eval target="linux") + $(eval arch="x86_64") +else + $(error "Unhandled kernel: $(kernel)") +endif + $(eval url = "https://ziglang.org/builds/zig-$(target)-$(arch)-$(zig_version).tar.xz") + $(eval dest = "/tmp/zig-$(target)-$(arch)-$(zig_version).tar.xz") + @printf "\e[36mDownload zig version $(zig_version)...\e[0m\n" + @curl -o "$(dest)" -L "$(url)" || (printf "\e[33mBuild ERROR\e[0m\n"; exit 1;) + @printf "\e[33mDownloaded $(dest)\e[0m\n" ## Build in debug mode build: From 0d0628b39ea0613f1bc51158eb96cd3d5878badf Mon Sep 17 00:00:00 2001 From: Pierre Tachoire Date: Mon, 4 Dec 2023 17:33:48 +0100 Subject: [PATCH 4/4] build: don't alias zig version --- build.zig | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/build.zig b/build.zig index 8e63fb42..826916b6 100644 --- a/build.zig +++ b/build.zig @@ -6,14 +6,12 @@ const jsruntime_path = "vendor/jsruntime-lib/"; const jsruntime = @import("vendor/jsruntime-lib/build.zig"); const jsruntime_pkgs = jsruntime.packages(jsruntime_path); -const zig_version = builtin.zig_version; - /// Do not rename this constant. It is scanned by some scripts to determine /// which zig version to install. const recommended_zig_version = jsruntime.recommended_zig_version; pub fn build(b: *std.build.Builder) !void { - switch (comptime zig_version.order(std.SemanticVersion.parse(recommended_zig_version) catch unreachable)) { + switch (comptime builtin.zig_version.order(std.SemanticVersion.parse(recommended_zig_version) catch unreachable)) { .eq => {}, .lt => { @compileError("The minimum version of Zig required to compile is '" ++ recommended_zig_version ++ "', found '" ++ builtin.zig_version_string ++ "'.");