@@ -62,6 +62,28 @@ def validate_emsdk_version(emsdk_cache):
6262 print (f"✅ Emscripten version { required_version } found in { emsdk_cache } " )
6363
6464
65+ def parse_env (text ):
66+ result = {}
67+ for line in text .splitlines ():
68+ key , val = line .split ("=" , 1 )
69+ result [key ] = val
70+ return result
71+
72+
73+ @functools .cache
74+ def get_emsdk_env (emsdk_cache ):
75+ env_text = subprocess .check_output (
76+ [
77+ "bash" ,
78+ "-c" ,
79+ f"EMSDK_QUIET=1 source { get_emsdk_activate_path (emsdk_cache )} && env" ,
80+ ],
81+ text = True ,
82+ )
83+ env = parse_env (env_text )
84+ return {key : env [key ] for key in ["PATH" , "EMSDK" , "EMSDK_NODE" ]}
85+
86+
6587def updated_env (updates , emsdk_cache ):
6688 """Create a new dict representing the environment to use.
6789
@@ -80,15 +102,7 @@ def updated_env(updates, emsdk_cache):
80102 # This layering lets SOURCE_DATE_EPOCH from os.environ takes precedence.
81103 environment = env_defaults | os .environ | updates
82104 if emsdk_cache :
83- env = os .environ .copy ()
84- call (
85- ["bash" , "-c" , f"source { get_emsdk_activate_path (emsdk_cache )} " ],
86- env = env ,
87- quiet = False ,
88- )
89- for key in ["PATH" , "EMSDK" , "EMSDK_NODE" ]:
90- environment [key ] = env [key ]
91-
105+ environment |= get_emsdk_env (emsdk_cache )
92106 env_diff = {}
93107 for key , value in environment .items ():
94108 if os .environ .get (key ) != value :
0 commit comments