Skip to content

Commit 7101805

Browse files
committed
emscripten: patch bugs involving EM_CACHE permissions
As a workaround for #282509, packages built with `emscriptenStdenv` need to set the `EM_CACHE` environment variable to a folder in the build directory, so that emscripten uses a copy of the sysroot cache instead of attempting to write to the sysroot in the Nix store. However, due to the bug emscripten-core/emscripten#24404, the copied cache has the same permission bits as the (readonly) one in the Nix store, resulting in "Permission Denied" errors. This bug has since been fixed in upstream emscripten, so we can backport the relevant patches.
1 parent 8c00e8f commit 7101805

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

pkgs/development/compilers/emscripten/default.nix

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
lib,
33
stdenv,
44
fetchFromGitHub,
5+
fetchpatch,
56
python3,
67
nodejs,
78
closurecompiler,
@@ -60,6 +61,17 @@ stdenv.mkDerivation rec {
6061
(replaceVars ./0001-emulate-clang-sysroot-include-logic.patch {
6162
resourceDir = "${llvmEnv}/lib/clang/${lib.versions.major llvmPackages.llvm.version}/";
6263
})
64+
# The following patches work around a bug where EM_CACHE is not copied with
65+
# the correct permissions; the bug will be fixed in the next release (probably 4.0.10).
66+
# See also: https://github.com/emscripten-core/emscripten/issues/24404
67+
(fetchpatch {
68+
url = "https://github.com/emscripten-core/emscripten/commit/99c6e41154f701e423074e33a4fdaf5eea49d073.patch";
69+
hash = "sha256-/wkhz08NhbgxsrXd7YFfdCGX6LrS2Ncct8dcwxBMsjY=";
70+
})
71+
(fetchpatch {
72+
url = "https://github.com/emscripten-core/emscripten/commit/f4d358d740a238b67a1d6935e71638519d25afa0.patch";
73+
hash = "sha256-hib5ZAN/R2dH+rTv3nYF37+xKZmeboKxnS+5mkht2lM=";
74+
})
6375
];
6476

6577
buildPhase = ''

0 commit comments

Comments
 (0)