diff --git a/.azure/pipelines/ci.yml b/.azure/pipelines/ci.yml index 704f4cc709ee19751aab7f26909f86ec47090025..720fac9109557a204de5b6ce5e96f5afc185bc13 100644 --- a/.azure/pipelines/ci.yml +++ b/.azure/pipelines/ci.yml @@ -389,7 +389,6 @@ stages: --no-build-nodejs --no-build-java -p:OnlyPackPlatformSpecificPackages=true - -p:AssetManifestFileName=aspnetcore-Linux_x64.xml $(_BuildArgs) $(_InternalRuntimeDownloadArgs) displayName: Run build.sh @@ -458,17 +457,26 @@ stages: jobName: Linux_arm64_build jobDisplayName: "Build: Linux ARM64" agentOs: Linux - buildArgs: - --arch arm64 - --all - --pack - --no-build-nodejs - --no-build-java - -p:OnlyPackPlatformSpecificPackages=true - -p:AssetManifestFileName=aspnetcore-Linux_arm64.xml - $(_BuildArgs) - $(_PublishArgs) - $(_InternalRuntimeDownloadArgs) + steps: + - script: ./eng/build.sh + --ci + --arch arm64 + --pack + --all + --no-build-nodejs + --no-build-java + -p:OnlyPackPlatformSpecificPackages=true + $(_BuildArgs) + $(_InternalRuntimeDownloadArgs) + displayName: Run build.sh + - script: git clean -xfd src/**/obj/; + ./dockerbuild.sh rhel --ci --nobl --arch arm64 --build-installers --no-build-deps --no-build-nodejs + -p:OnlyPackPlatformSpecificPackages=true -p:BuildRuntimeArchive=false -p:LinuxInstallerType=rpm + -p:AssetManifestFileName=aspnetcore-Linux_arm64.xml + $(_BuildArgs) + $(_PublishArgs) + $(_InternalRuntimeDownloadArgs) + displayName: Build RPM installers installNodeJs: false artifacts: - name: Linux_arm64_Logs diff --git a/eng/Build.props b/eng/Build.props index d8e8b0bc82407787a0214f589c02fb7dae84b26f..4b25c964ecee401ef3b196f4a286a72a109e465a 100644 --- a/eng/Build.props +++ b/eng/Build.props @@ -103,7 +103,7 @@ <ProjectToBuild Include="$(RepoRoot)src\Installers\Windows\SharedFrameworkLib\SharedFrameworkLib.wixproj" AdditionalProperties="Platform=arm64" /> </ItemGroup> - <ItemGroup Condition="'$(BuildInstallers)' == 'true' AND '$(TargetRuntimeIdentifier)' == 'linux-x64'"> + <ItemGroup Condition="'$(BuildInstallers)' == 'true' AND ('$(TargetRuntimeIdentifier)' == 'linux-x64' OR '$(TargetRuntimeIdentifier)' == 'linux-arm64')"> <ProjectToBuild Condition=" '$(LinuxInstallerType)' == 'deb' " Include="$(RepoRoot)src\Installers\Debian\**\*.*proj" /> <ProjectToBuild Condition=" '$(LinuxInstallerType)' == 'rpm' " diff --git a/src/Installers/Rpm/Directory.Build.props b/src/Installers/Rpm/Directory.Build.props index 17abde691b66278282b8caf6425c414cf23c2d48..b436fc469b10fb94daf0fa4ba17e21e4f8e9193b 100644 --- a/src/Installers/Rpm/Directory.Build.props +++ b/src/Installers/Rpm/Directory.Build.props @@ -9,9 +9,15 @@ <IntermediateOutputPath>$(IntermediateOutputPath)$(TargetRuntimeIdentifier)\</IntermediateOutputPath> <OutputPath>$(InstallersOutputPath)</OutputPath> + <CblMariner1VersionSuffix>-cm.1</CblMariner1VersionSuffix> + <CblMariner2VersionSuffix>-cm.2</CblMariner2VersionSuffix> + <!-- All installers are shipping assets. --> <IsShipping>true</IsShipping> <IsPackable>true</IsPackable> - </PropertyGroup> + <!-- RPM files are platform-specific and should be named appropriately. --> + <RpmArch Condition=" '$(TargetArchitecture)' == 'x64' ">x64</RpmArch> + <RpmArch Condition=" '$(TargetArchitecture)' == 'arm64' ">aarch64</RpmArch> + </PropertyGroup> </Project> diff --git a/src/Installers/Rpm/Directory.Build.targets b/src/Installers/Rpm/Directory.Build.targets index ebbdb0babab8469f5ace78c534ae51b9d5614e62..44b87eea5ac589f6887f4e1253173797696a0172 100644 --- a/src/Installers/Rpm/Directory.Build.targets +++ b/src/Installers/Rpm/Directory.Build.targets @@ -18,7 +18,7 @@ <Target Name="PrepareForBuild"> <MakeDir Directories="$(IntermediateOutputPath)" /> - <Error Text="Currently only linux-x64 is supported by Rpm installers." Condition=" '$(TargetRuntimeIdentifier)' != 'linux-x64' " /> + <Error Text="Currently only linux-x64 and linux-arm64 are supported by Rpm installers." Condition=" '$(TargetRuntimeIdentifier)' != 'linux-x64' AND '$(TargetRuntimeIdentifier)' != 'linux-arm64'" /> <Error Text="Missing required property: RpmPackageInstallRoot" Condition=" '$(RpmPackageInstallRoot)' == '' " /> <Error Text="Missing required property: PackageContentRoot" Condition=" '$(PackageContentRoot)' == '' " /> @@ -37,6 +37,11 @@ <Target Name="Pack" /> <Target Name="RpmBuild" DependsOnTargets="$(RpmBuildDependsOn)"> + <PropertyGroup> + <CblMariner1TargetPath>$(InstallersOutputPath)$(CblMarinerBaseName)$(CblMariner1VersionSuffix)$(CblMarinerExtension)</CblMariner1TargetPath> + <CblMariner2TargetPath>$(InstallersOutputPath)$(CblMarinerBaseName)$(CblMariner2VersionSuffix)$(CblMarinerExtension)</CblMariner2TargetPath> + </PropertyGroup> + <!-- Create layout: Create changelog --> <PropertyGroup> <ChangeLogProps>DATE=$([System.DateTime]::UtcNow.ToString(ddd MMM dd yyyy))</ChangeLogProps> @@ -51,10 +56,6 @@ <GenerateFileFromTemplate TemplateFile="$(MSBuildThisFileDirectory)changelog.in" OutputPath="$(GeneratedChangeLog)" Properties="$(ChangeLogProps)" /> <!-- Run fpm --> - <PropertyGroup> - <RpmArch Condition=" '$(TargetArchitecture)' == 'x64' ">amd64</RpmArch> - </PropertyGroup> - <ItemGroup> <FpmArgs Include="--verbose" /> <FpmArgs Include="--input-type=dir" /> @@ -79,12 +80,12 @@ <Exec Command="scl enable rh-ruby25 'fpm @(FpmArgs,' ')'" /> <Copy SourceFiles="$(TargetPath)" - DestinationFiles="$(CblMarinerTargetPath)" + DestinationFiles="$(CblMariner1TargetPath)" OverwriteReadOnlyFiles="True" SkipUnchangedFiles="False" UseHardlinksIfPossible="False" /> - <Message Text="$(TargetPath) -> $(CblMarinerTargetPath)" Importance="high" /> + <Message Text="$(TargetPath) -> $(CblMariner1TargetPath)" Importance="high" /> <Copy SourceFiles="$(TargetPath)" DestinationFiles="$(CblMariner2TargetPath)" diff --git a/src/Installers/Rpm/Runtime/Rpm.Runtime.rpmproj b/src/Installers/Rpm/Runtime/Rpm.Runtime.rpmproj index e24ebf037af145813b856413479bd6ad245f1430..5e0427aea7f8beaa35061fba0579f362d83b5c3c 100644 --- a/src/Installers/Rpm/Runtime/Rpm.Runtime.rpmproj +++ b/src/Installers/Rpm/Runtime/Rpm.Runtime.rpmproj @@ -1,5 +1,5 @@ <!-- - This project produces a generic RPM installer for Linux x64 platforms only. + This project produces a generic RPM installer for Linux x64/arm64 platforms only. --> <Project DefaultTargets="Build"> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" /> @@ -12,11 +12,9 @@ <Import Project="..\Rpm.Runtime.Common.targets" /> <PropertyGroup> - <TargetFileName>$(RuntimeInstallerBaseName)-$(SharedFxVersion)-x64.rpm</TargetFileName> - <CblMarinerTargetFileName>$(RuntimeInstallerBaseName)-$(SharedFxVersion)-cm.1-x64.rpm</CblMarinerTargetFileName> - <CblMariner2TargetFileName>$(RuntimeInstallerBaseName)-$(SharedFxVersion)-cm.2-x64.rpm</CblMariner2TargetFileName> + <TargetFileName>$(RuntimeInstallerBaseName)-$(SharedFxVersion)-$(RpmArch).rpm</TargetFileName> <TargetPath>$(InstallersOutputPath)$(TargetFileName)</TargetPath> - <CblMarinerTargetPath>$(InstallersOutputPath)$(CblMarinerTargetFileName)</CblMarinerTargetPath> - <CblMariner2TargetPath>$(InstallersOutputPath)$(CblMariner2TargetFileName)</CblMariner2TargetPath> + <CblMarinerBaseName>$(RuntimeInstallerBaseName)-$(SharedFxVersion)</CblMarinerBaseName> + <CblMarinerExtension>-$(RpmArch).rpm</CblMarinerExtension> </PropertyGroup> </Project> diff --git a/src/Installers/Rpm/TargetingPack/Rpm.TargetingPack.rpmproj b/src/Installers/Rpm/TargetingPack/Rpm.TargetingPack.rpmproj index 76ef621aa84dc781da454033adf28455e98d2f9f..a29db936bd7946dac58b94c596e30747f6c8a548 100644 --- a/src/Installers/Rpm/TargetingPack/Rpm.TargetingPack.rpmproj +++ b/src/Installers/Rpm/TargetingPack/Rpm.TargetingPack.rpmproj @@ -29,12 +29,10 @@ <Import Project="$(MSBuildToolsPath)\Microsoft.Common.targets" /> <PropertyGroup> - <TargetFileName>$(TargetingPackInstallerBaseName)-$(TargetingPackVersion).rpm</TargetFileName> - <CblMarinerTargetFileName>$(TargetingPackInstallerBaseName)-$(TargetingPackVersion)-cm.1.rpm</CblMarinerTargetFileName> - <CblMariner2TargetFileName>$(TargetingPackInstallerBaseName)-$(TargetingPackVersion)-cm.2.rpm</CblMariner2TargetFileName> + <TargetFileName>$(TargetingPackInstallerBaseName)-$(TargetingPackVersion)-$(RpmArch).rpm</TargetFileName> <TargetPath>$(InstallersOutputPath)$(TargetFileName)</TargetPath> - <CblMarinerTargetPath>$(InstallersOutputPath)$(CblMarinerTargetFileName)</CblMarinerTargetPath> - <CblMariner2TargetPath>$(InstallersOutputPath)$(CblMariner2TargetFileName)</CblMariner2TargetPath> + <CblMarinerBaseName>$(TargetingPackInstallerBaseName)-$(TargetingPackVersion)</CblMarinerBaseName> + <CblMarinerExtension>-$(RpmArch).rpm</CblMarinerExtension> <PackageVersion>$(TargetingPackVersionPrefix)</PackageVersion>