From 5df86e33ac01fb9039892d6896943807dedf9078 Mon Sep 17 00:00:00 2001 From: Jeremy Wall Date: Tue, 21 Mar 2023 17:24:11 -0400 Subject: [PATCH] Bring in wasm-pack directly to preserve keep control over it even more --- flake.nix | 12 +++++++++++- nix/devShell/default.nix | 4 ++-- nix/wasm-pack/default.nix | 25 +++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 nix/wasm-pack/default.nix diff --git a/flake.nix b/flake.nix index f258f06..142fd0b 100644 --- a/flake.nix +++ b/flake.nix @@ -17,6 +17,7 @@ kitchenGen = (import ./nix/kitchen/default.nix); kitchenWasmGen = (import ./nix/kitchenWasm/default.nix); moduleGen = (import ./nix/kitchen/module.nix); + wasm-packGen = (import ./nix/wasm-pack/default.nix); version = "0.2.24"; in flake-utils.lib.eachDefaultSystem (system: @@ -34,6 +35,11 @@ rustc = rust-wasm; cargo = rust-wasm; }; + # We've run into a few problems with the bundled wasm-pack in nixpkgs. + # Better to just control this part of our toolchain directly. + wasm-pack = wasm-packGen { + inherit rust-wasm naersk-lib pkgs; + }; kitchenWasm = kitchenWasmGen { inherit pkgs rust-wasm version; }; @@ -72,6 +78,10 @@ type = "app"; program = "${kitchen}/bin/kitchen"; }; + devShell = pkgs.callPackage ./nix/devShell/default.nix { + inherit rust-wasm; + wasm-pack-hermetic = wasm-pack; + }; } ); -} +} \ No newline at end of file diff --git a/nix/devShell/default.nix b/nix/devShell/default.nix index 047e020..787ecf9 100644 --- a/nix/devShell/default.nix +++ b/nix/devShell/default.nix @@ -1,8 +1,8 @@ let lib = import ../lib/lib.nix; in -{ pkgs, rust-wasm, wasm-pack }: +{ pkgs, rust-wasm, wasm-pack-hermetic }: with pkgs; mkShell { - buildInputs = (lib.darwin-sdk pkgs) ++ (with pkgs; [wasm-bindgen-cli wasm-pack llvm clang rust-wasm]); + buildInputs = (lib.darwin-sdk pkgs) ++ (with pkgs; [wasm-bindgen-cli wasm-pack-hermetic llvm clang rust-wasm]); } \ No newline at end of file diff --git a/nix/wasm-pack/default.nix b/nix/wasm-pack/default.nix new file mode 100644 index 0000000..bfd9a52 --- /dev/null +++ b/nix/wasm-pack/default.nix @@ -0,0 +1,25 @@ +let + my-lib = import ../lib/lib.nix; +in +{pkgs, + # Because it's a workspace we need the other crates available as source + naersk-lib, + rust-wasm, +}: +with pkgs; +(naersk-lib.buildPackage rec { + pname = "wasm-pack"; + version = "v0.11.0"; + buildInputs = [ rust-wasm pkgs.openssl curl]; + # However the crate we are building has it's root in specific crate. + nativeBuildInputs = (my-lib.darwin-sdk pkgs) ++ [llvm clang pkg-config]; + OPENSSL_NO_VENDOR=1; + doCheck = false; + src = fetchFromGitHub { + owner = "rustwasm"; + repo = "wasm-pack"; + rev = version; + sha256 = "sha256-3iwXoYnmrZsbwFUR41uI/4jnCF0OjeRO7UqVDaGJJbQ="; + }; + cargoBuildOptions = opts: opts ++ ["-p" "${pname}" ]; +}) \ No newline at end of file