@ai-ecoverse/wasm-emscripten 6.0.9-5 → 6.0.9-6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -14,6 +14,17 @@ pointing at this package's config.
14
14
  | `@ai-ecoverse/emscripten-cache` | Read-only prebuilt `sysroot/` |
15
15
  | `esbuild-wasm@0.28.2` | SLICC `node` ESM/TLA transpile (`compiler.mjs`, …) |
16
16
  | `typescript@6.0.3` | Fallback transpile path when esbuild is unavailable |
17
+ | `acorn` / `acorn-import-phases` | JS optimizer (`acorn-optimizer.mjs`) |
18
+
19
+ ## Default link (wasm realm)
20
+
21
+ Executable links (not `-c` / `-r` / `-shared`) inject `homescoop_em_cli_ldflags`
22
+ (`-sENVIRONMENT=web,worker,node -sEXIT_RUNTIME=1 -sALLOW_MEMORY_GROWTH=1`) and
23
+ `lib/slicc/{slicc_spawn,slicc_exec,slicc_signals,slicc_select,slicc_libc_gaps,slicc_jobs}.o`.
24
+ Opt out with **`SLICC_EMCC_PLAIN=1`** for plain web glue.
25
+ `lib/slicc/slicc_main_envp.o` (make: `-Dmain=slicc_tool_main`) and
26
+ `lib/slicc/slicc_fork.o` (needs ASYNCIFY) are shipped but not auto-linked.
27
+ Root `$PKG/emcc` (cmake toolchain) and `$PKG/bin/emcc` are the same self-sufficient launcher.
17
28
 
18
29
  ## CACHE model
19
30
 
@@ -26,18 +37,19 @@ pointing at this package's config.
26
37
 
27
38
  ## SLICC patches (September + homescoop)
28
39
 
29
- 1. **`SLICC_VFS_PRE_JS`** — every link gets `lib/slicc-vfs-pre.js` (live VFS mount; no NODERAWFS under slicc)
30
- 2. **Configure patch** — autoconf/conftest skips `NODERAWFS` when the pre-js is set (`patches/emscripten-slicc-configure.patch` in slicc-emscripten)
40
+ 1. **Wasm-realm CLI link defaults** — see above; optional `SLICC_VFS_PRE_JS` only when set (node-realm)
41
+ 2. **Configure patch** — autoconf/conftest skips `NODERAWFS` under CLI defaults
31
42
  3. **`ac_cv_build` seeding** — `emconfigure` sets `ac_cv_build=x86_64-pc-linux-gnu` (and host/target) so `config.guess` is not required in-realm
32
43
  4. **Closure unsupported** — `-sCLOSURE=1` / `--closure` fail with: *Closure Compiler is not available in SLICC's Emscripten package*
33
44
  5. **Cache erase** — will not delete a symlinked `sysroot`
45
+ 6. **`execvpe`** — `tools/utils.py` passes `os.environ` so emconfigure/`emmake` keep `CC=emcc`
34
46
 
35
47
  ## Commands
36
48
 
37
49
  `emcc`, `em++`, `emar`, `emranlib`, `emcmake`, `emconfigure`, `emmake`, `embuilder`, `em-config`, `emscan-deps`
38
50
 
39
51
  ```bash
40
- emcc hello.c -o hello.js
52
+ emcc hello.c -o hello.js # runnable in the wasm realm
41
53
  emcmake cmake -S . -B build
42
54
  emconfigure ./configure --host=wasm32-unknown-emscripten
43
55
  ```
package/bin/em++ CHANGED
@@ -1,11 +1,25 @@
1
1
  #!/bin/sh
2
2
  # Shared launcher for emcc/em++/emar/… — runs em*.py on wasix-python (-S).
3
+ # Self-sufficient when invoked by path (emcmake toolchain uses $PKG/emcc).
3
4
  set -eu
4
5
 
5
6
  TOOL=$(basename "$0")
6
7
  BINDIR=$(CDPATH= cd -- "$(dirname "$0")" && pwd)
7
- PKG_ROOT=${EM_PACKAGE_ROOT:-$(CDPATH= cd -- "$BINDIR/.." && pwd)}
8
- export EM_PACKAGE_ROOT=$PKG_ROOT
8
+
9
+ # $PKG/emcc (cmake / path_from_root) → package root is BINDIR.
10
+ # $PKG/bin/emcc (slicc.commands) → package root is parent.
11
+ if [ -f "$BINDIR/emcc.py" ]; then
12
+ PKG_ROOT=$BINDIR
13
+ ENSURE_CACHE=$BINDIR/bin/em-ensure-cache
14
+ elif [ -f "$BINDIR/../emcc.py" ]; then
15
+ PKG_ROOT=$(CDPATH= cd -- "$BINDIR/.." && pwd)
16
+ ENSURE_CACHE=$BINDIR/em-ensure-cache
17
+ else
18
+ PKG_ROOT=${EM_PACKAGE_ROOT:-$BINDIR}
19
+ ENSURE_CACHE=$BINDIR/em-ensure-cache
20
+ fi
21
+
22
+ export EM_PACKAGE_ROOT=${EM_PACKAGE_ROOT:-$PKG_ROOT}
9
23
  export EM_CONFIG=${EM_CONFIG:-$PKG_ROOT/emscripten-config}
10
24
 
11
25
  # Resolve companion packages when slicc.env did not set them.
@@ -15,12 +29,17 @@ export EM_CONFIG=${EM_CONFIG:-$PKG_ROOT/emscripten-config}
15
29
  export EM_CACHE_PACKAGE EM_LLVM_PACKAGE EM_BINARYEN_PACKAGE
16
30
 
17
31
  # Writable user CACHE + sysroot symlink into emscripten-cache.
18
- CACHE=$("$BINDIR/em-ensure-cache")
32
+ if [ ! -x "$ENSURE_CACHE" ]; then
33
+ echo "em-launcher: missing $ENSURE_CACHE" >&2
34
+ exit 1
35
+ fi
36
+ CACHE=$("$ENSURE_CACHE")
19
37
  export EM_CACHE=$CACHE
20
38
 
21
- # VFS pre-js for every link (September slicc patch).
22
- : "${SLICC_VFS_PRE_JS:=$PKG_ROOT/lib/slicc-vfs-pre.js}"
23
- export SLICC_VFS_PRE_JS
39
+ # libslicc objects for default executable links (link.py); not the node-realm VFS pre-js.
40
+ export SLICC_EM_LIBDIR=${SLICC_EM_LIBDIR:-$PKG_ROOT/lib/slicc}
41
+ # Do NOT default-export SLICC_VFS_PRE_JS — that pre-js reads process.env.SLICC_LIVE_FS
42
+ # (node-realm only) and breaks wasm-realm runnables. Opt in explicitly if needed.
24
43
 
25
44
  PY=${EMSDK_PYTHON:-}
26
45
  if [ -z "$PY" ]; then
@@ -36,7 +55,6 @@ fi
36
55
 
37
56
  SCRIPT=$PKG_ROOT/${TOOL}.py
38
57
  if [ ! -f "$SCRIPT" ]; then
39
- # emranlib → emranlib.py; emcmake → emcmake.py; etc.
40
58
  case $TOOL in
41
59
  em++) SCRIPT=$PKG_ROOT/em++.py ;;
42
60
  esac
package/bin/em-config CHANGED
@@ -1,11 +1,25 @@
1
1
  #!/bin/sh
2
2
  # Shared launcher for emcc/em++/emar/… — runs em*.py on wasix-python (-S).
3
+ # Self-sufficient when invoked by path (emcmake toolchain uses $PKG/emcc).
3
4
  set -eu
4
5
 
5
6
  TOOL=$(basename "$0")
6
7
  BINDIR=$(CDPATH= cd -- "$(dirname "$0")" && pwd)
7
- PKG_ROOT=${EM_PACKAGE_ROOT:-$(CDPATH= cd -- "$BINDIR/.." && pwd)}
8
- export EM_PACKAGE_ROOT=$PKG_ROOT
8
+
9
+ # $PKG/emcc (cmake / path_from_root) → package root is BINDIR.
10
+ # $PKG/bin/emcc (slicc.commands) → package root is parent.
11
+ if [ -f "$BINDIR/emcc.py" ]; then
12
+ PKG_ROOT=$BINDIR
13
+ ENSURE_CACHE=$BINDIR/bin/em-ensure-cache
14
+ elif [ -f "$BINDIR/../emcc.py" ]; then
15
+ PKG_ROOT=$(CDPATH= cd -- "$BINDIR/.." && pwd)
16
+ ENSURE_CACHE=$BINDIR/em-ensure-cache
17
+ else
18
+ PKG_ROOT=${EM_PACKAGE_ROOT:-$BINDIR}
19
+ ENSURE_CACHE=$BINDIR/em-ensure-cache
20
+ fi
21
+
22
+ export EM_PACKAGE_ROOT=${EM_PACKAGE_ROOT:-$PKG_ROOT}
9
23
  export EM_CONFIG=${EM_CONFIG:-$PKG_ROOT/emscripten-config}
10
24
 
11
25
  # Resolve companion packages when slicc.env did not set them.
@@ -15,12 +29,17 @@ export EM_CONFIG=${EM_CONFIG:-$PKG_ROOT/emscripten-config}
15
29
  export EM_CACHE_PACKAGE EM_LLVM_PACKAGE EM_BINARYEN_PACKAGE
16
30
 
17
31
  # Writable user CACHE + sysroot symlink into emscripten-cache.
18
- CACHE=$("$BINDIR/em-ensure-cache")
32
+ if [ ! -x "$ENSURE_CACHE" ]; then
33
+ echo "em-launcher: missing $ENSURE_CACHE" >&2
34
+ exit 1
35
+ fi
36
+ CACHE=$("$ENSURE_CACHE")
19
37
  export EM_CACHE=$CACHE
20
38
 
21
- # VFS pre-js for every link (September slicc patch).
22
- : "${SLICC_VFS_PRE_JS:=$PKG_ROOT/lib/slicc-vfs-pre.js}"
23
- export SLICC_VFS_PRE_JS
39
+ # libslicc objects for default executable links (link.py); not the node-realm VFS pre-js.
40
+ export SLICC_EM_LIBDIR=${SLICC_EM_LIBDIR:-$PKG_ROOT/lib/slicc}
41
+ # Do NOT default-export SLICC_VFS_PRE_JS — that pre-js reads process.env.SLICC_LIVE_FS
42
+ # (node-realm only) and breaks wasm-realm runnables. Opt in explicitly if needed.
24
43
 
25
44
  PY=${EMSDK_PYTHON:-}
26
45
  if [ -z "$PY" ]; then
@@ -36,7 +55,6 @@ fi
36
55
 
37
56
  SCRIPT=$PKG_ROOT/${TOOL}.py
38
57
  if [ ! -f "$SCRIPT" ]; then
39
- # emranlib → emranlib.py; emcmake → emcmake.py; etc.
40
58
  case $TOOL in
41
59
  em++) SCRIPT=$PKG_ROOT/em++.py ;;
42
60
  esac
package/bin/emar CHANGED
@@ -1,11 +1,25 @@
1
1
  #!/bin/sh
2
2
  # Shared launcher for emcc/em++/emar/… — runs em*.py on wasix-python (-S).
3
+ # Self-sufficient when invoked by path (emcmake toolchain uses $PKG/emcc).
3
4
  set -eu
4
5
 
5
6
  TOOL=$(basename "$0")
6
7
  BINDIR=$(CDPATH= cd -- "$(dirname "$0")" && pwd)
7
- PKG_ROOT=${EM_PACKAGE_ROOT:-$(CDPATH= cd -- "$BINDIR/.." && pwd)}
8
- export EM_PACKAGE_ROOT=$PKG_ROOT
8
+
9
+ # $PKG/emcc (cmake / path_from_root) → package root is BINDIR.
10
+ # $PKG/bin/emcc (slicc.commands) → package root is parent.
11
+ if [ -f "$BINDIR/emcc.py" ]; then
12
+ PKG_ROOT=$BINDIR
13
+ ENSURE_CACHE=$BINDIR/bin/em-ensure-cache
14
+ elif [ -f "$BINDIR/../emcc.py" ]; then
15
+ PKG_ROOT=$(CDPATH= cd -- "$BINDIR/.." && pwd)
16
+ ENSURE_CACHE=$BINDIR/em-ensure-cache
17
+ else
18
+ PKG_ROOT=${EM_PACKAGE_ROOT:-$BINDIR}
19
+ ENSURE_CACHE=$BINDIR/em-ensure-cache
20
+ fi
21
+
22
+ export EM_PACKAGE_ROOT=${EM_PACKAGE_ROOT:-$PKG_ROOT}
9
23
  export EM_CONFIG=${EM_CONFIG:-$PKG_ROOT/emscripten-config}
10
24
 
11
25
  # Resolve companion packages when slicc.env did not set them.
@@ -15,12 +29,17 @@ export EM_CONFIG=${EM_CONFIG:-$PKG_ROOT/emscripten-config}
15
29
  export EM_CACHE_PACKAGE EM_LLVM_PACKAGE EM_BINARYEN_PACKAGE
16
30
 
17
31
  # Writable user CACHE + sysroot symlink into emscripten-cache.
18
- CACHE=$("$BINDIR/em-ensure-cache")
32
+ if [ ! -x "$ENSURE_CACHE" ]; then
33
+ echo "em-launcher: missing $ENSURE_CACHE" >&2
34
+ exit 1
35
+ fi
36
+ CACHE=$("$ENSURE_CACHE")
19
37
  export EM_CACHE=$CACHE
20
38
 
21
- # VFS pre-js for every link (September slicc patch).
22
- : "${SLICC_VFS_PRE_JS:=$PKG_ROOT/lib/slicc-vfs-pre.js}"
23
- export SLICC_VFS_PRE_JS
39
+ # libslicc objects for default executable links (link.py); not the node-realm VFS pre-js.
40
+ export SLICC_EM_LIBDIR=${SLICC_EM_LIBDIR:-$PKG_ROOT/lib/slicc}
41
+ # Do NOT default-export SLICC_VFS_PRE_JS — that pre-js reads process.env.SLICC_LIVE_FS
42
+ # (node-realm only) and breaks wasm-realm runnables. Opt in explicitly if needed.
24
43
 
25
44
  PY=${EMSDK_PYTHON:-}
26
45
  if [ -z "$PY" ]; then
@@ -36,7 +55,6 @@ fi
36
55
 
37
56
  SCRIPT=$PKG_ROOT/${TOOL}.py
38
57
  if [ ! -f "$SCRIPT" ]; then
39
- # emranlib → emranlib.py; emcmake → emcmake.py; etc.
40
58
  case $TOOL in
41
59
  em++) SCRIPT=$PKG_ROOT/em++.py ;;
42
60
  esac
package/bin/embuilder CHANGED
@@ -1,11 +1,25 @@
1
1
  #!/bin/sh
2
2
  # Shared launcher for emcc/em++/emar/… — runs em*.py on wasix-python (-S).
3
+ # Self-sufficient when invoked by path (emcmake toolchain uses $PKG/emcc).
3
4
  set -eu
4
5
 
5
6
  TOOL=$(basename "$0")
6
7
  BINDIR=$(CDPATH= cd -- "$(dirname "$0")" && pwd)
7
- PKG_ROOT=${EM_PACKAGE_ROOT:-$(CDPATH= cd -- "$BINDIR/.." && pwd)}
8
- export EM_PACKAGE_ROOT=$PKG_ROOT
8
+
9
+ # $PKG/emcc (cmake / path_from_root) → package root is BINDIR.
10
+ # $PKG/bin/emcc (slicc.commands) → package root is parent.
11
+ if [ -f "$BINDIR/emcc.py" ]; then
12
+ PKG_ROOT=$BINDIR
13
+ ENSURE_CACHE=$BINDIR/bin/em-ensure-cache
14
+ elif [ -f "$BINDIR/../emcc.py" ]; then
15
+ PKG_ROOT=$(CDPATH= cd -- "$BINDIR/.." && pwd)
16
+ ENSURE_CACHE=$BINDIR/em-ensure-cache
17
+ else
18
+ PKG_ROOT=${EM_PACKAGE_ROOT:-$BINDIR}
19
+ ENSURE_CACHE=$BINDIR/em-ensure-cache
20
+ fi
21
+
22
+ export EM_PACKAGE_ROOT=${EM_PACKAGE_ROOT:-$PKG_ROOT}
9
23
  export EM_CONFIG=${EM_CONFIG:-$PKG_ROOT/emscripten-config}
10
24
 
11
25
  # Resolve companion packages when slicc.env did not set them.
@@ -15,12 +29,17 @@ export EM_CONFIG=${EM_CONFIG:-$PKG_ROOT/emscripten-config}
15
29
  export EM_CACHE_PACKAGE EM_LLVM_PACKAGE EM_BINARYEN_PACKAGE
16
30
 
17
31
  # Writable user CACHE + sysroot symlink into emscripten-cache.
18
- CACHE=$("$BINDIR/em-ensure-cache")
32
+ if [ ! -x "$ENSURE_CACHE" ]; then
33
+ echo "em-launcher: missing $ENSURE_CACHE" >&2
34
+ exit 1
35
+ fi
36
+ CACHE=$("$ENSURE_CACHE")
19
37
  export EM_CACHE=$CACHE
20
38
 
21
- # VFS pre-js for every link (September slicc patch).
22
- : "${SLICC_VFS_PRE_JS:=$PKG_ROOT/lib/slicc-vfs-pre.js}"
23
- export SLICC_VFS_PRE_JS
39
+ # libslicc objects for default executable links (link.py); not the node-realm VFS pre-js.
40
+ export SLICC_EM_LIBDIR=${SLICC_EM_LIBDIR:-$PKG_ROOT/lib/slicc}
41
+ # Do NOT default-export SLICC_VFS_PRE_JS — that pre-js reads process.env.SLICC_LIVE_FS
42
+ # (node-realm only) and breaks wasm-realm runnables. Opt in explicitly if needed.
24
43
 
25
44
  PY=${EMSDK_PYTHON:-}
26
45
  if [ -z "$PY" ]; then
@@ -36,7 +55,6 @@ fi
36
55
 
37
56
  SCRIPT=$PKG_ROOT/${TOOL}.py
38
57
  if [ ! -f "$SCRIPT" ]; then
39
- # emranlib → emranlib.py; emcmake → emcmake.py; etc.
40
58
  case $TOOL in
41
59
  em++) SCRIPT=$PKG_ROOT/em++.py ;;
42
60
  esac
package/bin/emcc CHANGED
@@ -1,11 +1,25 @@
1
1
  #!/bin/sh
2
2
  # Shared launcher for emcc/em++/emar/… — runs em*.py on wasix-python (-S).
3
+ # Self-sufficient when invoked by path (emcmake toolchain uses $PKG/emcc).
3
4
  set -eu
4
5
 
5
6
  TOOL=$(basename "$0")
6
7
  BINDIR=$(CDPATH= cd -- "$(dirname "$0")" && pwd)
7
- PKG_ROOT=${EM_PACKAGE_ROOT:-$(CDPATH= cd -- "$BINDIR/.." && pwd)}
8
- export EM_PACKAGE_ROOT=$PKG_ROOT
8
+
9
+ # $PKG/emcc (cmake / path_from_root) → package root is BINDIR.
10
+ # $PKG/bin/emcc (slicc.commands) → package root is parent.
11
+ if [ -f "$BINDIR/emcc.py" ]; then
12
+ PKG_ROOT=$BINDIR
13
+ ENSURE_CACHE=$BINDIR/bin/em-ensure-cache
14
+ elif [ -f "$BINDIR/../emcc.py" ]; then
15
+ PKG_ROOT=$(CDPATH= cd -- "$BINDIR/.." && pwd)
16
+ ENSURE_CACHE=$BINDIR/em-ensure-cache
17
+ else
18
+ PKG_ROOT=${EM_PACKAGE_ROOT:-$BINDIR}
19
+ ENSURE_CACHE=$BINDIR/em-ensure-cache
20
+ fi
21
+
22
+ export EM_PACKAGE_ROOT=${EM_PACKAGE_ROOT:-$PKG_ROOT}
9
23
  export EM_CONFIG=${EM_CONFIG:-$PKG_ROOT/emscripten-config}
10
24
 
11
25
  # Resolve companion packages when slicc.env did not set them.
@@ -15,12 +29,17 @@ export EM_CONFIG=${EM_CONFIG:-$PKG_ROOT/emscripten-config}
15
29
  export EM_CACHE_PACKAGE EM_LLVM_PACKAGE EM_BINARYEN_PACKAGE
16
30
 
17
31
  # Writable user CACHE + sysroot symlink into emscripten-cache.
18
- CACHE=$("$BINDIR/em-ensure-cache")
32
+ if [ ! -x "$ENSURE_CACHE" ]; then
33
+ echo "em-launcher: missing $ENSURE_CACHE" >&2
34
+ exit 1
35
+ fi
36
+ CACHE=$("$ENSURE_CACHE")
19
37
  export EM_CACHE=$CACHE
20
38
 
21
- # VFS pre-js for every link (September slicc patch).
22
- : "${SLICC_VFS_PRE_JS:=$PKG_ROOT/lib/slicc-vfs-pre.js}"
23
- export SLICC_VFS_PRE_JS
39
+ # libslicc objects for default executable links (link.py); not the node-realm VFS pre-js.
40
+ export SLICC_EM_LIBDIR=${SLICC_EM_LIBDIR:-$PKG_ROOT/lib/slicc}
41
+ # Do NOT default-export SLICC_VFS_PRE_JS — that pre-js reads process.env.SLICC_LIVE_FS
42
+ # (node-realm only) and breaks wasm-realm runnables. Opt in explicitly if needed.
24
43
 
25
44
  PY=${EMSDK_PYTHON:-}
26
45
  if [ -z "$PY" ]; then
@@ -36,7 +55,6 @@ fi
36
55
 
37
56
  SCRIPT=$PKG_ROOT/${TOOL}.py
38
57
  if [ ! -f "$SCRIPT" ]; then
39
- # emranlib → emranlib.py; emcmake → emcmake.py; etc.
40
58
  case $TOOL in
41
59
  em++) SCRIPT=$PKG_ROOT/em++.py ;;
42
60
  esac
package/bin/emcmake CHANGED
@@ -1,11 +1,25 @@
1
1
  #!/bin/sh
2
2
  # Shared launcher for emcc/em++/emar/… — runs em*.py on wasix-python (-S).
3
+ # Self-sufficient when invoked by path (emcmake toolchain uses $PKG/emcc).
3
4
  set -eu
4
5
 
5
6
  TOOL=$(basename "$0")
6
7
  BINDIR=$(CDPATH= cd -- "$(dirname "$0")" && pwd)
7
- PKG_ROOT=${EM_PACKAGE_ROOT:-$(CDPATH= cd -- "$BINDIR/.." && pwd)}
8
- export EM_PACKAGE_ROOT=$PKG_ROOT
8
+
9
+ # $PKG/emcc (cmake / path_from_root) → package root is BINDIR.
10
+ # $PKG/bin/emcc (slicc.commands) → package root is parent.
11
+ if [ -f "$BINDIR/emcc.py" ]; then
12
+ PKG_ROOT=$BINDIR
13
+ ENSURE_CACHE=$BINDIR/bin/em-ensure-cache
14
+ elif [ -f "$BINDIR/../emcc.py" ]; then
15
+ PKG_ROOT=$(CDPATH= cd -- "$BINDIR/.." && pwd)
16
+ ENSURE_CACHE=$BINDIR/em-ensure-cache
17
+ else
18
+ PKG_ROOT=${EM_PACKAGE_ROOT:-$BINDIR}
19
+ ENSURE_CACHE=$BINDIR/em-ensure-cache
20
+ fi
21
+
22
+ export EM_PACKAGE_ROOT=${EM_PACKAGE_ROOT:-$PKG_ROOT}
9
23
  export EM_CONFIG=${EM_CONFIG:-$PKG_ROOT/emscripten-config}
10
24
 
11
25
  # Resolve companion packages when slicc.env did not set them.
@@ -15,12 +29,17 @@ export EM_CONFIG=${EM_CONFIG:-$PKG_ROOT/emscripten-config}
15
29
  export EM_CACHE_PACKAGE EM_LLVM_PACKAGE EM_BINARYEN_PACKAGE
16
30
 
17
31
  # Writable user CACHE + sysroot symlink into emscripten-cache.
18
- CACHE=$("$BINDIR/em-ensure-cache")
32
+ if [ ! -x "$ENSURE_CACHE" ]; then
33
+ echo "em-launcher: missing $ENSURE_CACHE" >&2
34
+ exit 1
35
+ fi
36
+ CACHE=$("$ENSURE_CACHE")
19
37
  export EM_CACHE=$CACHE
20
38
 
21
- # VFS pre-js for every link (September slicc patch).
22
- : "${SLICC_VFS_PRE_JS:=$PKG_ROOT/lib/slicc-vfs-pre.js}"
23
- export SLICC_VFS_PRE_JS
39
+ # libslicc objects for default executable links (link.py); not the node-realm VFS pre-js.
40
+ export SLICC_EM_LIBDIR=${SLICC_EM_LIBDIR:-$PKG_ROOT/lib/slicc}
41
+ # Do NOT default-export SLICC_VFS_PRE_JS — that pre-js reads process.env.SLICC_LIVE_FS
42
+ # (node-realm only) and breaks wasm-realm runnables. Opt in explicitly if needed.
24
43
 
25
44
  PY=${EMSDK_PYTHON:-}
26
45
  if [ -z "$PY" ]; then
@@ -36,7 +55,6 @@ fi
36
55
 
37
56
  SCRIPT=$PKG_ROOT/${TOOL}.py
38
57
  if [ ! -f "$SCRIPT" ]; then
39
- # emranlib → emranlib.py; emcmake → emcmake.py; etc.
40
58
  case $TOOL in
41
59
  em++) SCRIPT=$PKG_ROOT/em++.py ;;
42
60
  esac
package/bin/emconfigure CHANGED
@@ -1,11 +1,25 @@
1
1
  #!/bin/sh
2
2
  # Shared launcher for emcc/em++/emar/… — runs em*.py on wasix-python (-S).
3
+ # Self-sufficient when invoked by path (emcmake toolchain uses $PKG/emcc).
3
4
  set -eu
4
5
 
5
6
  TOOL=$(basename "$0")
6
7
  BINDIR=$(CDPATH= cd -- "$(dirname "$0")" && pwd)
7
- PKG_ROOT=${EM_PACKAGE_ROOT:-$(CDPATH= cd -- "$BINDIR/.." && pwd)}
8
- export EM_PACKAGE_ROOT=$PKG_ROOT
8
+
9
+ # $PKG/emcc (cmake / path_from_root) → package root is BINDIR.
10
+ # $PKG/bin/emcc (slicc.commands) → package root is parent.
11
+ if [ -f "$BINDIR/emcc.py" ]; then
12
+ PKG_ROOT=$BINDIR
13
+ ENSURE_CACHE=$BINDIR/bin/em-ensure-cache
14
+ elif [ -f "$BINDIR/../emcc.py" ]; then
15
+ PKG_ROOT=$(CDPATH= cd -- "$BINDIR/.." && pwd)
16
+ ENSURE_CACHE=$BINDIR/em-ensure-cache
17
+ else
18
+ PKG_ROOT=${EM_PACKAGE_ROOT:-$BINDIR}
19
+ ENSURE_CACHE=$BINDIR/em-ensure-cache
20
+ fi
21
+
22
+ export EM_PACKAGE_ROOT=${EM_PACKAGE_ROOT:-$PKG_ROOT}
9
23
  export EM_CONFIG=${EM_CONFIG:-$PKG_ROOT/emscripten-config}
10
24
 
11
25
  # Resolve companion packages when slicc.env did not set them.
@@ -15,12 +29,17 @@ export EM_CONFIG=${EM_CONFIG:-$PKG_ROOT/emscripten-config}
15
29
  export EM_CACHE_PACKAGE EM_LLVM_PACKAGE EM_BINARYEN_PACKAGE
16
30
 
17
31
  # Writable user CACHE + sysroot symlink into emscripten-cache.
18
- CACHE=$("$BINDIR/em-ensure-cache")
32
+ if [ ! -x "$ENSURE_CACHE" ]; then
33
+ echo "em-launcher: missing $ENSURE_CACHE" >&2
34
+ exit 1
35
+ fi
36
+ CACHE=$("$ENSURE_CACHE")
19
37
  export EM_CACHE=$CACHE
20
38
 
21
- # VFS pre-js for every link (September slicc patch).
22
- : "${SLICC_VFS_PRE_JS:=$PKG_ROOT/lib/slicc-vfs-pre.js}"
23
- export SLICC_VFS_PRE_JS
39
+ # libslicc objects for default executable links (link.py); not the node-realm VFS pre-js.
40
+ export SLICC_EM_LIBDIR=${SLICC_EM_LIBDIR:-$PKG_ROOT/lib/slicc}
41
+ # Do NOT default-export SLICC_VFS_PRE_JS — that pre-js reads process.env.SLICC_LIVE_FS
42
+ # (node-realm only) and breaks wasm-realm runnables. Opt in explicitly if needed.
24
43
 
25
44
  PY=${EMSDK_PYTHON:-}
26
45
  if [ -z "$PY" ]; then
@@ -36,7 +55,6 @@ fi
36
55
 
37
56
  SCRIPT=$PKG_ROOT/${TOOL}.py
38
57
  if [ ! -f "$SCRIPT" ]; then
39
- # emranlib → emranlib.py; emcmake → emcmake.py; etc.
40
58
  case $TOOL in
41
59
  em++) SCRIPT=$PKG_ROOT/em++.py ;;
42
60
  esac
package/bin/emmake CHANGED
@@ -1,11 +1,25 @@
1
1
  #!/bin/sh
2
2
  # Shared launcher for emcc/em++/emar/… — runs em*.py on wasix-python (-S).
3
+ # Self-sufficient when invoked by path (emcmake toolchain uses $PKG/emcc).
3
4
  set -eu
4
5
 
5
6
  TOOL=$(basename "$0")
6
7
  BINDIR=$(CDPATH= cd -- "$(dirname "$0")" && pwd)
7
- PKG_ROOT=${EM_PACKAGE_ROOT:-$(CDPATH= cd -- "$BINDIR/.." && pwd)}
8
- export EM_PACKAGE_ROOT=$PKG_ROOT
8
+
9
+ # $PKG/emcc (cmake / path_from_root) → package root is BINDIR.
10
+ # $PKG/bin/emcc (slicc.commands) → package root is parent.
11
+ if [ -f "$BINDIR/emcc.py" ]; then
12
+ PKG_ROOT=$BINDIR
13
+ ENSURE_CACHE=$BINDIR/bin/em-ensure-cache
14
+ elif [ -f "$BINDIR/../emcc.py" ]; then
15
+ PKG_ROOT=$(CDPATH= cd -- "$BINDIR/.." && pwd)
16
+ ENSURE_CACHE=$BINDIR/em-ensure-cache
17
+ else
18
+ PKG_ROOT=${EM_PACKAGE_ROOT:-$BINDIR}
19
+ ENSURE_CACHE=$BINDIR/em-ensure-cache
20
+ fi
21
+
22
+ export EM_PACKAGE_ROOT=${EM_PACKAGE_ROOT:-$PKG_ROOT}
9
23
  export EM_CONFIG=${EM_CONFIG:-$PKG_ROOT/emscripten-config}
10
24
 
11
25
  # Resolve companion packages when slicc.env did not set them.
@@ -15,12 +29,17 @@ export EM_CONFIG=${EM_CONFIG:-$PKG_ROOT/emscripten-config}
15
29
  export EM_CACHE_PACKAGE EM_LLVM_PACKAGE EM_BINARYEN_PACKAGE
16
30
 
17
31
  # Writable user CACHE + sysroot symlink into emscripten-cache.
18
- CACHE=$("$BINDIR/em-ensure-cache")
32
+ if [ ! -x "$ENSURE_CACHE" ]; then
33
+ echo "em-launcher: missing $ENSURE_CACHE" >&2
34
+ exit 1
35
+ fi
36
+ CACHE=$("$ENSURE_CACHE")
19
37
  export EM_CACHE=$CACHE
20
38
 
21
- # VFS pre-js for every link (September slicc patch).
22
- : "${SLICC_VFS_PRE_JS:=$PKG_ROOT/lib/slicc-vfs-pre.js}"
23
- export SLICC_VFS_PRE_JS
39
+ # libslicc objects for default executable links (link.py); not the node-realm VFS pre-js.
40
+ export SLICC_EM_LIBDIR=${SLICC_EM_LIBDIR:-$PKG_ROOT/lib/slicc}
41
+ # Do NOT default-export SLICC_VFS_PRE_JS — that pre-js reads process.env.SLICC_LIVE_FS
42
+ # (node-realm only) and breaks wasm-realm runnables. Opt in explicitly if needed.
24
43
 
25
44
  PY=${EMSDK_PYTHON:-}
26
45
  if [ -z "$PY" ]; then
@@ -36,7 +55,6 @@ fi
36
55
 
37
56
  SCRIPT=$PKG_ROOT/${TOOL}.py
38
57
  if [ ! -f "$SCRIPT" ]; then
39
- # emranlib → emranlib.py; emcmake → emcmake.py; etc.
40
58
  case $TOOL in
41
59
  em++) SCRIPT=$PKG_ROOT/em++.py ;;
42
60
  esac
package/bin/emranlib CHANGED
@@ -1,11 +1,25 @@
1
1
  #!/bin/sh
2
2
  # Shared launcher for emcc/em++/emar/… — runs em*.py on wasix-python (-S).
3
+ # Self-sufficient when invoked by path (emcmake toolchain uses $PKG/emcc).
3
4
  set -eu
4
5
 
5
6
  TOOL=$(basename "$0")
6
7
  BINDIR=$(CDPATH= cd -- "$(dirname "$0")" && pwd)
7
- PKG_ROOT=${EM_PACKAGE_ROOT:-$(CDPATH= cd -- "$BINDIR/.." && pwd)}
8
- export EM_PACKAGE_ROOT=$PKG_ROOT
8
+
9
+ # $PKG/emcc (cmake / path_from_root) → package root is BINDIR.
10
+ # $PKG/bin/emcc (slicc.commands) → package root is parent.
11
+ if [ -f "$BINDIR/emcc.py" ]; then
12
+ PKG_ROOT=$BINDIR
13
+ ENSURE_CACHE=$BINDIR/bin/em-ensure-cache
14
+ elif [ -f "$BINDIR/../emcc.py" ]; then
15
+ PKG_ROOT=$(CDPATH= cd -- "$BINDIR/.." && pwd)
16
+ ENSURE_CACHE=$BINDIR/em-ensure-cache
17
+ else
18
+ PKG_ROOT=${EM_PACKAGE_ROOT:-$BINDIR}
19
+ ENSURE_CACHE=$BINDIR/em-ensure-cache
20
+ fi
21
+
22
+ export EM_PACKAGE_ROOT=${EM_PACKAGE_ROOT:-$PKG_ROOT}
9
23
  export EM_CONFIG=${EM_CONFIG:-$PKG_ROOT/emscripten-config}
10
24
 
11
25
  # Resolve companion packages when slicc.env did not set them.
@@ -15,12 +29,17 @@ export EM_CONFIG=${EM_CONFIG:-$PKG_ROOT/emscripten-config}
15
29
  export EM_CACHE_PACKAGE EM_LLVM_PACKAGE EM_BINARYEN_PACKAGE
16
30
 
17
31
  # Writable user CACHE + sysroot symlink into emscripten-cache.
18
- CACHE=$("$BINDIR/em-ensure-cache")
32
+ if [ ! -x "$ENSURE_CACHE" ]; then
33
+ echo "em-launcher: missing $ENSURE_CACHE" >&2
34
+ exit 1
35
+ fi
36
+ CACHE=$("$ENSURE_CACHE")
19
37
  export EM_CACHE=$CACHE
20
38
 
21
- # VFS pre-js for every link (September slicc patch).
22
- : "${SLICC_VFS_PRE_JS:=$PKG_ROOT/lib/slicc-vfs-pre.js}"
23
- export SLICC_VFS_PRE_JS
39
+ # libslicc objects for default executable links (link.py); not the node-realm VFS pre-js.
40
+ export SLICC_EM_LIBDIR=${SLICC_EM_LIBDIR:-$PKG_ROOT/lib/slicc}
41
+ # Do NOT default-export SLICC_VFS_PRE_JS — that pre-js reads process.env.SLICC_LIVE_FS
42
+ # (node-realm only) and breaks wasm-realm runnables. Opt in explicitly if needed.
24
43
 
25
44
  PY=${EMSDK_PYTHON:-}
26
45
  if [ -z "$PY" ]; then
@@ -36,7 +55,6 @@ fi
36
55
 
37
56
  SCRIPT=$PKG_ROOT/${TOOL}.py
38
57
  if [ ! -f "$SCRIPT" ]; then
39
- # emranlib → emranlib.py; emcmake → emcmake.py; etc.
40
58
  case $TOOL in
41
59
  em++) SCRIPT=$PKG_ROOT/em++.py ;;
42
60
  esac
package/bin/emscan-deps CHANGED
@@ -1,11 +1,25 @@
1
1
  #!/bin/sh
2
2
  # Shared launcher for emcc/em++/emar/… — runs em*.py on wasix-python (-S).
3
+ # Self-sufficient when invoked by path (emcmake toolchain uses $PKG/emcc).
3
4
  set -eu
4
5
 
5
6
  TOOL=$(basename "$0")
6
7
  BINDIR=$(CDPATH= cd -- "$(dirname "$0")" && pwd)
7
- PKG_ROOT=${EM_PACKAGE_ROOT:-$(CDPATH= cd -- "$BINDIR/.." && pwd)}
8
- export EM_PACKAGE_ROOT=$PKG_ROOT
8
+
9
+ # $PKG/emcc (cmake / path_from_root) → package root is BINDIR.
10
+ # $PKG/bin/emcc (slicc.commands) → package root is parent.
11
+ if [ -f "$BINDIR/emcc.py" ]; then
12
+ PKG_ROOT=$BINDIR
13
+ ENSURE_CACHE=$BINDIR/bin/em-ensure-cache
14
+ elif [ -f "$BINDIR/../emcc.py" ]; then
15
+ PKG_ROOT=$(CDPATH= cd -- "$BINDIR/.." && pwd)
16
+ ENSURE_CACHE=$BINDIR/em-ensure-cache
17
+ else
18
+ PKG_ROOT=${EM_PACKAGE_ROOT:-$BINDIR}
19
+ ENSURE_CACHE=$BINDIR/em-ensure-cache
20
+ fi
21
+
22
+ export EM_PACKAGE_ROOT=${EM_PACKAGE_ROOT:-$PKG_ROOT}
9
23
  export EM_CONFIG=${EM_CONFIG:-$PKG_ROOT/emscripten-config}
10
24
 
11
25
  # Resolve companion packages when slicc.env did not set them.
@@ -15,12 +29,17 @@ export EM_CONFIG=${EM_CONFIG:-$PKG_ROOT/emscripten-config}
15
29
  export EM_CACHE_PACKAGE EM_LLVM_PACKAGE EM_BINARYEN_PACKAGE
16
30
 
17
31
  # Writable user CACHE + sysroot symlink into emscripten-cache.
18
- CACHE=$("$BINDIR/em-ensure-cache")
32
+ if [ ! -x "$ENSURE_CACHE" ]; then
33
+ echo "em-launcher: missing $ENSURE_CACHE" >&2
34
+ exit 1
35
+ fi
36
+ CACHE=$("$ENSURE_CACHE")
19
37
  export EM_CACHE=$CACHE
20
38
 
21
- # VFS pre-js for every link (September slicc patch).
22
- : "${SLICC_VFS_PRE_JS:=$PKG_ROOT/lib/slicc-vfs-pre.js}"
23
- export SLICC_VFS_PRE_JS
39
+ # libslicc objects for default executable links (link.py); not the node-realm VFS pre-js.
40
+ export SLICC_EM_LIBDIR=${SLICC_EM_LIBDIR:-$PKG_ROOT/lib/slicc}
41
+ # Do NOT default-export SLICC_VFS_PRE_JS — that pre-js reads process.env.SLICC_LIVE_FS
42
+ # (node-realm only) and breaks wasm-realm runnables. Opt in explicitly if needed.
24
43
 
25
44
  PY=${EMSDK_PYTHON:-}
26
45
  if [ -z "$PY" ]; then
@@ -36,7 +55,6 @@ fi
36
55
 
37
56
  SCRIPT=$PKG_ROOT/${TOOL}.py
38
57
  if [ ! -f "$SCRIPT" ]; then
39
- # emranlib → emranlib.py; emcmake → emcmake.py; etc.
40
58
  case $TOOL in
41
59
  em++) SCRIPT=$PKG_ROOT/em++.py ;;
42
60
  esac
package/emscripten-config CHANGED
@@ -29,8 +29,9 @@ FROZEN_CACHE = False
29
29
  # cannot reach Java.
30
30
  # CLOSURE_COMPILER = None
31
31
 
32
- # September slicc: every link gets the live-VFS pre-js when set.
33
- os.environ.setdefault('SLICC_VFS_PRE_JS', str(_pkg / 'lib' / 'slicc-vfs-pre.js'))
32
+ # Default links inject homescoop_em_cli_ldflags + lib/slicc/*.o (see link.py).
33
+ # Do not set SLICC_VFS_PRE_JS here — that pre-js is node-realm only.
34
+ os.environ.setdefault('SLICC_EM_LIBDIR', str(_pkg / 'lib' / 'slicc'))
34
35
 
35
36
  # Silence unused-import lint in some editors; keep roots discoverable.
36
37
  _HOMESCOOP_CACHE_PKG = str(_cache_pkg)
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-ecoverse/wasm-emscripten",
3
- "version": "6.0.9-5",
3
+ "version": "6.0.9-6",
4
4
  "description": "Emscripten 6.0.9 for slicc (emcc via wasix-python)",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -45,7 +45,9 @@
45
45
  "@ai-ecoverse/wasm-binaryen": "132.0.0-1",
46
46
  "@ai-ecoverse/emscripten-cache": "6.0.9-2",
47
47
  "esbuild-wasm": "0.28.2",
48
- "typescript": "6.0.3"
48
+ "typescript": "6.0.3",
49
+ "acorn": "^8.18.0",
50
+ "acorn-import-phases": "^1.0.4"
49
51
  },
50
52
  "slicc": {
51
53
  "abi": "emscripten",
@@ -55,7 +57,7 @@
55
57
  "EM_CACHE_PACKAGE": "/shared/lib/node_modules/@ai-ecoverse/emscripten-cache",
56
58
  "EM_LLVM_PACKAGE": "/shared/lib/node_modules/@ai-ecoverse/wasm-clang",
57
59
  "EM_BINARYEN_PACKAGE": "/shared/lib/node_modules/@ai-ecoverse/wasm-binaryen",
58
- "SLICC_VFS_PRE_JS": "${package}/lib/slicc-vfs-pre.js"
60
+ "SLICC_EM_LIBDIR": "${package}/lib/slicc"
59
61
  },
60
62
  "commands": {
61
63
  "emcc": {
package/tools/link.py CHANGED
@@ -848,23 +848,43 @@ def phase_linker_setup(linker_args): # ruff: ignore[complex-structure, too-many
848
848
  if not shared.SKIP_SUBPROCS:
849
849
  shared.check_llvm_version()
850
850
 
851
- # slicc: every program linked there may run there (configure tests, build
852
- # helpers like freetype's apinames, tools like pkgconf), in a node realm
853
- # whose fs has no file descriptors. The pre-js mounts slicc's live VFS into
854
- # the program's FS; it does nothing outside slicc.
851
+ # Optional node-realm VFS pre-js (explicit SLICC_VFS_PRE_JS only — do not
852
+ # default this; wasm-realm programs crash on process.env.SLICC_LIVE_FS).
855
853
  slicc_pre_js = os.environ.get('SLICC_VFS_PRE_JS')
856
854
  if slicc_pre_js and slicc_pre_js not in options.pre_js:
857
855
  options.pre_js.append(slicc_pre_js)
858
- # The pre-js holds main until the async VFS mount is done.
859
856
  settings.DEFAULT_LIBRARY_FUNCS_TO_INCLUDE += ['$addRunDependency', '$removeRunDependency']
860
857
 
858
+ # Default: homescoop_em_cli_ldflags + libslicc objects so linked programs run
859
+ # in the wasm realm. Opt out with SLICC_EMCC_PLAIN=1 (plain web glue).
860
+ # Skip for -c (never reaches here), -r, -shared / SIDE_MODULE.
861
+ plain = os.environ.get('SLICC_EMCC_PLAIN', '').lower() in ('1', 'true', 'yes')
862
+ if (not plain and not options.shared and not options.relocatable
863
+ and not settings.SIDE_MODULE):
864
+ default_setting('ENVIRONMENT', ['web', 'worker', 'node'])
865
+ default_setting('EXIT_RUNTIME', 1)
866
+ default_setting('ALLOW_MEMORY_GROWTH', 1)
867
+ slicc_lib = os.environ.get('SLICC_EM_LIBDIR') or utils.path_from_root('lib', 'slicc')
868
+ # cli profile (not main_envp — that renames main→slicc_tool_main for make).
869
+ # slicc_main_envp.o / slicc_fork.o are shipped under lib/slicc/ for opt-in.
870
+ for obj in (
871
+ 'slicc_spawn.o',
872
+ 'slicc_exec.o',
873
+ 'slicc_signals.o',
874
+ 'slicc_select.o',
875
+ 'slicc_libc_gaps.o',
876
+ 'slicc_jobs.o',
877
+ ):
878
+ path = os.path.join(slicc_lib, obj)
879
+ if os.path.isfile(path) and path not in linker_args:
880
+ linker_args.append(path)
881
+
861
882
  autoconf = os.environ.get('EMMAKEN_JUST_CONFIGURE') or 'conftest.c' in options.input_files or 'conftest.cpp' in options.input_files
862
883
  if autoconf:
863
884
  # configure tests want a more shell-like style, where we emit return codes on exit()
864
885
  settings.EXIT_RUNTIME = 1
865
- # use node.js raw filesystem access, to behave just like a native executable
866
- # (in slicc NODERAWFS cannot work; the pre-js above mounts the VFS instead)
867
- if not slicc_pre_js:
886
+ # Host/plain node: NODERAWFS. Wasm-realm CLI defaults use the normal FS.
887
+ if not slicc_pre_js and plain:
868
888
  settings.NODERAWFS = 1
869
889
  # Add `#!` line to output JS and make it executable.
870
890
  settings.EXECUTABLE = config.NODE_JS[0]
package/tools/utils.py CHANGED
@@ -67,7 +67,9 @@ def exec(cmd):
67
67
  else:
68
68
  sys.stdout.flush()
69
69
  sys.stderr.flush()
70
- os.execvp(cmd[0], cmd)
70
+ # wasix-python: execvp keeps the process's *initial* environ; execvpe with
71
+ # an explicit mapping passes updates from os.environ (emconfigure CC=…).
72
+ os.execvpe(cmd[0], cmd, os.environ)
71
73
 
72
74
 
73
75
  def exit_with_error(msg, *args):