diff --git a/crates/repl_wasm/build-www.sh b/crates/repl_wasm/build-www.sh index bc439e05aa6..623a637f495 100755 --- a/crates/repl_wasm/build-www.sh +++ b/crates/repl_wasm/build-www.sh @@ -9,7 +9,7 @@ # We use this two-step process because Netlify times out if we try to build the Web REPL there. # https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ -set -euxo pipefail +set -exo pipefail if ! which wasm-pack then @@ -23,9 +23,22 @@ cd $SCRIPT_RELATIVE_DIR mkdir -p build rm -rf build/* -# We want a release build, but with debug info (to get stack traces for Wasm backend panics) -# This configuration is called `--profiling` -wasm-pack build --profiling --target web -- --features console_error_panic_hook +# c++abi is not needed for wasm-pack and causes an error, see #6303 for more info +REMOVE_STR="-C link-arg=-lc++abi" + +( # start subshell to limit scope of export RUSTFLAGS + # Check if RUSTFLAGS contains the string to be removed + if [[ $RUSTFLAGS == *"$REMOVE_STR"* ]]; then + # Remove the string + RUSTFLAGS=$(echo "$RUSTFLAGS" | sed "s/$REMOVE_STR//g") + + export RUSTFLAGS + fi + + # We want a release build, but with debug info (to get stack traces for Wasm backend panics) + # This configuration is called `--profiling` + wasm-pack build --profiling --target web -- --features console_error_panic_hook +) cp -v pkg/roc_repl_wasm.js build # To disable optimizations while debugging, do `export REPL_DEBUG=1` before running the script diff --git a/flake.lock b/flake.lock index e0c185ee013..d39bc639e0d 100644 --- a/flake.lock +++ b/flake.lock @@ -59,17 +59,17 @@ }, "nixpkgs": { "locked": { - "lastModified": 1693140250, - "narHash": "sha256-URyIDETtu1bbxcSl83xp7irEV04dPEgj7O3LjHcD1Sk=", + "lastModified": 1702900294, + "narHash": "sha256-pt7sSoJYNw3n8YtXw0Z/Nnr6/PfY2YrjDvqboErXnRM=", "owner": "nixos", "repo": "nixpkgs", - "rev": "676fe5e01b9a41fa14aaa48d87685677664104b1", + "rev": "886c9aee6ca9324e127f9c2c4e6f68c2641c8256", "type": "github" }, "original": { "owner": "nixos", "repo": "nixpkgs", - "rev": "676fe5e01b9a41fa14aaa48d87685677664104b1", + "rev": "886c9aee6ca9324e127f9c2c4e6f68c2641c8256", "type": "github" } }, diff --git a/flake.nix b/flake.nix index fa6998ae5e9..501b00eeea8 100644 --- a/flake.nix +++ b/flake.nix @@ -2,7 +2,7 @@ description = "Roc flake"; inputs = { - nixpkgs.url = "github:nixos/nixpkgs?rev=676fe5e01b9a41fa14aaa48d87685677664104b1"; + nixpkgs.url = "github:nixos/nixpkgs?rev=886c9aee6ca9324e127f9c2c4e6f68c2641c8256"; # rust from nixpkgs has some libc problems, this is patched in the rust-overlay rust-overlay = { @@ -134,7 +134,9 @@ shellHook = '' export LLVM_SYS_${llvmMajorMinorStr}_PREFIX="${llvmPkgs.llvm.dev}" ${aliases} - ''; + '' + pkgs.lib.optionalString (system == "aarch64-darwin") '' + export RUSTFLAGS="-C link-arg=-lc++abi" + ''; # lc++abi as workaround for github.com/NixOS/nixpkgs/issues/166205, see also github.com/roc-lang/roc/issues/6303 }; formatter = pkgs.nixpkgs-fmt;