Fix MonoCrossAOT.UnixFilePermissions for wasm (#54693)
authorSteve Pfister <steveisok@users.noreply.github.com>
Thu, 24 Jun 2021 23:19:11 +0000 (19:19 -0400)
committerGitHub <noreply@github.com>
Thu, 24 Jun 2021 23:19:11 +0000 (18:19 -0500)
* Fix MonoCrossAOT.UnixFilePermissions for wasm

We introduced Microsoft.NETCore.App.MonoCrossAOT.UnixFilePermissions.xml in https://github.com/dotnet/runtime/pull/54501 to make sure the right permissions are set when installing AOT compiler workload packs.  We hardcoded the list to include mono-aot-cross, llc, and opt.  However, in wasm's case they only have mono-aot-cross.

This change makes the xml file a template and only includes mono-aot-cross for browser and all three for the other configurations.

Fixes https://github.com/dotnet/runtime/issues/54612

* Use property instead of item for the file nodes

* Ankit suggestion

Co-authored-by: Steve Pfister <steve.pfister@microsoft.com>
src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.MonoCrossAOT.UnixFilePermissions.xml [deleted file]
src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.MonoCrossAOT.UnixFilePermissions.xml.in [new file with mode: 0644]
src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.MonoCrossAOT.sfxproj

diff --git a/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.MonoCrossAOT.UnixFilePermissions.xml b/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.MonoCrossAOT.UnixFilePermissions.xml
deleted file mode 100644 (file)
index 9437f79..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<FileList>
-    <File Path="tools/mono-aot-cross" Permission="755" />
-    <File Path="tools/opt" Permission="755" />
-    <File Path="tools/llc" Permission="755" />
-</FileList>
diff --git a/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.MonoCrossAOT.UnixFilePermissions.xml.in b/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.MonoCrossAOT.UnixFilePermissions.xml.in
new file mode 100644 (file)
index 0000000..6ad7487
--- /dev/null
@@ -0,0 +1,3 @@
+<FileList>
+    ${PermissionsProperties}
+</FileList>
index 3c0e7fa..a951a58 100644 (file)
   </PropertyGroup>
 
   <ItemGroup>
-    <NativeRuntimeAsset Include="$(MonoAotCrossDir)$(TargetCrossRid)\**" TargetPath="tools/" />
+    <_ToolFile Include="$(MonoAotCrossDir)$(TargetCrossRid)\**" />
+    <NativeRuntimeAsset Include="@(_ToolFile)" TargetPath="tools/" />
     <NativeRuntimeAsset Include="$(MonoAotCrossDir)$(TargetCrossRid).Sdk.props" TargetPath="Sdk/Sdk.props" />
-    <NativeRuntimeAsset Condition="!$([MSBuild]::IsOsPlatform('Windows'))" Include="Microsoft.NETCore.App.MonoCrossAOT.UnixFilePermissions.xml" TargetPath="data/UnixFilePermissions.xml" />
+    <NativeRuntimeAsset Condition="!$([MSBuild]::IsOsPlatform('Windows'))" Include="$(MonoAotCrossDir)Microsoft.NETCore.App.MonoCrossAOT.UnixFilePermissions.xml" TargetPath="data/UnixFilePermissions.xml" />
   </ItemGroup>
 
-  <Target Name="WriteAotSdkProps" BeforeTargets="ValidateProperties">
+  <Target Name="WriteTemplateFiles" BeforeTargets="ValidateProperties">
     <ItemGroup>
       <_SdkPropsProperties Condition="!$([MSBuild]::IsOsPlatform('Windows'))" Include="ExeSuffix" Value="" />
       <_SdkPropsProperties Condition="$([MSBuild]::IsOsPlatform('Windows'))" Include="ExeSuffix" Value=".exe" />
       <_SdkPropsProperties Include="TargetRid" Value="$(TargetCrossRid)" />
     </ItemGroup>
+    <PropertyGroup>
+      <_PermissionsFiles>@(_ToolFile -> '&lt;File Path=&quot;tools/%(RecursiveDir)%(FileName)%(Extension)&quot; Permission=&quot;755&quot; /&gt;', ' ')</_PermissionsFiles>
+    </PropertyGroup>
+    <ItemGroup>
+      <_PermissionsProperties Include="PermissionsProperties" Value="$(_PermissionsFiles)" />
+    </ItemGroup>
+    <GenerateFileFromTemplate
+      Condition="!$([MSBuild]::IsOsPlatform('Windows'))"
+      TemplateFile="Microsoft.NETCore.App.MonoCrossAOT.UnixFilePermissions.xml.in"
+      Properties="@(_PermissionsProperties)"
+      OutputPath="$(MonoAotCrossDir)Microsoft.NETCore.App.MonoCrossAOT.UnixFilePermissions.xml" />
     <GenerateFileFromTemplate
       TemplateFile="Microsoft.NETCore.App.MonoCrossAOT.Sdk.props.in"
       Properties="@(_SdkPropsProperties)"