Fix windows emsdk returncode (#1623)
When `emsdk install foo` would fail on Windows, the return code would
get ignored since there were later commands in the script file.
To fix that, capture the error code from the emsdk call, and output that
as the final return code.
Also a drive-by Python path fix, which seemed to be out of date in the
.ps1 file.
diff --git a/emsdk.bat b/emsdk.bat
index 6f5b33a..9019b90 100644
--- a/emsdk.bat
+++ b/emsdk.bat
@@ -35,6 +35,13 @@
:end
call %EMSDK_PY% "%~dp0\emsdk.py" %*
+:: If emsdk returned with error code >= 1, then skip executing emsdk_set_env
+:: below.
+if ERRORLEVEL 1 (
+ endlocal
+ exit /b %ERRORLEVEL%
+)
+
endlocal
:: python is not able to set environment variables to the parent calling
diff --git a/emsdk.ps1 b/emsdk.ps1
index 81b798a..111047f 100644
--- a/emsdk.ps1
+++ b/emsdk.ps1
@@ -1,8 +1,8 @@
$ScriptDirectory = Split-Path -parent $PSCommandPath
$PythonLocations = $(
- "python\3.13.3-0_64bit\python.exe",
- "python\3.9.2-1_64bit\python.exe",
+ "python\3.13.3_64bit\python.exe",
+ "python\3.9.2_64bit\python.exe",
"python\3.9.2-nuget_64bit\python.exe"
)
@@ -25,12 +25,16 @@
& $EMSDK_PY "$ScriptDirectory/emsdk.py" $args
+$ExitCode = $LASTEXITCODE
+
# python is not able to set environment variables to the parent calling process, so
# therefore have it craft a .ps1 file, which we invoke after finishing python execution,
# to set up the environment variables
-if (Test-Path $ScriptDirectory/emsdk_set_env.ps1) {
+if ($ExitCode -eq 0 -and (Test-Path $ScriptDirectory/emsdk_set_env.ps1)) {
& $ScriptDirectory/emsdk_set_env.ps1
Remove-Item $ScriptDirectory/emsdk_set_env.ps1
}
Remove-Item Env:\EMSDK_POWERSHELL
+
+exit $ExitCode
diff --git a/test/test.py b/test/test.py
index e835ebf..bd3c3ca 100755
--- a/test/test.py
+++ b/test/test.py
@@ -220,6 +220,8 @@
def test_binaryen_from_source(self):
if MACOS:
self.skipTest("https://github.com/WebAssembly/binaryen/issues/4299")
+ if WINDOWS:
+ self.skipTest("https://github.com/emscripten-core/emsdk/issues/1624")
print('test binaryen source build')
run_emsdk(['install', '--build=Release', '--generator=Unix Makefiles', 'binaryen-main-64bit'])