-
Notifications
You must be signed in to change notification settings - Fork 10.3k
Enable ARM64 installers build. (#25579) #30463
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks legit. Does this require an internal verification build❔
I've been running internal builds to verify: latest one is https://dnceng.visualstudio.com/internal/_build/results?buildId=1012303&view=results but I suspect I'll make more changes before I confirm it's verified. |
@dotnet/aspnet-build @NikolaMilosavljevic please take a look at the last two commits. I got the targeting pack building for win-arm64 locally and I think these are all the changes we need to make. I'll do some final version verifications once the internal build is complete: https://dnceng.visualstudio.com/internal/_build/results?buildId=1018153&view=results. |
Directory.Build.props
Outdated
@@ -84,7 +84,8 @@ | |||
<RuntimeInstallerBaseName>aspnetcore-runtime</RuntimeInstallerBaseName> | |||
<TargetingPackInstallerBaseName>aspnetcore-targeting-pack</TargetingPackInstallerBaseName> | |||
|
|||
<!-- Produce targeting pack installers/packages once per major.minor except in extraordinary cases i.e. 3.1.10. --> | |||
<!-- Produce targeting pack installers/packages once per major.minor except in extraordinary cases i.e. 3.1.13 win-arm64. --> | |||
<IsTargetingPackBuilding Condition=" '$(AspNetCorePatchVersion)' == '13' AND '$(TargetArchitecture)' == 'arm64' AND $([MSBuild]::IsOSPlatform('Windows')) ">true</IsTargetingPackBuilding> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are we sure about 13 being the version of the special build?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should be 14
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My bad, I need to rebase on your branding update.
eng/Versions.props
Outdated
@@ -33,7 +33,7 @@ | |||
<!-- TargetingPackVersionPrefix is used by projects, like .deb and .rpm, which use slightly different version formats. --> | |||
<TargetingPackVersionPrefix>$(VersionPrefix)</TargetingPackVersionPrefix> | |||
<!-- Targeting packs do not produce patch versions in servicing builds. No API changes are allowed in patches. --> | |||
<TargetingPackVersionPrefix Condition="'$(IsTargetingPackBuilding)' != 'true'">$(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion).10</TargetingPackVersionPrefix> | |||
<TargetingPackVersionPrefix Condition="'$(IsTargetingPackBuilding)' != 'true'">$(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion).13</TargetingPackVersionPrefix> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would arm64 TP package have ..0 version?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We want to build just the win-arm64 .msi, with a 3.1.0 version - we don't want to build the .nupkg
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@NikolaMilosavljevic Historically, the version of the installer and targeting pack follows whichever servicing patch built it. This is why in the official 3.1.406 SDK, you'll see that the targeting pack is installed under packs\Microsoft.AspNetCore.App.Ref\3.1.10.
@wtgodbe I tried but couldn't easily split the logic controlling building the targeting pack nupkg and the installers. They are all based on IsTargetingPackBuilding
. In fact, the installer build extracts the zip of the targeting pack that was built when IsPackable
is true in the Microsoft.AspNetCore..App.Ref project, which means it also builds the nupkg. I don't want to add additional logic to handle this scenario and I am under the impression that the SDK can choose to ingest just the msi installers and ignore the nupkg. Is that possible @NikolaMilosavljevic?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We could choose not to ingest the new .nupkg in dotnet/installer, but that's manual and risks us messing it up - we'd also have to manually remove it from the drop so it doesn't get published to nuget.org. Maybe the best thing would be to just not publish it - you could add a post-build target that deletes the .nupkg from ArtifactsShippingPackagesDir
before the manifest gets generated, for example.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well actually wait, we do want installer to ingest the .msi, which it knows how to do based on the version of the .nupkg's (Microsoft.AspNetCore.App.Ref
and Microsoft.AspNetCore.App.Ref.Internal
). I think we just want to not publish the .nupkg to nuget.org, meaning it needs to have the same version as the last targeting pack, since installer will still try to restore the .nupkg in future builds (so it should keep getting the 3.1.10 one from nuget.org). Will try to define a concrete plan in email
Changes WiX toolset used to 3.14 to support ARM64 Generates targeting pack from the x86/x64 leg, as it gets produced using a zip that gets generated there. The ARM64 leg now produces all the necessary msi's, exe, and wixlib needed for the installer to generate a bundle.
Looking at the artifacts of the internal build, here are the new artifacts in this build compared to the existing build:
That seems to contain everything we want but note that we do want to ignore the targeting pack zips/tar.gzs |
df99369
to
6355ec6
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why isn't Microsoft.Aspnetcore.App.Ref.Internal
produced? dotnet/installer needs it to find the blob location of the installers
Good question let me check. |
@wtgodbe the Ref.Internal package is now built. |
I mentioned two viable options in our email thread:
Am I correct you're going w/ option (1)❔ |
Correct, there were multiple email threads and the latest decision so far is to go with Option 1. |
Marking this as servicing approved since it's the core-setup change dotnet/core-setup#9124 was approved and this change is part of the overall effort to backport support for win-arm64. |
Hello human! Please make sure you've included the Shiproom Template in a comment or (preferably) the PR description. Also, make sure this PR is not marked as a draft and is ready-to-merge. |
Backporting dda1d33 to release/3.1
Changes WiX toolset used to 3.14 to support ARM64
Generates targeting pack from the x86/x64 leg, as it gets produced using a zip that gets generated there.
The ARM64 leg now produces all the necessary msi's, exe, and wixlib needed for the installer to generate a bundle.
This change is required in addition to dotnet/core-setup#9124 to add support for win-arm64 for the SDK.