[wasi] Fix support for paths with spaces (#85022)
authorAnkit Jain <radical@gmail.com>
Thu, 27 Apr 2023 20:07:31 +0000 (16:07 -0400)
committerGitHub <noreply@github.com>
Thu, 27 Apr 2023 20:07:31 +0000 (16:07 -0400)
* [wasi] Fix disabling wasi build for projects

* [wasi] Fix quoting in Wasi targets

* [wasi] WBT: don't run wasi targets for the tests project

src/mono/wasi/Wasi.Build.Tests/Wasi.Build.Tests.csproj
src/mono/wasi/build/WasiApp.Native.targets
src/mono/wasi/build/WasiApp.props
src/mono/wasi/build/WasiApp.targets

index dde5b3a..eda5dcb 100644 (file)
@@ -17,7 +17,7 @@
     <InstallWorkloadForTesting>true</InstallWorkloadForTesting>
 
     <!-- don't run any wasm build steps -->
-    <IsBrowserWasmProject>false</IsBrowserWasmProject>
+    <IsWasiProject>false</IsWasiProject>
     <UseDefaultTestHost>true</UseDefaultTestHost>
 
     <EnableRunSettingsSupport>false</EnableRunSettingsSupport>
index 98b10bb..75016fe 100644 (file)
@@ -94,7 +94,7 @@
     </PropertyGroup>
   </Target>
 
-  <Target Name="_WasiBuildNativeCore" DependsOnTargets="$(_WasiBuildNativeCoreDependsOn)" Condition="'$(WasmBuildNative)' == 'true'" />
+  <Target Name="_WasiBuildNativeCore" BeforeTargets="_WasiGenerateAppBundle" DependsOnTargets="$(_WasiBuildNativeCoreDependsOn)" Condition="'$(WasmBuildNative)' == 'true'" />
 
   <Target Name="_PrepareForWasiBuildNative">
     <Error Condition="'$(_IsToolchainMissing)' == 'true'"
       <_WasiFilePathForFixup Include="@(_WasmNativeFileForLinking)" />
       <_WasiFilePathForFixup Include="@(_WasmRuntimePackSrcFile)" />
 
-      <_WasiSdkClangArgs Condition="'$(OS)' == 'Windows_NT'" Include="$([System.String]::new(%(_WasiFilePathForFixup.Identity)).Replace('\', '/'))" />
-      <_WasiSdkClangArgs Condition="'$(OS)' != 'Windows_NT'" Include="@(_WasiFilePathForFixup)" />
+      <_WasiSdkClangArgs Condition="'$(OS)' == 'Windows_NT'" Include="&quot;$([System.String]::new(%(_WasiFilePathForFixup.Identity)).Replace('\', '/'))&quot;" />
+      <_WasiSdkClangArgs Condition="'$(OS)' != 'Windows_NT'" Include="@(_WasiFilePathForFixup -> '&quot;%(Identity)&quot;')" />
 
       <_WasiSdkClangArgs Include="@(_WasmCommonCFlags)" />
 
 
     <WriteLinesToFile Lines="@(_WasiSdkClangArgs)" File="$(_WasmIntermediateOutputPath)clang-compile.rsp" Overwrite="true" />
     <!--<Message Importance="High" Text="Performing WASI SDK build: &quot;$(WasiClang)&quot; @(_WasiSdkClangArgs, ' ')" />-->
-    <Message Importance="High" Text="Performing WASI SDK build: &quot;$(WasiClang)&quot; @$(_WasmIntermediateOutputPath)clang-compile.rsp" />
+    <Message Importance="High" Text="Performing WASI SDK build: &quot;$(WasiClang)&quot; &quot;@$(_WasmIntermediateOutputPath)clang-compile.rsp&quot;" />
     <!--<Exec Command="&quot;$(WasiClang)&quot; @(_WasiSdkClangArgs, ' ')" />-->
-    <Exec Command="&quot;$(WasiClang)&quot; @$(_WasmIntermediateOutputPath)clang-compile.rsp" />
+    <Exec Command="&quot;$(WasiClang)&quot; &quot;@$(_WasmIntermediateOutputPath)clang-compile.rsp&quot;" />
 
     <!-- FIXME: this will be done by the bundler -->
     <Copy SourceFiles="$(_WasmOutputFileName)" DestinationFolder="$(WasmAppDir)" />
index 9a063a4..727196d 100644 (file)
@@ -7,13 +7,11 @@
     <RuntimeIdentifier>wasi-wasm</RuntimeIdentifier>
     <UseMonoRuntime>true</UseMonoRuntime>
     <TrimMode Condition="'$(TrimMode)' == ''">partial</TrimMode>
-    <WasmBuildNativeTarget>_WasiBuildNativeCore</WasmBuildNativeTarget>
 
     <_WasmBuildCoreDependsOn>
         _InitializeCommonProperties;
         _PrepareForAfterBuild;
         _BeforeWasmBuildApp;
-        $(WasmBuildNativeTarget);
         _WasiGenerateAppBundle;
     </_WasmBuildCoreDependsOn>
     <WasmBuildAppDependsOn>
index 4f2ab83..190f89f 100644 (file)
 
   <Target Name="WasmTriggerPublishApp"
           AfterTargets="$(WasmTriggerPublishAppAfterThisTarget)"
-          Condition="'$(IsWasmProject)' == 'true' and '$(WasmBuildingForNestedPublish)' != 'true' and '$(IsCrossTargetingBuild)' != 'true'">
+          Condition="'$(IsWasiProject)' == 'true' and '$(WasmBuildingForNestedPublish)' != 'true' and '$(IsCrossTargetingBuild)' != 'true'">
 
     <!-- Use a unique property, so the already run wasm targets can also run -->
     <MSBuild Projects="$(MSBuildProjectFile)"
   <Target Name="WasmBuildApp"
           AfterTargets="$(WasmBuildAppAfterThisTarget)"
           DependsOnTargets="$(WasmBuildAppDependsOn)"
-          Condition="'$(IsWasmProject)' == 'true' and '$(WasmBuildingForNestedPublish)' == '' and '$(WasmBuildOnlyAfterPublish)' != 'true' and '$(IsCrossTargetingBuild)' != 'true'" />
+          Condition="'$(IsWasiProject)' == 'true' and '$(WasmBuildingForNestedPublish)' == '' and '$(WasmBuildOnlyAfterPublish)' != 'true' and '$(IsCrossTargetingBuild)' != 'true'" />
 
   <Target Name="_InitializeCommonProperties">
     <Error Condition="'$(MicrosoftNetCoreAppRuntimePackDir)' == '' and ('%(ResolvedRuntimePack.PackageDirectory)' == '' or !Exists(%(ResolvedRuntimePack.PackageDirectory)))"
       <FileWrites Include="$(WasmRunWasmtimeScriptPath)" />
     </ItemGroup>
 
-    <Exec Condition="'$(OS)' != 'Windows_NT'" Command="chmod a+x $(WasmRunWasmtimeScriptPath)" />
+    <Exec Condition="'$(OS)' != 'Windows_NT'" Command="chmod a+x &quot;$(WasmRunWasmtimeScriptPath)&quot;" />
   </Target>
 
   <Target Name="_WasmResolveReferences" Condition="'$(WasmResolveAssembliesBeforeBuild)' == 'true'">