|  | 
| 20 | 20 |     <EmSdkDirForHelixPayload>$([MSBuild]::NormalizeDirectory('$(RepoRoot)', 'src', 'mono', 'wasm', 'emsdk'))</EmSdkDirForHelixPayload> | 
| 21 | 21 | 
 | 
| 22 | 22 |     <NeedsWorkload Condition="'$(Scenario)' == 'BuildWasmApps'">true</NeedsWorkload> | 
| 23 |  | -    <NeedsEMSDK Condition="'$(NeedsToBuildWasmAppsOnHelix)' == 'true' or ('$(Scenario)' == 'BuildWasmApps' and '$(TestUsingWorkloads)' != 'true')">true</NeedsEMSDK> | 
|  | 23 | +    <NeedsEMSDK Condition="'$(NeedsToBuildWasmAppsOnHelix)' == 'true' or '$(Scenario)' == 'BuildWasmApps'">true</NeedsEMSDK> | 
| 24 | 24 |     <NeedsEMSDKNode Condition="'$(Scenario)' == 'WasmTestOnNodeJs' or '$(Scenario)' == 'BuildWasmApps'">true</NeedsEMSDKNode> | 
| 25 | 25 |     <NeedsToRunOnBrowser Condition="'$(Scenario)' == 'WasmTestOnBrowser' or '$(Scenario)' == 'BuildWasmApps'">true</NeedsToRunOnBrowser> | 
| 26 | 26 |     <NeedsToRunOnBrowser Condition="'$(NeedsToRunOnBrowser)' == '' and '$(IsWasmDebuggerTests)' == 'true'">true</NeedsToRunOnBrowser> | 
| 27 | 27 | 
 | 
| 28 | 28 |     <IncludeXHarnessCli>true</IncludeXHarnessCli> | 
| 29 | 29 |     <EnableXHarnessTelemetry>true</EnableXHarnessTelemetry> | 
|  | 30 | +    <IncludeNodePayload Condition="'$(NeedsEMSDKNode)' == 'true' and '$(NeedsEMSDK)' != 'true'">true</IncludeNodePayload> | 
|  | 31 | +  </PropertyGroup> | 
|  | 32 | + | 
|  | 33 | +  <PropertyGroup> | 
|  | 34 | +    <_HelixLocalNodePath Condition="'$(NeedsEMSDKNode)' == 'true' and '$(WindowsShell)' != 'true'">$HELIX_CORRELATION_PAYLOAD/build/emsdk-node</_HelixLocalNodePath> | 
|  | 35 | +    <_HelixLocalNodePath Condition="'$(NeedsEMSDKNode)' == 'true' and '$(WindowsShell)' == 'true'">%HELIX_CORRELATION_PAYLOAD%\build\emsdk-node</_HelixLocalNodePath> | 
|  | 36 | + | 
|  | 37 | +    <_HelixLocalNodePath Condition="'$(NeedsEMSDK)' == 'true' and '$(WindowsShell)' != 'true'">$HELIX_CORRELATION_PAYLOAD/build/emsdk/node</_HelixLocalNodePath> | 
|  | 38 | +    <_HelixLocalNodePath Condition="'$(NeedsEMSDK)' == 'true' and '$(WindowsShell)' == 'true'">%HELIX_CORRELATION_PAYLOAD%\build\emsdk\node</_HelixLocalNodePath> | 
| 30 | 39 |   </PropertyGroup> | 
| 31 | 40 | 
 | 
| 32 | 41 |   <ItemGroup Condition="'$(WindowsShell)' != 'true'"> | 
|  | 
| 40 | 49 | 
 | 
| 41 | 50 |     <HelixPreCommand Condition="'$(NeedsToRunOnBrowser)' == 'true'" Include="export PATH=$HELIX_CORRELATION_PAYLOAD/$(ChromeDriverDirName):$PATH" /> | 
| 42 | 51 |     <HelixPreCommand Condition="'$(NeedsToRunOnBrowser)' == 'true'" Include="export PATH=$HELIX_CORRELATION_PAYLOAD/$(ChromiumDirName):$PATH" /> | 
| 43 |  | - | 
| 44 |  | -    <!-- Fix symbolic links that are broken already on build machine and also in the correlation payload --> | 
| 45 |  | -    <HelixPreCommand Condition="'$(NeedsEMSDKNode)' == 'true'" Include="export HELIX_NODEJS_VERSION=%24(ls $HELIX_CORRELATION_PAYLOAD/build/emsdk/node)" /> | 
| 46 |  | -    <HelixPreCommand Condition="'$(NeedsEMSDKNode)' == 'true'" Include="export HELIX_NODEJS_PATH=$HELIX_CORRELATION_PAYLOAD/build/emsdk/node/$HELIX_NODEJS_VERSION" /> | 
| 47 |  | -    <HelixPreCommand Condition="'$(NeedsEMSDKNode)' == 'true'" Include="export PATH=$HELIX_NODEJS_PATH/bin:$PATH" /> | 
| 48 |  | -    <HelixPreCommand Condition="'$(NeedsEMSDKNode)' == 'true'" Include="rm $HELIX_NODEJS_PATH/bin/npm" /> | 
| 49 |  | -    <HelixPreCommand Condition="'$(NeedsEMSDKNode)' == 'true'" Include="rm $HELIX_NODEJS_PATH/bin/npx" /> | 
| 50 |  | -    <HelixPreCommand Condition="'$(NeedsEMSDKNode)' == 'true'" Include="ln -s ../lib/node_modules/npm/bin/npm-cli.js $HELIX_NODEJS_PATH/bin/npm" /> | 
| 51 |  | -    <HelixPreCommand Condition="'$(NeedsEMSDKNode)' == 'true'" Include="ln -s ../lib/node_modules/npm/bin/npx-cli.js $HELIX_NODEJS_PATH/bin/npx" /> | 
| 52 | 52 |   </ItemGroup> | 
| 53 | 53 | 
 | 
| 54 | 54 |   <ItemGroup Condition="'$(WindowsShell)' == 'true'"> | 
|  | 
| 62 | 62 | 
 | 
| 63 | 63 |     <HelixPreCommand Condition="'$(NeedsToRunOnBrowser)' == 'true'" Include="set PATH=%HELIX_CORRELATION_PAYLOAD%\$(ChromeDriverDirName)%3B%PATH%" /> | 
| 64 | 64 |     <HelixPreCommand Condition="'$(NeedsToRunOnBrowser)' == 'true'" Include="set PATH=%HELIX_CORRELATION_PAYLOAD%\$(ChromiumDirName)%3B%PATH%" /> | 
|  | 65 | +  </ItemGroup> | 
|  | 66 | + | 
|  | 67 | +  <ItemGroup Condition="'$(NeedsEMSDKNode)' == 'true' and '$(WindowsShell)' != 'true'"> | 
|  | 68 | +    <!-- Fix symbolic links that are broken already on build machine and also in the correlation payload --> | 
|  | 69 | +    <HelixPreCommand Include="export _HELIX_NODEJS_VERSION=%24(ls $(_HelixLocalNodePath))" /> | 
|  | 70 | +    <HelixPreCommand Include="export _HELIX_NODEJS_PATH=$(_HelixLocalNodePath)/$_HELIX_NODEJS_VERSION" /> | 
|  | 71 | +    <HelixPreCommand Include="export PATH=$_HELIX_NODEJS_PATH/bin:$PATH" /> | 
|  | 72 | +    <HelixPreCommand Include="rm $_HELIX_NODEJS_PATH/bin/npm" /> | 
|  | 73 | +    <HelixPreCommand Include="rm $_HELIX_NODEJS_PATH/bin/npx" /> | 
|  | 74 | +    <HelixPreCommand Include="ln -s ../lib/node_modules/npm/bin/npm-cli.js $_HELIX_NODEJS_PATH/bin/npm" /> | 
|  | 75 | +    <HelixPreCommand Include="ln -s ../lib/node_modules/npm/bin/npx-cli.js $_HELIX_NODEJS_PATH/bin/npx" /> | 
|  | 76 | +  </ItemGroup> | 
| 65 | 77 | 
 | 
| 66 |  | -    <HelixPreCommand Condition="'$(NeedsEMSDKNode)' == 'true'" Include="for /f %%i in ('dir %HELIX_CORRELATION_PAYLOAD%\build\emsdk\node /b') do set HELIX_NODEJS_VERSION=%%i" /> | 
| 67 |  | -    <HelixPreCommand Condition="'$(NeedsEMSDKNode)' == 'true'" Include="set PATH=%HELIX_CORRELATION_PAYLOAD%\build\emsdk\node\%HELIX_NODEJS_VERSION%\bin%3B%PATH%" /> | 
|  | 78 | +  <ItemGroup Condition="'$(NeedsEMSDKNode)' == 'true' and '$(WindowsShell)' == 'true'"> | 
|  | 79 | +    <HelixPreCommand Include="for /f %%i in ('dir $(_HelixLocalNodePath) /b') do set _HELIX_NODEJS_VERSION=%%i" /> | 
|  | 80 | +    <HelixPreCommand Include="set PATH=$(_HelixLocalNodePath)/%_HELIX_NODEJS_VERSION%/bin%3B%PATH%" /> | 
| 68 | 81 |   </ItemGroup> | 
| 69 | 82 | 
 | 
| 70 | 83 |   <PropertyGroup> | 
|  | 84 | + | 
| 71 | 85 |     <!-- | 
| 72 | 86 |       We are hosting the payloads for the WASM/browser on kestrel in the xharness process. | 
| 73 | 87 |       We also run some network tests to this server and so, we are running it on both HTTP and HTTPS. | 
|  | 
| 123 | 137 |       <HelixCorrelationPayload Include="$(MonoTargetsTasksDir)"                  Destination="build/MonoTargetsTasks" /> | 
| 124 | 138 |     </ItemGroup> | 
| 125 | 139 | 
 | 
| 126 |  | -    <ItemGroup Condition="'$(NeedsEMSDKNode)' == 'true'"> | 
| 127 |  | -      <HelixCorrelationPayload Include="$(EmSdkDirForHelixPayload)node"          Destination="build/emsdk/node" /> | 
|  | 140 | +    <!-- copy node separately only if EMSDK is not being included --> | 
|  | 141 | +    <ItemGroup Condition="'$(IncludeNodePayload)' == 'true'"> | 
|  | 142 | +      <HelixCorrelationPayload Include="$(EmSdkDirForHelixPayload)node"          Destination="build/emsdk-node" /> | 
| 128 | 143 |     </ItemGroup> | 
| 129 | 144 | 
 | 
| 130 | 145 |     <ItemGroup Condition="'$(Scenario)' == '' or '$(Scenario)' == 'normal' or '$(Scenario)' == 'WasmTestOnBrowser' or '$(Scenario)' == 'WasmTestOnNodeJS'"> | 
|  | 
| 154 | 169 |     </PropertyGroup> | 
| 155 | 170 | 
 | 
| 156 | 171 |     <Message Condition="'$(NeedsEMSDK)' == 'true' or '$(NeedsEMSDKNode)' == 'true'" Importance="High" Text="Using emsdk: $(EmSdkDirForHelixPayload)" /> | 
| 157 |  | -     | 
|  | 172 | + | 
| 158 | 173 |     <ItemGroup Condition="'$(IsRunningLibraryTests)' == 'true'"> | 
| 159 | 174 |       <_WasmWorkItem Include="$(TestArchiveRoot)browseronly/**/*.zip"                          Condition="'$(Scenario)' == 'WasmTestOnBrowser'" /> | 
| 160 | 175 |       <_WasmWorkItem Include="$(TestArchiveRoot)browserornodejs/**/*.zip"                      Condition="'$(Scenario)' == 'WasmTestOnBrowser'" /> | 
|  | 
| 208 | 223 |   <!-- CI has emscripten provisioned in $(EMSDK_PATH) as `/usr/local/emscripten`. Because helix tasks will | 
| 209 | 224 |        attempt to write a .payload file, we cannot use $(EMSDK_PATH) to package emsdk as a helix correlation | 
| 210 | 225 |        payload. Instead, we copy over the files to a new directory `src/mono/wasm/emsdk` and use that. --> | 
| 211 |  | -  <Target Name="StageEmSdkForHelix" Condition="('$(NeedsEMSDK)' == 'true' or '$(NeedsEMSDKNode)' == 'true') and !Exists($(EmSdkDirForHelixPayload))"> | 
|  | 226 | +  <Target Name="StageEmSdkForHelix" Condition="('$(NeedsEMSDK)' == 'true' or '$(IncludeNodePayload)' == 'true') and !Exists($(EmSdkDirForHelixPayload))"> | 
| 212 | 227 |     <Error Condition="'$(EMSDK_PATH)' == '' or !Exists($(EMSDK_PATH))" | 
| 213 | 228 |            Text="Could not find emscripten sdk in EMSDK_PATH=$(EMSDK_PATH), needed to provision for running tests on helix" /> | 
| 214 | 229 | 
 | 
|  | 
0 commit comments