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.
This commit is contained in:
juj
2025-10-25 00:22:31 +03:00
committed by GitHub
parent eb5eb4b3b2
commit a0af5d7f95
3 changed files with 16 additions and 3 deletions

View File

@@ -35,6 +35,13 @@ set EMSDK_PY=python
:end :end
call %EMSDK_PY% "%~dp0\emsdk.py" %* 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 endlocal
:: python is not able to set environment variables to the parent calling :: python is not able to set environment variables to the parent calling

View File

@@ -1,8 +1,8 @@
$ScriptDirectory = Split-Path -parent $PSCommandPath $ScriptDirectory = Split-Path -parent $PSCommandPath
$PythonLocations = $( $PythonLocations = $(
"python\3.13.3-0_64bit\python.exe", "python\3.13.3_64bit\python.exe",
"python\3.9.2-1_64bit\python.exe", "python\3.9.2_64bit\python.exe",
"python\3.9.2-nuget_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 & $EMSDK_PY "$ScriptDirectory/emsdk.py" $args
$ExitCode = $LASTEXITCODE
# python is not able to set environment variables to the parent calling process, so # 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, # therefore have it craft a .ps1 file, which we invoke after finishing python execution,
# to set up the environment variables # 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 & $ScriptDirectory/emsdk_set_env.ps1
Remove-Item $ScriptDirectory/emsdk_set_env.ps1 Remove-Item $ScriptDirectory/emsdk_set_env.ps1
} }
Remove-Item Env:\EMSDK_POWERSHELL Remove-Item Env:\EMSDK_POWERSHELL
exit $ExitCode

View File

@@ -220,6 +220,8 @@ int main() {
def test_binaryen_from_source(self): def test_binaryen_from_source(self):
if MACOS: if MACOS:
self.skipTest("https://github.com/WebAssembly/binaryen/issues/4299") 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') print('test binaryen source build')
run_emsdk(['install', '--build=Release', '--generator=Unix Makefiles', 'binaryen-main-64bit']) run_emsdk(['install', '--build=Release', '--generator=Unix Makefiles', 'binaryen-main-64bit'])