From e50b4b7fc98e72e1640040117f11ae7d3742cef2 Mon Sep 17 00:00:00 2001 From: Nikola Milosavljevic Date: Fri, 22 Nov 2024 00:06:54 +0000 Subject: [PATCH 1/7] Use arcade infra for DEB and RPM build --- .vsts-ci.yml | 9 +- eng/Versions.props | 1 - sdk.sln | 7 + source-build.slnf | 1 + src/Installer/pkg/dotnet-sdk.csproj | 127 +++++ .../redist-installer/redist-installer.csproj | 2 - .../targets/GenerateDebs.targets | 446 ------------------ .../targets/GenerateInstallers.targets | 4 +- .../targets/GenerateRPMs.targets | 362 -------------- src/Tasks/sdk-tasks/DotNetDebTool.cs | 75 --- src/Tasks/sdk-tasks/sdk-tasks.InTree.targets | 1 - 11 files changed, 138 insertions(+), 897 deletions(-) create mode 100644 src/Installer/pkg/dotnet-sdk.csproj delete mode 100644 src/Installer/redist-installer/targets/GenerateDebs.targets delete mode 100644 src/Installer/redist-installer/targets/GenerateRPMs.targets delete mode 100644 src/Tasks/sdk-tasks/DotNetDebTool.cs diff --git a/.vsts-ci.yml b/.vsts-ci.yml index 1b2696c845e3..aaeaa6242bd5 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -65,8 +65,6 @@ extends: containers: alpine319WithNode: image: mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.19-WithNode - cblMariner20Fpm: - image: mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-fpm centosStream9: image: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream9 debian12Amd64: @@ -75,8 +73,6 @@ extends: image: mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-39 mariner20CrossArm: image: mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-cross-arm - ubuntu2204DebPkg: - image: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-22.04-debpkg sdl: sourceAnalysisPool: name: $(DncEngInternalBuildPool) @@ -200,21 +196,20 @@ extends: runTests: false ### PORTABLE ### - categoryName: Portable - container: ubuntu2204DebPkg # Do not publish zips and tarballs. The linux-x64 binaries are already published by Official. publishArgument: $(_publishArgument) /p:PublishBinariesAndBadge=false officialBuildProperties: $(_officialBuildProperties) osProperties: $(linuxOsPortableProperties) /p:BuildSdkDeb=true runTests: false - categoryName: Portable - container: cblMariner20Fpm + container: centosStream9 # Do not publish zips and tarballs. The linux-x64 binaries are already published by Official. publishArgument: $(_publishArgument) /p:PublishBinariesAndBadge=false officialBuildProperties: $(_officialBuildProperties) osProperties: $(linuxOsPortableProperties) /p:IsRPMBasedDistro=true runTests: false - categoryName: Portable - container: cblMariner20Fpm + container: centosStream9 buildArchitecture: arm64 runtimeIdentifier: linux-arm64 # Do not publish zips and tarballs. The linux-arm64 binaries are already published by Official. diff --git a/eng/Versions.props b/eng/Versions.props index cf9f3ae5a61a..43754f84fc9f 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -266,7 +266,6 @@ 2.2.0-beta.19072.10 - 2.0.0 10.0.0-preview.24602.1 diff --git a/sdk.sln b/sdk.sln index b8659201cec7..d43c3cdf9368 100644 --- a/sdk.sln +++ b/sdk.sln @@ -497,6 +497,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "finalizer-build", "src\Inst EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "redist-installer", "src\Installer\redist-installer\redist-installer.csproj", "{FAADC193-BA41-449D-97CE-0EF82836046A}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dotnet-sdk", "src\Installer\pkg\dotnet-sdk.csproj", "{8D6A9984-118D-4415-A8FA-AB1F26CF5C44}" +EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VSTemplateLocator", "src\VSTemplateLocator\VSTemplateLocator.proj", "{0CBA5FB8-71A3-457A-89F3-E52B9602164A}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "sdk-tasks.Tests", "test\sdk-tasks.Tests\sdk-tasks.Tests.csproj", "{21C21975-84C1-4A24-8E21-F7EC790A4584}" @@ -965,6 +967,10 @@ Global {D9617F63-15F4-4CA2-8ECF-728A94B45D82}.Debug|Any CPU.Build.0 = Debug|Any CPU {D9617F63-15F4-4CA2-8ECF-728A94B45D82}.Release|Any CPU.ActiveCfg = Release|Any CPU {D9617F63-15F4-4CA2-8ECF-728A94B45D82}.Release|Any CPU.Build.0 = Release|Any CPU + {8D6A9984-118D-4415-A8FA-AB1F26CF5C44}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8D6A9984-118D-4415-A8FA-AB1F26CF5C44}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8D6A9984-118D-4415-A8FA-AB1F26CF5C44}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8D6A9984-118D-4415-A8FA-AB1F26CF5C44}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1142,6 +1148,7 @@ Global {FA579C03-2EB4-4D47-88EE-BFF339E96FAF} = {22AB674F-ED91-4FBC-BFEE-8A1E82F9F05E} {1F0B4B3C-DC88-4740-B04F-1707102E9930} = {580D1AE7-AA8F-4912-8B76-105594E00B3B} {D9617F63-15F4-4CA2-8ECF-728A94B45D82} = {3FA6F1CB-295B-4414-B18F-93845917A8CD} + {8D6A9984-118D-4415-A8FA-AB1F26CF5C44} = {3FA6F1CB-295B-4414-B18F-93845917A8CD} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {FB8F26CE-4DE6-433F-B32A-79183020BBD6} diff --git a/source-build.slnf b/source-build.slnf index 95569399210f..25c7b776e163 100644 --- a/source-build.slnf +++ b/source-build.slnf @@ -22,6 +22,7 @@ "src\\Containers\\Microsoft.NET.Build.Containers\\Microsoft.NET.Build.Containers.csproj", "src\\Containers\\packaging\\package.csproj", "src\\Installer\\redist-installer\\redist-installer.csproj", + "src\\Installer\\pkg\\dotnet-sdk.csproj", "src\\Layout\\redist\\redist.csproj", "src\\Layout\\tool_fsharp\\tool_fsc.csproj", "src\\Layout\\tool_msbuild\\tool_msbuild.csproj", diff --git a/src/Installer/pkg/dotnet-sdk.csproj b/src/Installer/pkg/dotnet-sdk.csproj new file mode 100644 index 000000000000..5f75c5484dd5 --- /dev/null +++ b/src/Installer/pkg/dotnet-sdk.csproj @@ -0,0 +1,127 @@ + + + true + $(SdkTargetFramework) + $(NETCoreSdkRuntimeIdentifier) + true + true + true + true + Microsoft .NET + $(RepoRoot)LICENSE.TXT + dotnet-sdk + SDK + ToolPack + + $(VersionMajor) + $(VersionMinor) + $(VersionPrefix.Split('.')[2]) + + linux-$(Architecture) + true + + + + + + + + + + + + + + + $(ArtifactsBinDir)redist-installer\$(Configuration)\dotnet\ + $(RepoRoot)documentation/manpages/sdk + $(RedistLayoutPath)sdk/ + $(RedistLayoutPath)templates/ + + + + + + + + + + + + + + + + + + + + + + + + Microsoft .NET SDK $(PackageVersion) + + + + + + + + + + + + $(MSBuildThisFileDirectory)../redist-installer/packaging/deb/postinst + $(BaseIntermediateOutputPath)debian/postinst + + + + + + + + + + + + + + + + diff --git a/src/Installer/redist-installer/redist-installer.csproj b/src/Installer/redist-installer/redist-installer.csproj index 75de618eabe1..e6950ceac534 100644 --- a/src/Installer/redist-installer/redist-installer.csproj +++ b/src/Installer/redist-installer/redist-installer.csproj @@ -39,8 +39,6 @@ - - diff --git a/src/Installer/redist-installer/targets/GenerateDebs.targets b/src/Installer/redist-installer/targets/GenerateDebs.targets deleted file mode 100644 index 1cccb4fd0fa2..000000000000 --- a/src/Installer/redist-installer/targets/GenerateDebs.targets +++ /dev/null @@ -1,446 +0,0 @@ - - - - $(PkgMicrosoft_DotNet_Build_Tasks_Installers)/build/deb-package-tool - - - - - $(MSBuildProjectDirectory) - - - - - /usr/share/dotnet - - package_root - $ - samples - docs - debian - - - - - $(MicrosoftNETCoreAppMajorMinorVersion) - dotnet-runtime-deps-$(RuntimeDepsPackageVersion) - $(DownloadsFolder)$(DownloadedRuntimeDepsInstallerFileName) - $(MajorMinorVersion) - dotnet-sdk-$(SdkDebianPackageVersion) - $(MicrosoftNETCoreAppPackageVersion) - $(MicrosoftNETCoreAppMajorMinorVersion) - dotnet-runtime-$(SharedFxDebianPackageFileVersion) - $(SharedFxDebianPackageFileName.ToLower()) - dotnet-runtime-$(SharedFxDebianPackageVersion) - $(SharedFxDebianPackageName.ToLower()) - $(DownloadsFolder)$(DownloadedSharedFrameworkInstallerFileName) - dotnet-targeting-pack-$(SharedFxDebianPackageFileVersion) - $(NetCoreAppTargetingPackDebianPackageFileName.ToLower()) - dotnet-targeting-pack-$(SharedFxDebianPackageVersion) - $(NetCoreAppTargetingPackDebianPackageName.ToLower()) - $(DownloadsFolder)$(DownloadedNetCoreAppTargetingPackInstallerFileName) - netstandard-targeting-pack-$(NETStandardLibraryRefPackageVersion) - $(NetStandardTargetingPackDebianPackageFileName.ToLower()) - netstandard-targeting-pack-$(NETStandardLibraryRefPackageVersion.Split('.')[0]).$(NETStandardLibraryRefPackageVersion.Split('.')[1]) - $(NetStandardTargetingPackDebianPackageName.ToLower()) - $(DownloadsFolder)$(DownloadedNetStandardTargetingPackInstallerFileName) - dotnet-apphost-pack-$(SharedFxDebianPackageFileVersion) - $(NetCoreAppHostPackDebianPackageFileName.ToLower()) - dotnet-apphost-pack-$(SharedFxDebianPackageVersion) - $(NetCoreAppHostPackDebianPackageName.ToLower()) - $(DownloadsFolder)$(DownloadedNetCoreAppHostPackInstallerFileName) - dotnet-hostfxr-$(HostFxrVersion) - $(HostFxrDebianPackageFileName.ToLower()) - dotnet-hostfxr-$(HostFxrMajorMinorVersion) - $(HostFxrDebianPackageName.ToLower()) - $(DownloadsFolder)$(DownloadedHostFxrInstallerFileName) - dotnet-host - $(DownloadsFolder)$(DownloadedSharedHostInstallerFileName) - aspnetcore-runtime-$(MicrosoftAspNetCoreAppRuntimePackageVersion) - $(AspNetCoreSharedFxDebianPackageFileName.ToLower()) - aspnetcore-runtime-$(AspNetCoreMajorMinorVersion) - $(AspNetCoreSharedFxDebianPackageName.ToLower()) - $(DownloadsFolder)$(DownloadedAspNetCoreSharedFxInstallerFileName) - aspnetcore-targeting-pack-$(MicrosoftAspNetCoreAppRefPackageVersion) - $(AspNetTargetingPackDebianPackageFileName.ToLower()) - aspnetcore-targeting-pack-$(AspNetCoreMajorMinorVersion) - $(AspNetTargetingPackDebianPackageName.ToLower()) - $(DownloadsFolder)$(DownloadedAspNetTargetingPackInstallerFileName) - - - - - - $(RepoRoot)Documentation/manpages - $(RepoRoot)test/EndToEnd/EndToEnd.Tests.csproj - $(RedistLayoutPath)sdk/ - $(RedistLayoutPath)templates/ - - - - - - - - - - - - $(ArtifactsShippingPackagesDir) - $(InstallerOutputDirectory)$(DistroSpecificArtifactNameWithVersionCombinedHostHostFxrFrameworkSdk)$(InstallerExtension) - $(IntermediateOutputPath)debian/sdk/ - $(SdkDebianIntermediateDirectory)deb-tool-output - $(SdkDebianIntermediateDirectory)debian-testResults.xml - - - - - $(SdkDebianIntermediateDirectory)debianLayoutDirectory/ - $(LayoutDirectory)$(LayoutPackageRootDirName) - $(LayoutDirectory)$(LayoutAbsolutePlacementDirName) - $(LayoutDirectory)$(LayoutSamplesDirName) - $(LayoutDirectory)$(LayoutDocsDirName) - $(LayoutDirectory)$(LayoutDebianFilesDirName) - - - - - $(MSBuildThisFileDirectory)../packaging/deb/dotnet-debian_config.json - $(LayoutDirectory)debian_config.json - - - - $(MSBuildThisFileDirectory)../packaging/deb/postinst - $(LayoutDirectory)debian/postinst - - - - - $(SharedFxDebianPackageName) - - - $(AspNetCoreSharedFxDebianPackageName) - - - $(NetCoreAppTargetingPackDebianPackageName) - - - $(NetCoreAppHostPackDebianPackageName) - - - $(NetStandardTargetingPackDebianPackageName) - - - $(AspNetTargetingPackDebianPackageName) - - - - , - "$(AdditionalSharedFxDebianPackageName)" : {} - - - - - - - $(MajorMinorVersion) - - - $(SdkBrandName) - - - $(MicrosoftNETCoreAppRuntimePackageVersionWithTilde) - - - $(MicrosoftNETCoreAppRefPackageVersionWithTilde) - - - $(NetStandardTargetingPackPackageVersionWithTilde) - - - $(AspNetCoreRuntimeVersionWithTilde) - - - $(AspNetCoreRefVersionWithTilde) - - - $(Version) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $(AspNetCoreSharedFxBaseRuntimeVersion.IndexOf('-')) - $(AspNetCoreSharedFxBaseRuntimeVersion) - $(AspNetCoreSharedFxBaseRuntimeVersion.Substring(0, $(AspNetVersionPrereleaseSeparator))) - - $(AspNetSimpleVersion.LastIndexOf('.')) - $(AspNetSimpleVersion.Substring(0, $(AspNetVersionPatchSeparator))) - - - --ignore-depends=dotnet-runtime-$(AspNetSimpleVersion) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - false - - - - - - - diff --git a/src/Installer/redist-installer/targets/GenerateInstallers.targets b/src/Installer/redist-installer/targets/GenerateInstallers.targets index 9f6f455e8904..6e48ed61e1cd 100644 --- a/src/Installer/redist-installer/targets/GenerateInstallers.targets +++ b/src/Installer/redist-installer/targets/GenerateInstallers.targets @@ -10,9 +10,7 @@ DependsOnTargets="$(_BuildUnlessNoBuild); GetCurrentRuntimeInformation; GenerateMsis; - GeneratePkgs; - GenerateRpms; - GenerateDebs" + GeneratePkgs" /> diff --git a/src/Installer/redist-installer/targets/GenerateRPMs.targets b/src/Installer/redist-installer/targets/GenerateRPMs.targets deleted file mode 100644 index 454a5758c287..000000000000 --- a/src/Installer/redist-installer/targets/GenerateRPMs.targets +++ /dev/null @@ -1,362 +0,0 @@ - - - - rpm_config.json - $(MSBuildThisFileDirectory)../packaging/rpm/templates - $(MSBuildThisFileDirectory)../packaging/rpm/scripts - after_install_host.sh - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $(MicrosoftNETCoreAppRuntimeMajorMinorPatchVersion) - - - $(MicrosoftNETCoreAppRefMajorMinorPatchVersion) - - - $(AspNetCoreRuntimeMajorMinorPatchVersion) - - - $(AspNetCoreRefMajorMinorPatchVersion) - - - $(SharedFxRpmPackageName) - - - $(NetCoreAppTargetingPackRpmPackageName) - - - $(NetCoreAppHostPackRpmPackageName) - - - $(AspNetCoreSharedFxRpmPackageName) - - - $(AspNetTargetingPackRpmPackageName) - - - $(Version) - - - amd64 - aarch64 - - - $(SdkBrandName) - - - $(SdkRpmPackageName) - - - - $(Version) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $(MajorMinorVersion) - $(ArtifactNameCombinedHostHostFxrFrameworkSdk)-$(SdkRpmPackageVersion) - $(Version) - $(RedistLayoutPath)sdk/ - $(RedistLayoutPath)templates/ - $(ArtifactsShippingPackagesDir)$(DistroSpecificArtifactNameWithVersionCombinedHostHostFxrFrameworkSdk)$(InstallerExtension) - $(SdkRPMInstallerFile) - $(ArtifactsShippingPackagesDir)$(MarinerArtifactNameWithVersionCombinedHostHostFxrFrameworkSdk)$(InstallerExtension) - $(ArtifactsShippingPackagesDir)$(Mariner2ArtifactNameWithVersionCombinedHostHostFxrFrameworkSdk)$(InstallerExtension) - - $(RepoRoot)/Documentation/manpages - $(RepoRoot)/test/EndToEnd/EndToEnd.csproj - $(MSBuildThisFileDirectory)../packaging/rpm/dotnet-config.json - $(IntermediateOutputPath)$(SdkRpmPackageName)/$(RpmPackageVersion) - $(RpmIntermediatesDir)/rpm-testResults.xml - /usr/share/dotnet - - - - $(RpmIntermediatesDir)/RpmLayoutDirectory/ - $(RpmLayoutDirectory)package_root - $(RpmLayoutPackageRoot)/sdk - $(RpmLayoutPackageRoot)/templates - $(RpmLayoutPackageRoot)/sdk-manifests - $(RpmLayoutDirectory)docs - $(RpmLayoutDirectory)templates - $(RpmLayoutDirectory)scripts - - - - $(MicrosoftNETCoreAppMajorMinorVersion) - $(MicrosoftNETCoreAppRuntimePackageVersion) - dotnet-runtime-$(SharedFxRpmPackageVersion) - $(SharedFxRpmPackageName.ToLower()) - dotnet-runtime-$(SharedFxRpmPackageFileVersion) - $(SharedFxRpmPackageFileName.ToLower()) - dotnet-targeting-pack-$(SharedFxRpmPackageVersion) - $(NetCoreAppTargetingPackRpmPackageName.ToLower()) - dotnet-targeting-pack-$(MicrosoftNETCoreAppRefPackageVersion) - $(NetCoreAppTargetingPackRpmPackageFileName.ToLower()) - dotnet-apphost-pack-$(SharedFxRpmPackageVersion) - $(NetCoreAppHostPackRpmPackageName.ToLower()) - dotnet-apphost-pack-$(SharedFxRpmPackageFileVersion) - $(NetCoreAppHostPackRpmPackageFileName.ToLower()) - netstandard-targeting-pack-$(NetStandardTargetingPackMajorMinorVersion) - $(NetStandardTargetingPackRpmPackageName.ToLower()) - netstandard-targeting-pack-$(NETStandardLibraryRefPackageVersion) - $(NetStandardTargetingPackRpmPackageFileName.ToLower()) - dotnet-hostfxr-$(SharedFxRpmPackageVersion) - $(HostFxrRpmPackageName.ToLower()) - dotnet-runtime-deps-$(SharedFxRpmPackageVersion) - $(RuntimeDepsPackageName.ToLower()) - dotnet-host - aspnetcore-runtime-$(AspNetCoreMajorMinorVersion) - $(AspNetCoreSharedFxRpmPackageName.ToLower()) - aspnetcore-runtime-$(MicrosoftAspNetCoreRuntimePackageVersion) - $(AspNetCoreSharedFxRpmPackageFileName.ToLower()) - aspnetcore-targeting-pack-$(AspNetCoreMajorMinorVersion) - $(AspNetTargetingPackRpmPackageName.ToLower()) - aspnetcore-targeting-pack-$(MicrosoftAspNetCoreRefPackageVersion) - $(AspNetTargetingPackRpmPackageFileName.ToLower()) - $(ScriptsDir)/$(AfterInstallHostScriptName) - $(RpmLayoutScripts)/$(AfterInstallHostScriptName) - - - - $(DownloadsFolder)$(DownloadedNetCoreAppTargetingPackInstallerFileName) - $(DownloadsFolder)$(DownloadedNetStandardTargetingPackInstallerFileName) - $(DownloadsFolder)$(DownloadedNetCoreAppHostPackInstallerFileName) - $(DownloadsFolder)$(DownloadedAspNetTargetingPackInstallerFileName) - $(DownloadsFolder)$(DownloadedRuntimeDepsInstallerFileName) - $(DownloadsFolder)$(DownloadedSharedHostInstallerFileName) - $(DownloadsFolder)$(DownloadedHostFxrInstallerFileName) - $(DownloadsFolder)$(DownloadedSharedFrameworkInstallerFileName) - $(DownloadsFolder)$(DownloadedAspNetCoreSharedFxInstallerFileName) - - - - - - - - - - - - - false - True - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/Tasks/sdk-tasks/DotNetDebTool.cs b/src/Tasks/sdk-tasks/DotNetDebTool.cs deleted file mode 100644 index 844c2cbb9b1b..000000000000 --- a/src/Tasks/sdk-tasks/DotNetDebTool.cs +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Diagnostics; - -namespace Microsoft.DotNet.Build.Tasks -{ - public class DotNetDebTool : ToolTask - { - [Required] - public string InputDirectory { get; set; } - - [Required] - public string OutputDirectory { get; set; } - - [Required] - public string PackageName { get; set; } - - [Required] - public string PackageVersion { get; set; } - - public string WorkingDirectory { get; set; } - - protected override string ToolName => "package_tool.sh"; - - private string GetInputDir() => $"-i {InputDirectory}"; - - private string GetOutputFile() => $"-o {OutputDirectory}"; - - private string GetPackageName() => $"-n {PackageName}"; - - private string GetPackageVersion() => $"-v {PackageVersion}"; - - protected override MessageImportance StandardOutputLoggingImportance => MessageImportance.High; - - protected override string GenerateFullPathToTool() - { - // if ToolPath was not provided by the MSBuild script - if (string.IsNullOrEmpty(ToolPath)) - { - Log.LogError($"Could not find the Path to {ToolName}"); - - return string.Empty; - } - - return ToolPath; - } - - protected override string GetWorkingDirectory() => WorkingDirectory ?? base.GetWorkingDirectory(); - - protected override string GenerateCommandLineCommands() - { - var commandLineCommands = $"{GetInputDir()} {GetOutputFile()} {GetPackageName()} {GetPackageVersion()}"; - - LogToolCommand($"package_tool.sh {commandLineCommands}"); - - return commandLineCommands; - } - - protected override void LogToolCommand(string message) => base.LogToolCommand($"{GetWorkingDirectory()}> {message}"); - - protected override void LogEventsFromTextOutput(string singleLine, MessageImportance messageImportance) => Log.LogMessage(messageImportance, singleLine, null); - - protected override ProcessStartInfo GetProcessStartInfo(string pathToTool, string commandLineCommands, string responseFileSwitch) - { - var psi = base.GetProcessStartInfo(pathToTool, commandLineCommands, responseFileSwitch); - foreach (var environmentVariableName in new EnvironmentFilter().GetEnvironmentVariableNamesToRemove()) - { - psi.Environment.Remove(environmentVariableName); - } - - return psi; - } - } -} diff --git a/src/Tasks/sdk-tasks/sdk-tasks.InTree.targets b/src/Tasks/sdk-tasks/sdk-tasks.InTree.targets index 5258c0950e48..0ebee175c309 100644 --- a/src/Tasks/sdk-tasks/sdk-tasks.InTree.targets +++ b/src/Tasks/sdk-tasks/sdk-tasks.InTree.targets @@ -17,7 +17,6 @@ - From 67515d83fa44d84ce7159324b92cb554eb57e4e5 Mon Sep 17 00:00:00 2001 From: Nikola Milosavljevic Date: Wed, 4 Dec 2024 02:32:03 +0000 Subject: [PATCH 2/7] New tasks target location --- src/Installer/pkg/dotnet-sdk.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Installer/pkg/dotnet-sdk.csproj b/src/Installer/pkg/dotnet-sdk.csproj index 5f75c5484dd5..8f5334818bd6 100644 --- a/src/Installer/pkg/dotnet-sdk.csproj +++ b/src/Installer/pkg/dotnet-sdk.csproj @@ -35,7 +35,7 @@ - + From b14ec1907fe3b66730ab8186513a17d87868862b Mon Sep 17 00:00:00 2001 From: Nikola Milosavljevic Date: Wed, 4 Dec 2024 17:10:55 +0000 Subject: [PATCH 3/7] Address PR comments --- src/Installer/pkg/dotnet-sdk.csproj | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Installer/pkg/dotnet-sdk.csproj b/src/Installer/pkg/dotnet-sdk.csproj index 8f5334818bd6..a185d71fe7f7 100644 --- a/src/Installer/pkg/dotnet-sdk.csproj +++ b/src/Installer/pkg/dotnet-sdk.csproj @@ -11,7 +11,6 @@ $(RepoRoot)LICENSE.TXT dotnet-sdk SDK - ToolPack From bbba2ab0dd98ac7e86ecb6b6bd95b4342a726de0 Mon Sep 17 00:00:00 2001 From: Nikola Milosavljevic Date: Wed, 4 Dec 2024 21:25:18 +0000 Subject: [PATCH 4/7] Remove unused task --- src/Tasks/sdk-tasks/BuildFPMToolPreReqs.cs | 296 ------------------- src/Tasks/sdk-tasks/sdk-tasks.InTree.targets | 1 - 2 files changed, 297 deletions(-) delete mode 100644 src/Tasks/sdk-tasks/BuildFPMToolPreReqs.cs diff --git a/src/Tasks/sdk-tasks/BuildFPMToolPreReqs.cs b/src/Tasks/sdk-tasks/BuildFPMToolPreReqs.cs deleted file mode 100644 index 40639d3a65c3..000000000000 --- a/src/Tasks/sdk-tasks/BuildFPMToolPreReqs.cs +++ /dev/null @@ -1,296 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using Newtonsoft.Json; - -namespace Microsoft.DotNet.Build.Tasks -{ - /// - /// This task prepares the command line parameters for running a RPM build using FPM tool and also updates the copyright and changelog file tokens. - /// If parses various values from the config json by first reading it into a model and then builds the required string for parameters and passes it back. - /// - /// - public class BuildFPMToolPreReqs : Task - { - [Required] - public string InputDir { get; set; } - - [Required] - public string OutputDir { get; set; } - - [Required] - public string PackageVersion { get; set; } - - [Required] - public string ConfigJsonFile { get; set; } - - [Output] - public string FPMParameters { get; set; } - - public override bool Execute() - { - if (!File.Exists(ConfigJsonFile)) - { - throw new FileNotFoundException($"Expected file {ConfigJsonFile} was not found."); - } - - // Open the Config Json and read the values into the model - string jsonFileText = File.ReadAllText(ConfigJsonFile, Encoding.UTF8); - ConfigJson configJson = JsonConvert.DeserializeObject(jsonFileText); - - // Update the Changelog and Copyright files by replacing tokens with values from config json - UpdateChangelog(configJson, PackageVersion); - UpdateCopyright(configJson); - - // Build the full list of parameters - FPMParameters = BuildCmdParameters(configJson, PackageVersion); - Log.LogMessage(MessageImportance.Normal, "Generated RPM parameters: " + FPMParameters); - - return !Log.HasLoggedErrors; - } - - // Update the tokens in the changelog file from the config Json - private void UpdateChangelog(ConfigJson configJson, string package_version) - { - string changelogFile = Path.Combine(InputDir, "templates", "changelog"); - if (!File.Exists(changelogFile)) - { - throw new FileNotFoundException($"Expected file {changelogFile} was not found."); - } - string str = File.ReadAllText(changelogFile); - str = str.Replace("{PACKAGE_NAME}", configJson.Package_Name); - str = str.Replace("{PACKAGE_VERSION}", package_version); - str = str.Replace("{PACKAGE_REVISION}", configJson.Release.Package_Revision); - str = str.Replace("{CHANGELOG_MESSAGE}", configJson.Release.Changelog_Message); - str = str.Replace("{MAINTAINER_NAME}", configJson.Maintainer_Name); - str = str.Replace("{MAINTAINER_EMAIL}", configJson.Maintainer_Email); - // The date format needs to be like Wed May 17 2017 - str = str.Replace("{DATE}", DateTime.UtcNow.ToString("ddd MMM dd yyyy")); - File.WriteAllText(changelogFile, str); - } - - public void UpdateCopyright(ConfigJson configJson) - { - string copyrightFile = Path.Combine(InputDir, "templates", "copyright"); - if (!File.Exists(copyrightFile)) - { - throw new FileNotFoundException($"Expected file {copyrightFile} was not found."); - } - string str = File.ReadAllText(copyrightFile); - str = str.Replace("{COPYRIGHT_TEXT}", configJson.CopyRight); - str = str.Replace("{LICENSE_NAME}", configJson.License.Type); - str = str.Replace("{LICENSE_TEXT}", configJson.License.Full_Text); - File.WriteAllText(copyrightFile, str); - } - - private string BuildCmdParameters(ConfigJson configJson, string package_version) - { - // Parameter list that needs to be passed to FPM tool: - // -s : is the input source type(dir) --Static - // -t : is the type of package(rpm) --Static - // -n : is for the name of the package --JSON - // -v : is the version to give to the package --ARG - // -a : architecture --JSON - // -d : is for all dependent packages. This can be used multiple times to specify the dependencies of the package. --JSON - // --rpm-os : the operating system to target this rpm --Static - // --rpm-digest : rpm digest algorithm --Static - // --rpm-changelog : the changelog from FILEPATH contents --ARG - // --rpm-summary : it is the RPM summary that shows in the Title --JSON - // --description : it is the description for the package --JSON - // -p : The actual package name (with path) for your package. --ARG+JSON - // --conflicts : Other packages/versions this package conflicts with provided as CSV --JSON - // --directories : Recursively add directories as being owned by the package. --JSON - // --after-install : FILEPATH to the script to be run after install of the package --JSON - // --after-remove : FILEPATH to the script to be run after package removal --JSON - // --license : the licensing name for the package. This will include the license type in the meta-data for the package, but will not include the associated license file within the package itself. --JSON - // --iteration : the iteration to give to the package. This comes from the package_revision --JSON - // --url : url for this package. --JSON - // --verbose : Set verbose output for FPM tool --Static - // : Add all the folder mappings for package_root, docs, man pages --Static - - var parameters = new List - { - "-s dir", - "-t rpm", - string.Concat("-n ", configJson.Package_Name), - string.Concat("-v ", package_version), - string.Concat("-a ", configJson.Control.Architecture) - }; - - // Build the list of dependencies as -d -d - if (configJson.Rpm_Dependencies != null) - { - foreach (RpmDependency rpmdep in configJson.Rpm_Dependencies) - { - if (rpmdep.Package_Name != "") - { - // If no version is specified then the dependency is just the package without >= check - string dependency = rpmdep.Package_Version != "" ? - string.Concat(rpmdep.Package_Name, " >= ", rpmdep.Package_Version) : - rpmdep.Package_Name; - - parameters.Add(string.Concat("-d ", EscapeArg(dependency))); - } - } - } - - // Build the list of owned directories - if (configJson.Directories != null) - { - foreach (string dir in configJson.Directories) - { - if (dir != "") - { - parameters.Add(string.Concat("--directories ", EscapeArg(dir))); - } - } - } - - parameters.Add("--rpm-os linux"); - parameters.Add("--rpm-digest sha256"); - parameters.Add(string.Concat("--rpm-changelog ", - EscapeArg(Path.Combine(InputDir, "templates", "changelog")))); // Changelog File - parameters.Add(string.Concat("--rpm-summary ", EscapeArg(configJson.Short_Description))); - parameters.Add(string.Concat("--description ", EscapeArg(configJson.Long_Description))); - parameters.Add(string.Concat("--maintainer ", - EscapeArg(configJson.Maintainer_Name + " <" + configJson.Maintainer_Email + ">"))); - parameters.Add(string.Concat("--vendor ", EscapeArg(configJson.Vendor))); - parameters.Add(string.Concat("-p ", Path.Combine(OutputDir, configJson.Package_Name + ".rpm"))); - if (configJson.Package_Conflicts != null) - parameters.Add(string.Concat("--conflicts ", - EscapeArg(string.Join(",", configJson.Package_Conflicts)))); - if (configJson.After_Install_Source != null) - parameters.Add(string.Concat("--after-install ", - Path.Combine(InputDir, EscapeArg(configJson.After_Install_Source)))); - if (configJson.After_Remove_Source != null) - parameters.Add(string.Concat("--after-remove ", - Path.Combine(InputDir, EscapeArg(configJson.After_Remove_Source)))); - parameters.Add(string.Concat("--license ", EscapeArg(configJson.License.Type))); - parameters.Add(string.Concat("--iteration ", configJson.Release.Package_Revision)); - parameters.Add(string.Concat("--url ", "\"", EscapeArg(configJson.Homepage), "\"")); - parameters.Add("--verbose"); - - // Map all the payload directories as they need to install on the system - if (configJson.Install_Root != null) - parameters.Add(string.Concat(Path.Combine(InputDir, "package_root/="), configJson.Install_Root)); // Package Files - if (configJson.Install_Man != null) - parameters.Add(string.Concat(Path.Combine(InputDir, "docs", "host/="), configJson.Install_Man)); // Man Pages - if (configJson.Install_Doc != null) - parameters.Add(string.Concat(Path.Combine(InputDir, "templates", "copyright="), configJson.Install_Doc)); // CopyRight File - - return string.Join(" ", parameters); - } - - private string EscapeArg(string arg) - { - var sb = new StringBuilder(); - - bool quoted = ShouldSurroundWithQuotes(arg); - if (quoted) sb.Append("\""); - - for (int i = 0; i < arg.Length; ++i) - { - var backslashCount = 0; - - // Consume All Backslashes - while (i < arg.Length && arg[i] == '\\') - { - backslashCount++; - i++; - } - - // Escape any backslashes at the end of the arg - // This ensures the outside quote is interpreted as - // an argument delimiter - if (i == arg.Length) - { - sb.Append('\\', 2 * backslashCount); - } - // Escape any preceding backslashes and the quote - else if (arg[i] == '"') - { - sb.Append('\\', (2 * backslashCount) + 1); - sb.Append('"'); - } - // Output any consumed backslashes and the character - else - { - sb.Append('\\', backslashCount); - sb.Append(arg[i]); - } - } - - if (quoted) sb.Append("\""); - - return sb.ToString(); - } - - private bool ShouldSurroundWithQuotes(string argument) - { - // Don't quote already quoted strings - if (argument.StartsWith("\"", StringComparison.Ordinal) && - argument.EndsWith("\"", StringComparison.Ordinal)) - { - return false; - } - - // Only quote if whitespace exists in the string - if (argument.Contains(" ") || argument.Contains("\t") || argument.Contains("\n")) - { - return true; - } - - return false; - } - } - - /// - /// Model classes for reading and storing the JSON. - /// - public class ConfigJson - { - public string Maintainer_Name { get; set; } - public string Maintainer_Email { get; set; } - public string Vendor { get; set; } - public string Package_Name { get; set; } - public string Install_Root { get; set; } - public string Install_Doc { get; set; } - public string Install_Man { get; set; } - public string Short_Description { get; set; } - public string Long_Description { get; set; } - public string Homepage { get; set; } - public string CopyRight { get; set; } - public Release Release { get; set; } - public Control Control { get; set; } - public License License { get; set; } - public List Rpm_Dependencies { get; set; } - public List Package_Conflicts { get; set; } - public List Directories { get; set; } - public string After_Install_Source { get; set; } - public string After_Remove_Source { get; set; } - } - - public class Release - { - public string Package_Version { get; set; } - public string Package_Revision { get; set; } - public string Changelog_Message { get; set; } - } - - public class Control - { - public string Architecture { get; set; } - } - - public class License - { - public string Type { get; set; } - public string Full_Text { get; set; } - } - - public class RpmDependency - { - public string Package_Name { get; set; } - public string Package_Version { get; set; } - } -} diff --git a/src/Tasks/sdk-tasks/sdk-tasks.InTree.targets b/src/Tasks/sdk-tasks/sdk-tasks.InTree.targets index 0ebee175c309..d7a75eb6ce39 100644 --- a/src/Tasks/sdk-tasks/sdk-tasks.InTree.targets +++ b/src/Tasks/sdk-tasks/sdk-tasks.InTree.targets @@ -11,7 +11,6 @@ - From 8a8da8738b918cbd2d7e6a7c248925116182a134 Mon Sep 17 00:00:00 2001 From: Nikola Milosavljevic Date: Wed, 4 Dec 2024 23:17:47 +0000 Subject: [PATCH 5/7] Condition debian-specific task --- src/Installer/pkg/dotnet-sdk.csproj | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Installer/pkg/dotnet-sdk.csproj b/src/Installer/pkg/dotnet-sdk.csproj index a185d71fe7f7..b7d502e77e20 100644 --- a/src/Installer/pkg/dotnet-sdk.csproj +++ b/src/Installer/pkg/dotnet-sdk.csproj @@ -111,7 +111,8 @@ InputFiles="$(DebianPostinstTemplateFile)" DestinationFiles="$(DebianPostinstFile)" ReplacementPatterns="%SDK_VERSION%" - ReplacementStrings="$(Version)" /> + ReplacementStrings="$(Version)" + Condition="'$(BuildDebPackage)' == 'true'" /> @@ -120,7 +121,7 @@ - + From 0301e6b08a90ad8bcddcbd58ee44ed12fcd39d17 Mon Sep 17 00:00:00 2001 From: Nikola Milosavljevic Date: Thu, 5 Dec 2024 16:15:42 +0000 Subject: [PATCH 6/7] Few small tweaks --- sdk.sln | 2 +- source-build.slnf | 2 +- src/Installer/pkg/{dotnet-sdk.csproj => dotnet-sdk.proj} | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) rename src/Installer/pkg/{dotnet-sdk.csproj => dotnet-sdk.proj} (99%) diff --git a/sdk.sln b/sdk.sln index d43c3cdf9368..17327fb97628 100644 --- a/sdk.sln +++ b/sdk.sln @@ -497,7 +497,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "finalizer-build", "src\Inst EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "redist-installer", "src\Installer\redist-installer\redist-installer.csproj", "{FAADC193-BA41-449D-97CE-0EF82836046A}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dotnet-sdk", "src\Installer\pkg\dotnet-sdk.csproj", "{8D6A9984-118D-4415-A8FA-AB1F26CF5C44}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dotnet-sdk", "src\Installer\pkg\dotnet-sdk.proj", "{8D6A9984-118D-4415-A8FA-AB1F26CF5C44}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VSTemplateLocator", "src\VSTemplateLocator\VSTemplateLocator.proj", "{0CBA5FB8-71A3-457A-89F3-E52B9602164A}" EndProject diff --git a/source-build.slnf b/source-build.slnf index 25c7b776e163..8ee120cc0e10 100644 --- a/source-build.slnf +++ b/source-build.slnf @@ -22,7 +22,7 @@ "src\\Containers\\Microsoft.NET.Build.Containers\\Microsoft.NET.Build.Containers.csproj", "src\\Containers\\packaging\\package.csproj", "src\\Installer\\redist-installer\\redist-installer.csproj", - "src\\Installer\\pkg\\dotnet-sdk.csproj", + "src\\Installer\\pkg\\dotnet-sdk.proj", "src\\Layout\\redist\\redist.csproj", "src\\Layout\\tool_fsharp\\tool_fsc.csproj", "src\\Layout\\tool_msbuild\\tool_msbuild.csproj", diff --git a/src/Installer/pkg/dotnet-sdk.csproj b/src/Installer/pkg/dotnet-sdk.proj similarity index 99% rename from src/Installer/pkg/dotnet-sdk.csproj rename to src/Installer/pkg/dotnet-sdk.proj index b7d502e77e20..5c0637b084e0 100644 --- a/src/Installer/pkg/dotnet-sdk.csproj +++ b/src/Installer/pkg/dotnet-sdk.proj @@ -1,4 +1,5 @@ + true $(SdkTargetFramework) @@ -124,4 +125,5 @@ + From dfb7abc63d8eafcef9ae7b13ccf36975aa8162bb Mon Sep 17 00:00:00 2001 From: Nikola Milosavljevic Date: Thu, 5 Dec 2024 18:50:22 +0000 Subject: [PATCH 7/7] Inline CalculateLinuxNativeInstallerDependencyVersions target --- src/Installer/pkg/dotnet-sdk.proj | 33 ++++++++++++++++- .../redist-installer/redist-installer.csproj | 1 - ...xNativeInstallerDependencyVersions.targets | 35 ------------------- 3 files changed, 32 insertions(+), 37 deletions(-) delete mode 100644 src/Installer/redist-installer/targets/LinuxNativeInstallerDependencyVersions.targets diff --git a/src/Installer/pkg/dotnet-sdk.proj b/src/Installer/pkg/dotnet-sdk.proj index 5c0637b084e0..28cfb73c2f7f 100644 --- a/src/Installer/pkg/dotnet-sdk.proj +++ b/src/Installer/pkg/dotnet-sdk.proj @@ -36,7 +36,6 @@ - $(ArtifactsBinDir)redist-installer\$(Configuration)\dotnet\ @@ -126,4 +125,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Installer/redist-installer/redist-installer.csproj b/src/Installer/redist-installer/redist-installer.csproj index e6950ceac534..8ce5e6beb297 100644 --- a/src/Installer/redist-installer/redist-installer.csproj +++ b/src/Installer/redist-installer/redist-installer.csproj @@ -38,7 +38,6 @@ - diff --git a/src/Installer/redist-installer/targets/LinuxNativeInstallerDependencyVersions.targets b/src/Installer/redist-installer/targets/LinuxNativeInstallerDependencyVersions.targets deleted file mode 100644 index 79941d045bf0..000000000000 --- a/src/Installer/redist-installer/targets/LinuxNativeInstallerDependencyVersions.targets +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -