From a0af5d7f952e6fbe5ffac1e05805bf07f450fabb Mon Sep 17 00:00:00 2001 From: juj Date: Sat, 25 Oct 2025 00:22:31 +0300 Subject: [PATCH] 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. --- emsdk.bat | 7 +++++++ emsdk.ps1 | 10 +++++++--- test/test.py | 2 ++ 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/emsdk.bat b/emsdk.bat index 6f5b33a..9019b90 100644 --- a/emsdk.bat +++ b/emsdk.bat @@ -35,6 +35,13 @@ set EMSDK_PY=python :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 @@ $env:EMSDK_POWERSHELL = 1 & $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 @@ int main() { 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'])