From e5e11c19c252cc7d7d8c5771605cae3eb4bc98aa Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Thu, 5 Jan 2017 14:07:03 -0600 Subject: [PATCH] Download and extract shared framework 1.1. This initial change gets 1.1 into the archive installers. Still need to bring it into the native installers as well. --- build/Microsoft.DotNet.Cli.Prepare.targets | 76 +++++++++++++++++-- .../TarGzFileExtractToDirectory.cs | 6 -- .../ZipFileExtractToDirectory.cs | 32 ++++++-- 3 files changed, 96 insertions(+), 18 deletions(-) diff --git a/build/Microsoft.DotNet.Cli.Prepare.targets b/build/Microsoft.DotNet.Cli.Prepare.targets index c8b6886f0..a39977cb8 100644 --- a/build/Microsoft.DotNet.Cli.Prepare.targets +++ b/build/Microsoft.DotNet.Cli.Prepare.targets @@ -130,9 +130,10 @@ - https://dotnetcli.azureedge.net/dotnet/$(CoreSetupChannel) - $(CoreSetupBlobRootUrl)/Binaries/$(SharedFrameworkVersion) - $(CoreSetupBlobRootUrl)/Installers + https://dotnetcli.azureedge.net/dotnet/ + $(CoreSetupBlobRootUrl)$(CoreSetupChannel) + $(CoreSetupBlobRootUrlWithChannel)/Binaries/$(SharedFrameworkVersion) + $(CoreSetupBlobRootUrlWithChannel)/Installers $(IntermediateDirectory)/coreSetupDownload/$(SharedFrameworkVersion) $(CoreSetupDownloadDirectory)/combinedSharedHostAndFrameworkArchive @@ -166,11 +167,74 @@ + + + + release/1.1.0 + 1.1.0 + 1.1.0 + 1.1.0 + + $(CoreSetupBlobRootUrl)$(AdditionalCoreSetupChannel) + $(AdditionalCoreSetupBlobRootUrlWithChannel)/Binaries/$(AdditionalSharedFrameworkVersion) + $(AdditionalCoreSetupBlobRootUrlWithChannel)/Installers + $(IntermediateDirectory)/coreSetupDownload/$(AdditionalSharedFrameworkVersion) + $(AdditionalCoreSetupDownloadDirectory)/combinedSharedHostAndFrameworkArchive + + + dotnet-host-$(ProductMonikerRid).$(AdditionalSharedHostVersion)$(InstallerExtension) + $(PackagesDirectory)/$(AdditionalDownloadedSharedHostInstallerFileName) + + dotnet-hostfxr-$(ProductMonikerRid).$(AdditionalHostFxrVersion)$(InstallerExtension) + $(PackagesDirectory)/$(AdditionalDownloadedHostFxrInstallerFileName) + + dotnet-sharedframework-$(ProductMonikerRid).$(AdditionalSharedFrameworkVersion)$(InstallerExtension) + $(PackagesDirectory)/$(AdditionalDownloadedSharedFrameworkInstallerFileName) + + dotnet-$(ProductMonikerRid).$(AdditionalSharedFrameworkVersion)$(ArchiveExtension) + + + + <_DownloadAndExtractItem Include="AdditionalCombinedSharedHostAndFrameworkArchive" + Condition="!Exists('$(AdditionalCombinedSharedHostAndFrameworkArchive)')"> + $(AdditionalSharedFrameworkArchiveBlobRootUrl)/$(AdditionalCombinedFrameworkHostCompressedFileName) + $(AdditionalCombinedSharedHostAndFrameworkArchive) + $(SharedFrameworkPublishDirectory) + + False + + + <_DownloadAndExtractItem Include="AdditionalDownloadedSharedFrameworkInstallerFile" + Condition="!Exists('$(AdditionalDownloadedSharedFrameworkInstallerFile)') And '$(InstallerExtension)' != ''"> + $(AdditionalCoreSetupInstallerBlobRootUrl)/$(AdditionalSharedFrameworkVersion)/$(AdditionalDownloadedSharedFrameworkInstallerFileName) + $(AdditionalDownloadedSharedFrameworkInstallerFile) + + + + <_DownloadAndExtractItem Include="AdditionalDownloadedSharedHostInstallerFile" + Condition="!Exists('$(AdditionalDownloadedSharedHostInstallerFile)') And '$(InstallerExtension)' != ''"> + $(AdditionalCoreSetupInstallerBlobRootUrl)/$(AdditionalSharedHostVersion)/$(AdditionalDownloadedSharedHostInstallerFileName) + $(AdditionalDownloadedSharedHostInstallerFile) + + + + <_DownloadAndExtractItem Include="AdditionalDownloadedHostFxrInstallerFile" + Condition="!Exists('$(AdditionalDownloadedHostFxrInstallerFile)') And '$(InstallerExtension)' != ''"> + $(AdditionalCoreSetupInstallerBlobRootUrl)/$(AdditionalHostFxrVersion)/$(AdditionalDownloadedHostFxrInstallerFileName) + $(AdditionalDownloadedHostFxrInstallerFile) + + + + + %(_DownloadAndExtractItem.OverwriteDestination) + True + + @@ -178,12 +242,12 @@ + OverwriteDestination="$(OverwriteExtractionDestination)" /> + OverwriteDestination="$(OverwriteExtractionDestination)" /> - diff --git a/build_projects/dotnet-cli-build/TarGzFileExtractToDirectory.cs b/build_projects/dotnet-cli-build/TarGzFileExtractToDirectory.cs index b2575a22e..f5d70b9a7 100644 --- a/build_projects/dotnet-cli-build/TarGzFileExtractToDirectory.cs +++ b/build_projects/dotnet-cli-build/TarGzFileExtractToDirectory.cs @@ -42,12 +42,6 @@ namespace Microsoft.DotNet.Build.Tasks Log.LogMessage(MessageImportance.Low, "'{0}' already exists, trying to delete before unzipping...", DestinationDirectory); Directory.Delete(DestinationDirectory, recursive: true); } - else - { - Log.LogWarning("'{0}' already exists. Did you forget to set '{1}' to true?", DestinationDirectory, nameof(OverwriteDestination)); - - retVal = false; - } } if (!File.Exists(SourceArchive)) diff --git a/build_projects/dotnet-cli-build/ZipFileExtractToDirectory.cs b/build_projects/dotnet-cli-build/ZipFileExtractToDirectory.cs index a17baf99a..aa78823f9 100644 --- a/build_projects/dotnet-cli-build/ZipFileExtractToDirectory.cs +++ b/build_projects/dotnet-cli-build/ZipFileExtractToDirectory.cs @@ -25,7 +25,7 @@ namespace Microsoft.DotNet.Build.Tasks public string DestinationDirectory { get; set; } /// - /// Indicates if the destination archive should be overwritten if it already exists. + /// Indicates if the destination directory should be cleaned if it already exists. /// public bool OverwriteDestination { get; set; } @@ -40,17 +40,37 @@ namespace Microsoft.DotNet.Build.Tasks Log.LogMessage(MessageImportance.Low, "'{0}' already exists, trying to delete before unzipping...", DestinationDirectory); Directory.Delete(DestinationDirectory, recursive: true); } - else - { - Log.LogWarning("'{0}' already exists. Did you forget to set '{1}' to true?", DestinationDirectory, nameof(OverwriteDestination)); - } } Log.LogMessage(MessageImportance.High, "Decompressing '{0}' into '{1}'...", SourceArchive, DestinationDirectory); if (!Directory.Exists(Path.GetDirectoryName(DestinationDirectory))) Directory.CreateDirectory(Path.GetDirectoryName(DestinationDirectory)); - ZipFile.ExtractToDirectory(SourceArchive, DestinationDirectory); + // match tar default behavior to overwrite by default + // Replace this code with ZipFile.ExtractToDirectory when https://github.com/dotnet/corefx/pull/14806 is available + using (ZipArchive archive = ZipFile.Open(SourceArchive, ZipArchiveMode.Read)) + { + DirectoryInfo di = Directory.CreateDirectory(DestinationDirectory); + string destinationDirectoryFullPath = di.FullName; + + foreach (ZipArchiveEntry entry in archive.Entries) + { + string fileDestinationPath = Path.GetFullPath(Path.Combine(destinationDirectoryFullPath, entry.FullName)); + + if (Path.GetFileName(fileDestinationPath).Length == 0) + { + // If it is a directory: + Directory.CreateDirectory(fileDestinationPath); + } + else + { + // If it is a file: + // Create containing directory: + Directory.CreateDirectory(Path.GetDirectoryName(fileDestinationPath)); + entry.ExtractToFile(fileDestinationPath, overwrite: true); + } + } + } } catch (Exception e) {