Skip to content

Commit fbb760c

Browse files
committed
[build] fix EMSDK environment variables when using vcpkg
1 parent 9ae15d2 commit fbb760c

File tree

1 file changed

+36
-2
lines changed

1 file changed

+36
-2
lines changed

tools/ci_build/build.py

+36-2
Original file line numberDiff line numberDiff line change
@@ -1231,8 +1231,42 @@ def generate_build_tree(
12311231
vcpkg_keep_env_vars = ["TRT_UPLOAD_AUTH_TOKEN"]
12321232

12331233
if args.build_wasm:
1234-
env["EMSDK"] = emsdk_dir
1235-
vcpkg_keep_env_vars += ["EMSDK", "EMSDK_NODE", "EMSDK_PYTHON"]
1234+
emsdk_vars = ["EMSDK", "EMSDK_NODE", "EMSDK_PYTHON"]
1235+
1236+
# If environment variables 'EMSDK' is not set, run emsdk_env to set them
1237+
if "EMSDK" not in os.environ:
1238+
if is_windows():
1239+
# Run `cmd /s /c call .\\emsdk_env && set` to run emsdk_env and dump the environment variables
1240+
emsdk_env = run_subprocess(
1241+
["cmd", "/s", "/c", "call .\\emsdk_env && set"],
1242+
cwd=emsdk_dir,
1243+
capture_stdout=True,
1244+
)
1245+
else:
1246+
# Run `sh -c ". ./emsdk_env.sh && printenv"` to run emsdk_env and dump the environment variables
1247+
emsdk_env = run_subprocess(
1248+
["sh", "-c", ". ./emsdk_env.sh && printenv"],
1249+
cwd=emsdk_dir,
1250+
capture_stdout=True,
1251+
)
1252+
1253+
# check for EMSDK environment variables and set them in the environment
1254+
for line in emsdk_env.stdout.decode().splitlines():
1255+
if "=" in line:
1256+
key, value = line.rstrip().split("=", 1)
1257+
if key in emsdk_vars:
1258+
os.environ[key] = value
1259+
1260+
for var in emsdk_vars:
1261+
if var in os.environ:
1262+
env[var] = os.environ[var]
1263+
elif var == "EMSDK":
1264+
# EMSDK must be set, but EMSDK_NODE and EMSDK_PYTHON are optional
1265+
raise BuildError(
1266+
"EMSDK environment variable is not set correctly. Please run `emsdk_env` to set them."
1267+
)
1268+
1269+
vcpkg_keep_env_vars += emsdk_vars
12361270

12371271
#
12381272
# Workaround for vcpkg failed to find the correct path of Python

0 commit comments

Comments
 (0)