From ef39fb949e25ffd0bb1377f4722bb3f11324fbb3 Mon Sep 17 00:00:00 2001 From: Stephan Bergmann Date: Fri, 22 Aug 2025 07:33:48 +0200 Subject: [PATCH] Avoid JS ||= in Emscripten ...as at least the baseline (see static/README.wasm.md) emsdk 3.1.46 apparently uses some acorn-optimizer.js that cannot parse that and causes builds to fail with > /home/tdf/lode/emsdk/upstream/emscripten/tools/acorn-optimizer.js:1992 > throw err; > ^ > > SyntaxError: Unexpected token (1492:56) > function runUnoScriptUrls(handle) { globalThis.Module ||= Module; importScripts.apply(self, Emval.toValue(handle)); } > ^ > > at pp$4.raise (/home/tdf/lode/emsdk/upstream/emscripten/node_modules/acorn/dist/acorn.js:3553:15) > at pp$9.unexpected (/home/tdf/lode/emsdk/upstream/emscripten/node_modules/acorn/dist/acorn.js:764:10) > at pp$5.parseExprAtomDefault (/home/tdf/lode/emsdk/upstream/emscripten/node_modules/acorn/dist/acorn.js:2924:10) > at pp$5.parseExprAtom (/home/tdf/lode/emsdk/upstream/emscripten/node_modules/acorn/dist/acorn.js:2919:19) > at pp$5.parseExprSubscripts (/home/tdf/lode/emsdk/upstream/emscripten/node_modules/acorn/dist/acorn.js:2703:21) > at pp$5.parseMaybeUnary (/home/tdf/lode/emsdk/upstream/emscripten/node_modules/acorn/dist/acorn.js:2669:19) > at pp$5.parseExprOp (/home/tdf/lode/emsdk/upstream/emscripten/node_modules/acorn/dist/acorn.js:2621:43) > at pp$5.parseExprOps (/home/tdf/lode/emsdk/upstream/emscripten/node_modules/acorn/dist/acorn.js:2598:93) > at pp$5.parseMaybeConditional (/home/tdf/lode/emsdk/upstream/emscripten/node_modules/acorn/dist/acorn.js:2579:21) > at pp$5.parseMaybeAssign (/home/tdf/lode/emsdk/upstream/emscripten/node_modules/acorn/dist/acorn.js:2546:21) { > pos: 63545, > loc: Position { line: 1492, column: 56 }, > raisedAt: 63546 > } > > Node.js v18.20.3 > em++: error: '/home/tdf/lode/emsdk/node/18.20.3_64bit/bin/node /home/tdf/lode/emsdk/upstream/emscripten/tools/acorn-optimizer.js /tmp/emscripten_temp_duktdfj5/soffice.js JSDCE minifyWhitespace -o /tmp/emscripten_temp_duktdfj5/soffice.jso1.js' failed (returned 1) > make[1]: *** [/home/tdf/lode/jenkins/workspace/lo_gerrit/tb/src_wasm/desktop/Executable_soffice_bin.mk:10: /home/tdf/lode/jenkins/workspace/lo_gerrit/tb/build_master/instdir/program/soffice.js] Error 1 () Change-Id: Ib6155b6f518af056b3d23ec648d0558a5f3ab6c9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/190044 Tested-by: Jenkins Reviewed-by: Stephan Bergmann --- desktop/source/app/initjsunoscripting.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/desktop/source/app/initjsunoscripting.cxx b/desktop/source/app/initjsunoscripting.cxx index 4e704c9b4b10..a6939f838e8c 100644 --- a/desktop/source/app/initjsunoscripting.cxx +++ b/desktop/source/app/initjsunoscripting.cxx @@ -45,7 +45,7 @@ extern "C" void getUnoScriptUrls(std::vector * urls) { #if HAVE_EMSCRIPTEN_PROXY_TO_PTHREAD EM_JS(void, runUnoScriptUrls, (emscripten::EM_VAL handle), { - globalThis.Module ||= Module; + globalThis.Module = globalThis.Module || Module; importScripts.apply(self, Emval.toValue(handle)); }); #else