From 40fa42a4a26b582ee3a393cbe6b7e51c34d6b047 Mon Sep 17 00:00:00 2001 From: whispers Date: Tue, 21 Jul 2026 10:33:59 -0400 Subject: [PATCH] spidermonkey: add update script partially based on https://github.com/NixOS/nixpkgs/blob/6f31c2529024d14916da3ea3e84d886ef67d3084/pkgs/applications/networking/browsers/firefox/update.nix. tested with 140.13.0. --- .../interpreters/spidermonkey/common.nix | 8 +++- .../interpreters/spidermonkey/update.nix | 39 +++++++++++++++++++ 2 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 pkgs/development/interpreters/spidermonkey/update.nix diff --git a/pkgs/development/interpreters/spidermonkey/common.nix b/pkgs/development/interpreters/spidermonkey/common.nix index d6ca5d564778..785f5527b09e 100644 --- a/pkgs/development/interpreters/spidermonkey/common.nix +++ b/pkgs/development/interpreters/spidermonkey/common.nix @@ -166,11 +166,15 @@ stdenv.mkDerivation (finalAttrs: { ln -s $out/bin/js${lib.versions.major version} $out/bin/js ''; - passthru.tests.run = callPackage ./test.nix { - spidermonkey = finalAttrs.finalPackage; + passthru = { + tests.run = callPackage ./test.nix { + spidermonkey = finalAttrs.finalPackage; + }; + updateScript = lib.getExe (callPackage ./update.nix { version = lib.versions.major version; }); }; meta = { + changelog = "https://www.firefox.com/en-US/firefox/${version}/releasenotes/"; description = "Mozilla's JavaScript engine written in C/C++"; homepage = "https://spidermonkey.dev/"; license = lib.licenses.mpl20; diff --git a/pkgs/development/interpreters/spidermonkey/update.nix b/pkgs/development/interpreters/spidermonkey/update.nix new file mode 100644 index 000000000000..cdf315a0b8fb --- /dev/null +++ b/pkgs/development/interpreters/spidermonkey/update.nix @@ -0,0 +1,39 @@ +{ + writeShellApplication, + common-updater-scripts, + xidel, + baseUrl ? "https://archive.mozilla.org/pub/firefox/releases/", + version ? "", +}: +writeShellApplication { + name = "update-spidermonkey_${version}"; + runtimeInputs = [ + common-updater-scripts + xidel + ]; + + text = '' + set -eux + + HOME=$(mktemp -d) + GNUPGHOME=$(mktemp -d) + export GNUPGHOME + + curl https://keys.openpgp.org/vks/v1/by-fingerprint/09BEED63F3462A2DFFAB3B875ECB6497C1A20256 | gpg --import - + + version=$(xidel --trace -s "${baseUrl}" --extract "//a" | \ + grep "^${version}[0-9.]*esr/$" | \ + sed s/[/]$// | \ + sort --version-sort | \ + tail -n 1) + + curl --silent --show-error -o "$HOME"/shasums "${baseUrl}$version/SHA512SUMS" + curl --silent --show-error -o "$HOME"/shasums.asc "${baseUrl}$version/SHA512SUMS.asc" + gpgv --keyring="$GNUPGHOME"/pubring.kbx "$HOME"/shasums.asc "$HOME"/shasums + + hash=$(grep '\.source\.tar\.xz$' "$HOME"/shasums | grep '^[^ ]*' -o) + sri_hash=$(nix hash convert --hash-algo sha512 --to sri "$hash") + update-source-version --file=pkgs/development/interpreters/spidermonkey/${version}.nix \ + "spidermonkey_${version}" "''${version%esr}" "$sri_hash" + ''; +}