From 017dd50c3c578f1bb93c11af71fc0c856172035e Mon Sep 17 00:00:00 2001 From: Chongyun Lee <45286352+licy183@users.noreply.github.com> Date: Sat, 30 Nov 2024 19:12:39 +0800 Subject: [PATCH] deno: search rusty-v8 libs/srcs with target suffix --- .../0001-enable-libffi-system-feature.patch | 13 ------ ...rs.patch => 0001-fix-runtime-errors.patch} | 0 packages/deno/build.sh | 43 +++++++++++++++++-- packages/deno/patch-root-Cargo.diff | 9 ++++ ...ty-v8-search-files-with-target-suffix.diff | 42 ++++++++++++++++++ 5 files changed, 91 insertions(+), 16 deletions(-) delete mode 100644 packages/deno/0001-enable-libffi-system-feature.patch rename packages/deno/{0006-fix-runtime-errors.patch => 0001-fix-runtime-errors.patch} (100%) create mode 100644 packages/deno/patch-root-Cargo.diff create mode 100644 packages/deno/rusty-v8-search-files-with-target-suffix.diff diff --git a/packages/deno/0001-enable-libffi-system-feature.patch b/packages/deno/0001-enable-libffi-system-feature.patch deleted file mode 100644 index a2eff4ddb72d165..000000000000000 --- a/packages/deno/0001-enable-libffi-system-feature.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/ext/ffi/Cargo.toml b/ext/ffi/Cargo.toml -index 2f0813a58..fda6e2469 100644 ---- a/ext/ffi/Cargo.toml -+++ b/ext/ffi/Cargo.toml -@@ -18,7 +18,7 @@ deno_core.workspace = true - deno_permissions.workspace = true - dlopen2.workspace = true - dynasmrt = "1.2.3" --libffi = "=3.2.0" -+libffi = { version = "=3.2.0", features = ["system"] } - libffi-sys = "=2.3.0" - log.workspace = true - num-bigint.workspace = true diff --git a/packages/deno/0006-fix-runtime-errors.patch b/packages/deno/0001-fix-runtime-errors.patch similarity index 100% rename from packages/deno/0006-fix-runtime-errors.patch rename to packages/deno/0001-fix-runtime-errors.patch diff --git a/packages/deno/build.sh b/packages/deno/build.sh index 70ed7f179610e75..13ddddc8dbb40da 100644 --- a/packages/deno/build.sh +++ b/packages/deno/build.sh @@ -15,15 +15,52 @@ termux_step_configure() { termux_setup_rust termux_setup_cmake termux_setup_protobuf + + : "${CARGO_HOME:=$HOME/.cargo}" + export CARGO_HOME + + cargo vendor + patch --silent -p1 \ + -d ./vendor/v8/ \ + < "$TERMUX_PKG_BUILDER_DIR"/rusty-v8-search-files-with-target-suffix.diff + + patch --silent -p1 \ + -d "$TERMUX_PKG_SRCDIR" \ + < "$TERMUX_PKG_BUILDER_DIR"/patch-root-Cargo.diff + + local _CARGO_TARGET_LIBDIR="target/${CARGO_TARGET_NAME}/release/deps" + mkdir -p $_CARGO_TARGET_LIBDIR + + mv $TERMUX_PREFIX/lib/libz.so.1{,.tmp} + mv $TERMUX_PREFIX/lib/libz.so{,.tmp} + + ln -sfT $(readlink -f $TERMUX_PREFIX/lib/libz.so.1.tmp) \ + $_CARGO_TARGET_LIBDIR/libz.so.1 + ln -sfT $(readlink -f $TERMUX_PREFIX/lib/libz.so.tmp) \ + $_CARGO_TARGET_LIBDIR/libz.so } termux_step_make() { - export RUSTY_V8_ARCHIVE="${TERMUX_PREFIX}/lib/librusty_v8.a" - export RUSTY_V8_SRC_BINDING_PATH="${TERMUX_PREFIX}/include/librusty_v8/src_binding.rs" - + local env_name=RUSTY_V8_ARCHIVE_${CARGO_TARGET_NAME@U} + env_name=${env_name//-/_} + export "$env_name"="${TERMUX_PREFIX}/lib/librusty_v8.a" + env_name=RUSTY_V8_SRC_BINDING_PATH_${CARGO_TARGET_NAME@U} + env_name=${env_name//-/_} + export "$env_name"="${TERMUX_PREFIX}/include/librusty_v8/src_binding.rs" + cargo build --jobs "${TERMUX_PKG_MAKE_PROCESSES}" --target "${CARGO_TARGET_NAME}" --release } termux_step_make_install() { install -Dm700 -t "${TERMUX_PREFIX}/bin" "target/${CARGO_TARGET_NAME}/release/deno" } + +termux_step_post_make_install() { + mv $TERMUX_PREFIX/lib/libz.so.1{.tmp,} + mv $TERMUX_PREFIX/lib/libz.so{.tmp,} +} + +termux_step_post_massage() { + rm -f lib/libz.so.1 + rm -f lib/libz.so +} diff --git a/packages/deno/patch-root-Cargo.diff b/packages/deno/patch-root-Cargo.diff new file mode 100644 index 000000000000000..99d52b45f72bb09 --- /dev/null +++ b/packages/deno/patch-root-Cargo.diff @@ -0,0 +1,9 @@ +--- a/Cargo.toml ++++ b/Cargo.toml +@@ -334,3 +334,6 @@ + opt-level = 3 + [profile.release.package.zstd-sys] + opt-level = 3 ++ ++[patch.crates-io] ++v8 = { path = "./vendor/v8" } diff --git a/packages/deno/rusty-v8-search-files-with-target-suffix.diff b/packages/deno/rusty-v8-search-files-with-target-suffix.diff new file mode 100644 index 000000000000000..7590da40a2380ba --- /dev/null +++ b/packages/deno/rusty-v8-search-files-with-target-suffix.diff @@ -0,0 +1,42 @@ +--- a/build.rs ++++ b/build.rs +@@ -55,6 +55,16 @@ + println!("cargo:rerun-if-env-changed={}", env); + } + ++ // Also rebuild for some vars with target suffix ++ let envs2 = vec![ ++ "RUSTY_V8_ARCHIVE", ++ "RUSTY_V8_SRC_BINDING_PATH", ++ ]; ++ for env in envs2 { ++ let target = env::var("TARGET").unwrap().replace("-", "_").to_uppercase(); ++ println!("cargo:rerun-if-env-changed={}_{}", env, target); ++ } ++ + // Detect if trybuild tests are being compiled. + let is_trybuild = env::var_os("DENO_TRYBUILD").is_some(); + +@@ -407,6 +417,10 @@ + } + + fn static_lib_url() -> String { ++ let target_u = env::var("TARGET").unwrap().replace("-", "_").to_uppercase(); ++ if let Ok(custom_archive_u) = env::var(format!("RUSTY_V8_ARCHIVE_{}", target_u)) { ++ return custom_archive_u; ++ } + if let Ok(custom_archive) = env::var("RUSTY_V8_ARCHIVE") { + return custom_archive; + } +@@ -681,6 +695,11 @@ + } + + fn print_prebuilt_src_binding_path() { ++ let target_u = env::var("TARGET").unwrap().replace("-", "_").to_uppercase(); ++ if let Ok(binding_u) = env::var(format!("RUSTY_V8_SRC_BINDING_PATH_{}", target_u)) { ++ println!("cargo:rustc-env=RUSTY_V8_SRC_BINDING_PATH={}", binding_u); ++ return; ++ } + if let Ok(binding) = env::var("RUSTY_V8_SRC_BINDING_PATH") { + println!("cargo:rustc-env=RUSTY_V8_SRC_BINDING_PATH={}", binding); + return;