From bca1dde2b41b506f0af94aae289b7eedbfda3cab Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Tue, 28 Jan 2025 11:24:22 +0100 Subject: [PATCH] buildWasmBindgenCli,wasm-bindgen-cli-*: init Exposing an overridable cargoHash parameter is problematic because it will produce silently broken FODs if we change the hashing scheme, which we are currently doing across the tree because Cargo 1.84.0 has changed the output of fetchCargoTarball, meaning all hashes have been invalidated. To avoid this happening in future, we are changing to the fetchCargoVendor mechanism, which does not depend on implementation details of Cargo. The future-proof way to override a package with Cargo dependencies is to pass a cargoDeps object. This is more verbose, and requires the caller to have access to the src object for the package. To compensate for this, I've introduced a buildWasmBindgenCli function that is nicer to use than wasm-bindgen-cli.overrideAttrs, and I've also introduced versioned attributes for wasm-bindgen-cli versions currently in use in Nixpkgs, so that each package that wants to use a particular version doesn't have to duplicate the src and cargoDeps definitions for that version. The unversioned "wasm-bindgen-cli" attribute is demoted to an alias, with a view to its eventual removal. --- pkgs/applications/misc/pagefind/default.nix | 10 ++---- .../wasm-bindgen-cli/default.nix} | 12 ++++--- pkgs/by-name/ll/lldap/package.nix | 10 ++---- pkgs/by-name/st/stalwart-mail/webadmin.nix | 9 ++---- pkgs/by-name/tp/tpsecore/package.nix | 10 ++---- .../wa/wasm-bindgen-cli_0_2_100/package.nix | 19 ++++++++++++ .../wa/wasm-bindgen-cli_0_2_92/package.nix | 19 ++++++++++++ .../wa/wasm-bindgen-cli_0_2_93/package.nix | 19 ++++++++++++ .../wa/wasm-bindgen-cli_0_2_95/package.nix | 19 ++++++++++++ pkgs/servers/teleport/15/default.nix | 9 +----- pkgs/servers/teleport/16/default.nix | 9 +----- pkgs/servers/teleport/default.nix | 31 ++++++++++++++++--- pkgs/top-level/aliases.nix | 1 + pkgs/top-level/all-packages.nix | 3 ++ 14 files changed, 125 insertions(+), 55 deletions(-) rename pkgs/{by-name/wa/wasm-bindgen-cli/package.nix => build-support/wasm-bindgen-cli/default.nix} (78%) create mode 100644 pkgs/by-name/wa/wasm-bindgen-cli_0_2_100/package.nix create mode 100644 pkgs/by-name/wa/wasm-bindgen-cli_0_2_92/package.nix create mode 100644 pkgs/by-name/wa/wasm-bindgen-cli_0_2_93/package.nix create mode 100644 pkgs/by-name/wa/wasm-bindgen-cli_0_2_95/package.nix diff --git a/pkgs/applications/misc/pagefind/default.nix b/pkgs/applications/misc/pagefind/default.nix index 84164c0b04f0..f0096de5ae09 100644 --- a/pkgs/applications/misc/pagefind/default.nix +++ b/pkgs/applications/misc/pagefind/default.nix @@ -12,7 +12,7 @@ npmHooks, python3, rustc, - wasm-bindgen-cli, + wasm-bindgen-cli_0_2_92, wasm-pack, }: @@ -20,12 +20,6 @@ let - wasm-bindgen-92 = wasm-bindgen-cli.override { - version = "0.2.92"; - hash = "sha256-1VwY8vQy7soKEgbki4LD+v259751kKxSxmo/gqE6yV0="; - cargoHash = "sha256-aACJ+lYNEU8FFBs158G1/JG8sc6Rq080PeKCMnwdpH0="; - }; - # the lindera-unidic v0.32.2 crate uses [1] an outdated unidic-mecab fork [2] and builds it in pure rust # [1] https://github.com/lindera/lindera/blob/v0.32.2/lindera-unidic/build.rs#L5-L11 # [2] https://github.com/lindera/unidic-mecab @@ -121,7 +115,7 @@ rustPlatform.buildRustPackage rec { nodejs rustc rustc.llvmPackages.lld - wasm-bindgen-92 + wasm-bindgen-cli_0_2_92 wasm-pack httplz ] diff --git a/pkgs/by-name/wa/wasm-bindgen-cli/package.nix b/pkgs/build-support/wasm-bindgen-cli/default.nix similarity index 78% rename from pkgs/by-name/wa/wasm-bindgen-cli/package.nix rename to pkgs/build-support/wasm-bindgen-cli/default.nix index 9fd1db1cdcde..4597009c387b 100644 --- a/pkgs/by-name/wa/wasm-bindgen-cli/package.nix +++ b/pkgs/build-support/wasm-bindgen-cli/default.nix @@ -9,16 +9,18 @@ stdenv, curl, darwin, - version ? "0.2.100", - hash ? "sha256-3RJzK7mkYFrs7C/WkhW9Rr4LdP5ofb2FdYGz1P7Uxog=", - cargoHash ? "sha256-tD0OY2PounRqsRiFh8Js5nyknQ809ZcHMvCOLrvYHRE=", +}: + +{ + version ? src.version, + src, + cargoDeps, }: rustPlatform.buildRustPackage rec { pname = "wasm-bindgen-cli"; - inherit version hash cargoHash; - src = fetchCrate { inherit pname version hash; }; + inherit version src cargoDeps; nativeBuildInputs = [ pkg-config ]; diff --git a/pkgs/by-name/ll/lldap/package.nix b/pkgs/by-name/ll/lldap/package.nix index 17d6aa009cf0..e3092f19fbff 100644 --- a/pkgs/by-name/ll/lldap/package.nix +++ b/pkgs/by-name/ll/lldap/package.nix @@ -5,19 +5,13 @@ , nixosTests , rustPlatform , rustc -, wasm-bindgen-cli +, wasm-bindgen-cli_0_2_95 , wasm-pack , which }: let - wasm-bindgen-95 = wasm-bindgen-cli.override { - version = "0.2.95"; - hash = "sha256-prMIreQeAcbJ8/g3+pMp1Wp9H5u+xLqxRxL+34hICss="; - cargoHash = "sha256-6iMebkD7FQvixlmghGGIvpdGwFNLfnUcFke/Rg8nPK4="; - }; - commonDerivationAttrs = rec { pname = "lldap"; version = "0.6.1"; @@ -44,7 +38,7 @@ let pname = commonDerivationAttrs.pname + "-frontend"; nativeBuildInputs = [ - wasm-pack wasm-bindgen-95 binaryen which rustc rustc.llvmPackages.lld + wasm-pack wasm-bindgen-cli_0_2_95 binaryen which rustc rustc.llvmPackages.lld ]; buildPhase = '' diff --git a/pkgs/by-name/st/stalwart-mail/webadmin.nix b/pkgs/by-name/st/stalwart-mail/webadmin.nix index 8776839677eb..8cf8b5418d44 100644 --- a/pkgs/by-name/st/stalwart-mail/webadmin.nix +++ b/pkgs/by-name/st/stalwart-mail/webadmin.nix @@ -9,7 +9,7 @@ nodejs, npmHooks, llvmPackages, - wasm-bindgen-cli, + wasm-bindgen-cli_0_2_93, binaryen, zip, }: @@ -46,11 +46,8 @@ rustPlatform.buildRustPackage rec { tailwindcss trunk # needs to match with wasm-bindgen version in upstreams Cargo.lock - (wasm-bindgen-cli.override { - version = "0.2.93"; - hash = "sha256-DDdu5mM3gneraM85pAepBXWn3TMofarVR4NbjMdz3r0="; - cargoHash = "sha256-birrg+XABBHHKJxfTKAMSlmTVYLmnmqMDfRnmG6g/YQ="; - }) + wasm-bindgen-cli_0_2_93 + zip ]; diff --git a/pkgs/by-name/tp/tpsecore/package.nix b/pkgs/by-name/tp/tpsecore/package.nix index 6d87efd6ec36..e8e50ea26e6a 100644 --- a/pkgs/by-name/tp/tpsecore/package.nix +++ b/pkgs/by-name/tp/tpsecore/package.nix @@ -4,18 +4,12 @@ rustPlatform, rustc, wasm-pack, - wasm-bindgen-cli, + wasm-bindgen-cli_0_2_95, binaryen, }: let version = "0.1.1"; - - wasm-bindgen-cli-95 = wasm-bindgen-cli.override { - version = "0.2.95"; - hash = "sha256-prMIreQeAcbJ8/g3+pMp1Wp9H5u+xLqxRxL+34hICss="; - cargoHash = "sha256-6iMebkD7FQvixlmghGGIvpdGwFNLfnUcFke/Rg8nPK4="; - }; in rustPlatform.buildRustPackage { pname = "tpsecore"; @@ -32,7 +26,7 @@ rustPlatform.buildRustPackage { nativeBuildInputs = [ wasm-pack - wasm-bindgen-cli-95 + wasm-bindgen-cli_0_2_95 binaryen rustc.llvmPackages.lld ]; diff --git a/pkgs/by-name/wa/wasm-bindgen-cli_0_2_100/package.nix b/pkgs/by-name/wa/wasm-bindgen-cli_0_2_100/package.nix new file mode 100644 index 000000000000..cbcf8d30385e --- /dev/null +++ b/pkgs/by-name/wa/wasm-bindgen-cli_0_2_100/package.nix @@ -0,0 +1,19 @@ +{ + buildWasmBindgenCli, + fetchCrate, + rustPlatform, +}: + +buildWasmBindgenCli rec { + src = fetchCrate { + pname = "wasm-bindgen-cli"; + version = "0.2.100"; + hash = "sha256-3RJzK7mkYFrs7C/WkhW9Rr4LdP5ofb2FdYGz1P7Uxog="; + }; + + cargoDeps = rustPlatform.fetchCargoTarball { + inherit src; + inherit (src) pname version; + hash = "sha256-tD0OY2PounRqsRiFh8Js5nyknQ809ZcHMvCOLrvYHRE="; + }; +} diff --git a/pkgs/by-name/wa/wasm-bindgen-cli_0_2_92/package.nix b/pkgs/by-name/wa/wasm-bindgen-cli_0_2_92/package.nix new file mode 100644 index 000000000000..b99c6e6ac2ae --- /dev/null +++ b/pkgs/by-name/wa/wasm-bindgen-cli_0_2_92/package.nix @@ -0,0 +1,19 @@ +{ + buildWasmBindgenCli, + fetchCrate, + rustPlatform, +}: + +buildWasmBindgenCli rec { + src = fetchCrate { + pname = "wasm-bindgen-cli"; + version = "0.2.92"; + hash = "sha256-1VwY8vQy7soKEgbki4LD+v259751kKxSxmo/gqE6yV0="; + }; + + cargoDeps = rustPlatform.fetchCargoTarball { + inherit src; + inherit (src) pname version; + hash = "sha256-aACJ+lYNEU8FFBs158G1/JG8sc6Rq080PeKCMnwdpH0="; + }; +} diff --git a/pkgs/by-name/wa/wasm-bindgen-cli_0_2_93/package.nix b/pkgs/by-name/wa/wasm-bindgen-cli_0_2_93/package.nix new file mode 100644 index 000000000000..0ae402f94d0d --- /dev/null +++ b/pkgs/by-name/wa/wasm-bindgen-cli_0_2_93/package.nix @@ -0,0 +1,19 @@ +{ + buildWasmBindgenCli, + fetchCrate, + rustPlatform, +}: + +buildWasmBindgenCli rec { + src = fetchCrate { + pname = "wasm-bindgen-cli"; + version = "0.2.93"; + hash = "sha256-DDdu5mM3gneraM85pAepBXWn3TMofarVR4NbjMdz3r0="; + }; + + cargoDeps = rustPlatform.fetchCargoTarball { + inherit src; + inherit (src) pname version; + hash = "sha256-birrg+XABBHHKJxfTKAMSlmTVYLmnmqMDfRnmG6g/YQ="; + }; +} diff --git a/pkgs/by-name/wa/wasm-bindgen-cli_0_2_95/package.nix b/pkgs/by-name/wa/wasm-bindgen-cli_0_2_95/package.nix new file mode 100644 index 000000000000..1061677a6955 --- /dev/null +++ b/pkgs/by-name/wa/wasm-bindgen-cli_0_2_95/package.nix @@ -0,0 +1,19 @@ +{ + buildWasmBindgenCli, + fetchCrate, + rustPlatform, +}: + +buildWasmBindgenCli rec { + src = fetchCrate { + pname = "wasm-bindgen-cli"; + version = "0.2.95"; + hash = "sha256-prMIreQeAcbJ8/g3+pMp1Wp9H5u+xLqxRxL+34hICss="; + }; + + cargoDeps = rustPlatform.fetchCargoTarball { + inherit src; + inherit (src) pname version; + hash = "sha256-6iMebkD7FQvixlmghGGIvpdGwFNLfnUcFke/Rg8nPK4="; + }; +} diff --git a/pkgs/servers/teleport/15/default.nix b/pkgs/servers/teleport/15/default.nix index 7df86df8c40d..7062e418a628 100644 --- a/pkgs/servers/teleport/15/default.nix +++ b/pkgs/servers/teleport/15/default.nix @@ -1,4 +1,4 @@ -{ wasm-bindgen-cli, ... }@args: +args: import ../generic.nix ( args // { @@ -14,12 +14,5 @@ import ../generic.nix ( "sspi-0.10.1" = "sha256-fkclC/plTh2d8zcmqthYmr5yXqbPTeFxI1VuaPX5vxk="; }; }; - - # wasm-bindgen-cli version must match the version of wasm-bindgen in Cargo.lock - wasm-bindgen-cli = wasm-bindgen-cli.override { - version = "0.2.92"; - hash = "sha256-1VwY8vQy7soKEgbki4LD+v259751kKxSxmo/gqE6yV0="; - cargoHash = "sha256-aACJ+lYNEU8FFBs158G1/JG8sc6Rq080PeKCMnwdpH0="; - }; } ) diff --git a/pkgs/servers/teleport/16/default.nix b/pkgs/servers/teleport/16/default.nix index 5ef66c9ce8a3..b13d17699943 100644 --- a/pkgs/servers/teleport/16/default.nix +++ b/pkgs/servers/teleport/16/default.nix @@ -1,4 +1,4 @@ -{ wasm-bindgen-cli, ... }@args: +args: import ../generic.nix ( args // { @@ -13,12 +13,5 @@ import ../generic.nix ( "ironrdp-async-0.1.0" = "sha256-DOwDHavDaEda+JK9M6kbvseoXe2LxJg3MLTY/Nu+PN0="; }; }; - - # wasm-bindgen-cli version must match the version of wasm-bindgen in Cargo.lock - wasm-bindgen-cli = wasm-bindgen-cli.override { - version = "0.2.93"; - hash = "sha256-DDdu5mM3gneraM85pAepBXWn3TMofarVR4NbjMdz3r0="; - cargoHash = "sha256-birrg+XABBHHKJxfTKAMSlmTVYLmnmqMDfRnmG6g/YQ="; - }; } ) diff --git a/pkgs/servers/teleport/default.nix b/pkgs/servers/teleport/default.nix index eb8f6fb4492e..83c984455883 100644 --- a/pkgs/servers/teleport/default.nix +++ b/pkgs/servers/teleport/default.nix @@ -1,11 +1,34 @@ -{ callPackages, lib, ... }@args: +{ + callPackages, + lib, + wasm-bindgen-cli_0_2_92, + wasm-bindgen-cli_0_2_93, + ... +}@args: let f = args: rec { - teleport_15 = import ./15 args; - teleport_16 = import ./16 args; + # wasm-bindgen-cli version must match the version of wasm-bindgen in Cargo.lock + teleport_15 = import ./15 ( + args + // { + wasm-bindgen-cli = wasm-bindgen-cli_0_2_92; + } + ); + teleport_16 = import ./16 ( + args + // { + wasm-bindgen-cli = wasm-bindgen-cli_0_2_93; + } + ); teleport = teleport_16; }; # Ensure the following callPackages invocation includes everything 'generic' needs. f' = lib.setFunctionArgs f (builtins.functionArgs (import ./generic.nix)); in -callPackages f' (builtins.removeAttrs args [ "callPackages" ]) +callPackages f' ( + builtins.removeAttrs args [ + "callPackages" + "wasm-bindgen-cli_0_2_92" + "wasm-bindgen-cli_0_2_93" + ] +) diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index b70bfc0232ac..1160cc91d436 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -1483,6 +1483,7 @@ mapAliases { wakatime = wakatime-cli; # 2024-05-30 wal_e = throw "wal_e was removed as it is unmaintained upstream and depends on the removed boto package; upstream recommends using wal-g or pgbackrest"; # Added 2024-09-22 wapp = tclPackages.wapp; # Added 2024-10-02 + wasm-bindgen-cli = wasm-bindgen-cli_0_2_100; wayfireApplications-unwrapped = throw '' 'wayfireApplications-unwrapped.wayfire' has been renamed to/replaced by 'wayfire' 'wayfireApplications-unwrapped.wayfirePlugins' has been renamed to/replaced by 'wayfirePlugins' diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 31dd0d695be4..7c3febb3ba13 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5339,6 +5339,9 @@ with pkgs; webassemblyjs-cli = nodePackages."@webassemblyjs/cli-1.11.1"; webassemblyjs-repl = nodePackages."@webassemblyjs/repl-1.11.1"; + + buildWasmBindgenCli = callPackage ../build-support/wasm-bindgen-cli { }; + wasm-strip = nodePackages."@webassemblyjs/wasm-strip"; wasm-text-gen = nodePackages."@webassemblyjs/wasm-text-gen-1.11.1"; wast-refmt = nodePackages."@webassemblyjs/wast-refmt-1.11.1";