From 8d774f2444d8f01978b13077ecfc4659e7f112dd Mon Sep 17 00:00:00 2001 From: Benalleng Date: Thu, 21 May 2026 14:32:51 -0400 Subject: [PATCH 1/3] Add new wasm target for rust-bin targets in dev shell This commit adds wasm32-unknown-unknown to fix a bug where rustup target add was ignored by generate_bindings.sh As well adds env configuration to fix a bug where cc-rs is invoked in the new target. Add bindgen-cli pin in nix --- flake.nix | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/flake.nix b/flake.nix index aa2f95097..4715478a3 100644 --- a/flake.nix +++ b/flake.nix @@ -89,17 +89,19 @@ "rustfmt" "llvm-tools-preview" ]; - # Targets needed by payjoin-ffi/python/scripts/generate_bindings.sh + # Targets needed by payjoin-ffi/{python,javascript}/scripts/generate_bindings.sh # so cargo can build per-arch artifacts under nix (rustup target add # is a no-op against a nix-provided toolchain). - targets = - pkgs.lib.optionals pkgs.stdenv.isDarwin [ - "aarch64-apple-darwin" - "x86_64-apple-darwin" - ] - ++ pkgs.lib.optionals pkgs.stdenv.isLinux [ - "x86_64-unknown-linux-gnu" - ]; + targets = [ + "wasm32-unknown-unknown" + ] + ++ pkgs.lib.optionals pkgs.stdenv.isDarwin [ + "aarch64-apple-darwin" + "x86_64-apple-darwin" + ] + ++ pkgs.lib.optionals pkgs.stdenv.isLinux [ + "x86_64-unknown-linux-gnu" + ]; } ) { @@ -290,6 +292,14 @@ cargo-fuzz bzip2 # needed for some machines to have access to libzip at runtime codespell + # secp256k1-sys build.rs invokes cc-rs for the wasm32-unknown-unknown + # target; cc-rs defaults to clang for wasm and needs llvm-ar. + llvmPackages.clang-unwrapped + llvmPackages.bintools-unwrapped + lld + # Version must match the wasm-bindgen crate locked in + # payjoin-ffi/javascript/rust_modules/wasm/Cargo.lock. + wasm-bindgen-cli_0_2_108 ] ++ pkgs.lib.optionals (!pkgs.stdenv.isDarwin) [ cargo-llvm-cov @@ -298,6 +308,8 @@ BITCOIND_SKIP_DOWNLOAD = 1; DOTNET_ROOT = "${dotnetSdk}/share/dotnet"; DOTNET_CLI_TELEMETRY_OPTOUT = "1"; + CC_wasm32_unknown_unknown = "${pkgs.llvmPackages.clang-unwrapped}/bin/clang"; + AR_wasm32_unknown_unknown = "${pkgs.llvmPackages.bintools-unwrapped}/bin/llvm-ar"; } ) craneLibVersions; From f20d84763b8cbfca104f50f5f7f98222e5e034be Mon Sep 17 00:00:00 2001 From: Benalleng Date: Thu, 21 May 2026 15:16:08 -0400 Subject: [PATCH 2/3] Skip brew override if in nix shell --- payjoin-ffi/javascript/scripts/generate_bindings.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payjoin-ffi/javascript/scripts/generate_bindings.sh b/payjoin-ffi/javascript/scripts/generate_bindings.sh index 347c6ee67..1dbbbc5a1 100755 --- a/payjoin-ffi/javascript/scripts/generate_bindings.sh +++ b/payjoin-ffi/javascript/scripts/generate_bindings.sh @@ -6,7 +6,7 @@ echo "Running on $OS" npm --version -if [[ $OS == "Darwin" ]]; then +if [[ $OS == "Darwin" && -z ${IN_NIX_SHELL:-} ]]; then # TODO: check if brew & llvm are installed LLVM_PREFIX=$(brew --prefix llvm) export AR="$LLVM_PREFIX/bin/llvm-ar" From f127a017b7b76107cd4405e9f372d7d09f282adc Mon Sep 17 00:00:00 2001 From: Benalleng Date: Thu, 21 May 2026 14:34:14 -0400 Subject: [PATCH 3/3] Add dev shell within the javascript ffi bindings test Remove msrv rust toolchain env --- .github/workflows/javascript.yml | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/.github/workflows/javascript.yml b/.github/workflows/javascript.yml index d47a8251e..a65b9040c 100644 --- a/.github/workflows/javascript.yml +++ b/.github/workflows/javascript.yml @@ -8,12 +8,6 @@ on: pull_request: paths: - payjoin-ffi/** -env: - # Override the value from the rust-toolchain file - # This is necessary because even though the correct toolchain - # is explicitly specified for the rust-toolchain action, - # rustup honors the rust-toolchain file over the default - RUSTUP_TOOLCHAIN: 1.85 jobs: build-js-and-test: @@ -29,22 +23,14 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Install Rust 1.85.0 - uses: dtolnay/rust-toolchain@1.85.0 - - name: "Use cache" uses: Swatinem/rust-cache@v2 - - name: Install Node - uses: actions/setup-node@v6 - - - name: Install llvm - if: matrix.os == 'macos-latest' - run: brew install llvm + - name: "Install nix" + uses: DeterminateSystems/determinate-nix-action@main - # 0.2.109+ requires rustc 1.88 (via time crate). - - name: Install wasm-bindgen - run: cargo install --locked wasm-bindgen-cli --version 0.2.108 + - name: "Use nix cache" + uses: DeterminateSystems/magic-nix-cache-action@main - name: "Build and test" - run: bash ./contrib/test.sh + run: nix develop .#msrv -c ./contrib/test.sh