Fix some packaging issues (#4465)
authorMike McLaughlin <mikem@microsoft.com>
Wed, 17 Jan 2024 01:41:35 +0000 (17:41 -0800)
committerGitHub <noreply@github.com>
Wed, 17 Jan 2024 01:41:35 +0000 (17:41 -0800)
Change SOS installer to copy subdirectories

src/SOS/SOS.InstallHelper/InstallHelper.cs
src/SOS/SOS.InstallHelper/SOS.InstallHelper.csproj
src/SOS/SOS.Package/SOS.Package.csproj
src/SOS/SOS.Package/SOS.Symbol.Package.csproj

index 8073a9ced1e582144633909970ce833663fb1be8..ed72e4b8c95d47abec06561bb05c2008e5d4aed1 100644 (file)
@@ -110,23 +110,11 @@ namespace SOS
 
                 // Copy native SOS files
                 WriteLine($"Copying files from {SOSNativeSourcePath}");
-                RetryOperation("Problem installing native SOS binaries", () => {
-                    foreach (string file in Directory.EnumerateFiles(SOSNativeSourcePath))
-                    {
-                        string destinationFile = Path.Combine(InstallLocation, Path.GetFileName(file));
-                        File.Copy(file, destinationFile, overwrite: true);
-                    }
-                });
+                RetryOperation("Problem installing native SOS binaries", () => CopyFiles(SOSNativeSourcePath, InstallLocation));
 
                 // Copy managed SOS files
                 WriteLine($"Copying files from {SOSManagedSourcePath}");
-                RetryOperation("Problem installing managed SOS binaries", () => {
-                    foreach (string file in Directory.EnumerateFiles(SOSManagedSourcePath))
-                    {
-                        string destinationFile = Path.Combine(InstallLocation, Path.GetFileName(file));
-                        File.Copy(file, destinationFile, overwrite: true);
-                    }
-                });
+                RetryOperation("Problem installing managed SOS binaries", () => CopyFiles(SOSManagedSourcePath, InstallLocation));
 
                 // Configure lldb
                 if (LLDBInitFile != null)
@@ -356,6 +344,21 @@ namespace SOS
             return $"{os}-{architectureString}";
         }
 
+        private static void CopyFiles(string sourcePath, string destinationPath)
+        {
+            foreach (string path in Directory.EnumerateDirectories(sourcePath))
+            {
+                string directory = Path.Combine(destinationPath, Path.GetFileName(path));
+                Directory.CreateDirectory(directory);
+                CopyFiles(path, directory);
+            }
+            foreach (string file in Directory.EnumerateFiles(sourcePath))
+            {
+                string destinationFile = Path.Combine(destinationPath, Path.GetFileName(file));
+                File.Copy(file, destinationFile, overwrite: true);
+            }
+        }
+
         private void WriteLine(string format, params object[] args)
         {
             m_writeLine?.Invoke(string.Format(format, args));
index 9f007f06429529f0a5c79062ca70c84e06a4cd41..315833e65714444f648019da41a5689c69721f57 100644 (file)
@@ -3,7 +3,7 @@
     <TargetFramework>netstandard2.0</TargetFramework>
     <AssemblyName>SOS.InstallHelper</AssemblyName>
     <NoWarn>;1591;1701</NoWarn>
-    <IsPackable>false</IsPackable>
+    <IsPackable>true</IsPackable>
     <Description>Diagnostic SOS Install Helper</Description>
     <PackageReleaseNotes>$(Description)</PackageReleaseNotes>
     <PackageTags>SOS</PackageTags>
index 8ae407ed74a277ce8a2e0ed9167ea461b9d8834e..5fe7727d896207c7c5d13abf5d3bdaaec33ccfec 100644 (file)
@@ -10,7 +10,7 @@
     <IncludeBuildOutput>false</IncludeBuildOutput>
     <SOSPackagePathPrefix>tools</SOSPackagePathPrefix>
     <GalleryManifestName>$(ArtifactsPackagesDir)\GalleryManifest.xml</GalleryManifestName>
-    <BeforePack>GenerateGalleryZip;GenerateSymbolsZip</BeforePack>
+    <BeforePack>GenerateGalleryManifest</BeforePack>
     <IsShipping>true</IsShipping>
     <IsShippingPackage>false</IsShippingPackage>
   </PropertyGroup>
     </ItemGroup>
   </Target>
 
-  <Target Name="GenerateGalleryZip" DependsOnTargets="GenerateGalleryManifest">
-    <PropertyGroup>
-      <GalleryDir>$(ArtifactsBinDir)\gallery</GalleryDir>
-      <GallerySubDir>$(GalleryDir)\$(FileVersion)</GallerySubDir>
-    </PropertyGroup>
-
-    <ItemGroup>
-      <ZipSourceFiles Include="$(GalleryManifestName)">
-         <TargetPath>$(GalleryDir)</TargetPath>
-      </ZipSourceFiles>
-
-      <ZipSourceFiles Include="$(ArtifactsBinDir)Windows_NT.x64.$(Configuration)\sos.dll">
-         <TargetPath>$(GallerySubDir)\win-x64</TargetPath>
-      </ZipSourceFiles>
-      <ZipSourceFiles Include="$(ArtifactsBinDir)Windows_NT.x64.$(Configuration)\Microsoft.DiaSymReader.Native.amd64.dll">
-         <TargetPath>$(GallerySubDir)\win-x64</TargetPath>
-      </ZipSourceFiles>
-      <ZipSourceFiles Include="$(SOSExtensionsBinaries)">
-         <TargetPath>$(GallerySubDir)\win-x64</TargetPath>
-      </ZipSourceFiles>
-
-      <ZipSourceFiles Include="$(ArtifactsBinDir)Windows_NT.x86.$(Configuration)\sos.dll">
-         <TargetPath>$(GallerySubDir)\win-x86</TargetPath>
-      </ZipSourceFiles>
-      <ZipSourceFiles Include="$(ArtifactsBinDir)Windows_NT.x86.$(Configuration)\Microsoft.DiaSymReader.Native.x86.dll">
-         <TargetPath>$(GallerySubDir)\win-x86</TargetPath>
-      </ZipSourceFiles>
-      <ZipSourceFiles Include="$(SOSExtensionsBinaries)">
-         <TargetPath>$(GallerySubDir)\win-x86</TargetPath>
-      </ZipSourceFiles>
-
-      <ZipSourceFiles Include="$(ArtifactsBinDir)Windows_NT.arm.$(Configuration)\sos.dll">
-         <TargetPath>$(GallerySubDir)\win-arm</TargetPath>
-      </ZipSourceFiles>
-      <ZipSourceFiles Include="$(ArtifactsBinDir)Windows_NT.arm.$(Configuration)\Microsoft.DiaSymReader.Native.arm.dll">
-         <TargetPath>$(GallerySubDir)\win-arm</TargetPath>
-      </ZipSourceFiles>
-      <ZipSourceFiles Include="$(SOSExtensionsBinaries)">
-         <TargetPath>$(GallerySubDir)\win-arm</TargetPath>
-      </ZipSourceFiles>
-
-      <ZipSourceFiles Include="$(ArtifactsBinDir)Windows_NT.arm64.$(Configuration)\sos.dll">
-         <TargetPath>$(GallerySubDir)\win-arm64</TargetPath>
-      </ZipSourceFiles>
-      <ZipSourceFiles Include="$(ArtifactsBinDir)Windows_NT.arm64.$(Configuration)\Microsoft.DiaSymReader.Native.arm64.dll">
-         <TargetPath>$(GallerySubDir)\win-arm64</TargetPath>
-      </ZipSourceFiles>
-      <ZipSourceFiles Include="$(SOSExtensionsBinaries)">
-         <TargetPath>$(GallerySubDir)\win-arm64</TargetPath>
-      </ZipSourceFiles>
-    </ItemGroup>
-
-    <Copy SourceFiles="@(ZipSourceFiles)" DestinationFolder="%(ZipSourceFiles.TargetPath)" />
-
-    <ZipDirectory DestinationFile="$(ArtifactsPackagesDir)$(FileVersion).zip" SourceDirectory="$(GalleryDir)" Overwrite="true" />
-  </Target>
-
-  <Target Name="GenerateSymbolsZip">
-    <PropertyGroup>
-      <SymbolsDir>$(ArtifactsBinDir)\symbols</SymbolsDir>
-    </PropertyGroup>
-
-    <ItemGroup>
-      <ZipSymbolFiles Include="$(ArtifactsSymStoreDirectory)\SOS.Extensions\netstandard2.0\publish\*.pdb">
-         <TargetPath>$(SymbolsDir)</TargetPath>
-      </ZipSymbolFiles>
-
-      <ZipSymbolFiles Include="$(ArtifactsBinDir)Windows_NT.x64.$(Configuration)\PDB\sos.pdb">
-         <TargetPath>$(SymbolsDir)\win-x64</TargetPath>
-      </ZipSymbolFiles>
-
-      <ZipSymbolFiles Include="$(ArtifactsBinDir)Windows_NT.x86.$(Configuration)\PDB\sos.pdb">
-         <TargetPath>$(SymbolsDir)\win-x86</TargetPath>
-      </ZipSymbolFiles>
-
-      <ZipSymbolFiles Include="$(ArtifactsBinDir)Windows_NT.arm.$(Configuration)\PDB\sos.pdb">
-         <TargetPath>$(SymbolsDir)\win-arm</TargetPath>
-      </ZipSymbolFiles>
-
-      <ZipSymbolFiles Include="$(ArtifactsBinDir)Windows_NT.arm64.$(Configuration)\PDB\sos.pdb">
-         <TargetPath>$(SymbolsDir)\win-arm64</TargetPath>
-      </ZipSymbolFiles>
-    </ItemGroup>
-
-    <Copy SourceFiles="@(ZipSymbolFiles)" DestinationFolder="%(ZipSymbolFiles.TargetPath)" />
-
-    <ZipDirectory DestinationFile="$(ArtifactsPackagesDir)$(FileVersion).symbols.zip" SourceDirectory="$(SymbolsDir)" Overwrite="true" />
-  </Target>
-
 </Project>
index 83cd791cffb446a257293a0e2a92a0560e03dd88..59adf253d907a11095636724b54bd4bf94ba04cc 100644 (file)
@@ -15,7 +15,7 @@
 
   <ItemGroup>
     <None Include="$(ArtifactsBinDir)\SOS.Extensions\$(Configuration)\netstandard2.0\publish\*.pdb" Pack="true" Visible="false">
-      <PackagePath>$(SOSPackagePathPrefix)</PackagePath>
+      <PackagePath>$(SOSPackagePathPrefix)/lib</PackagePath>
     </None>
 
     <None Include="$(ArtifactsBinDir)\Windows_NT.x64.$(Configuration)\PDB\sos.pdb" Pack="true" Visible="false">