-
Notifications
You must be signed in to change notification settings - Fork 10.2k
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
Working ANCM arm64 installers #39523
Changes from 46 commits
2587461
20c5271
a1444a1
f6059c7
9d20f11
82eb7c2
f020945
7f4b81e
79b346a
2b476e5
429017b
c8a6665
976adf7
9f94eb0
2c1cd63
464a822
6d3b721
7d03c74
e63ee2b
90a4431
a7bdf70
e6e926c
43231e9
3d0208b
3c86ef1
aa19911
267311c
558cce9
273c401
50d7945
1e8ab38
4e5938d
f5cb1cd
49bad50
e1ae8d8
29cfe26
4220ab4
aa54fd5
7d2e895
f80b37d
85892c7
339a26c
0eedb98
a37bad2
579f6d0
94d0fc9
d697b49
dd739e6
d11c001
1ab85dd
fae1c12
3d1cee8
0089538
54c3d8a
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
{ | ||
"solution": { | ||
"path": "..\\..\\..\\..\\AspNetCore.sln", | ||
"projects" : [ | ||
"src\\Installers\\Windows\\AspNetCoreModule-Setup\\CustomAction\\aspnetcoreCA.vcxproj", | ||
"src\\Installers\\Windows\\AspNetCoreModule-Setup\\IIS-Setup\\iisca\\lib\\iisca.vcxproj", | ||
"src\\Installers\\Windows\\AspNetCoreModule-Setup\\IIS-Setup\\IIS-Common\\lib\\IISSetup.CommonLib.vcxproj" | ||
] | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -31,15 +31,16 @@ | |
<?define AspNetCoreTraceProviderValue = "65536" ?> | ||
<?define AspNetCoreModuleName = "AspNetCoreModuleV2" ?> | ||
|
||
<?if $(var.Platform) = "x64" ?> | ||
<?if $(var.Platform) = "x86" ?> | ||
<?define SchemaGuid = "e629b31a-3d56-4b5c-959c-586fc1c55599" ?> | ||
<?define AspNetCoreV2ProgramFilesTargetPath = "$(var.AspNetCoreV2WoW64.TargetPath)" ?> | ||
<?define AspNetCoreV2HandlerProgramFilesTargetPath = "$(var.AspNetCoreV2HandlerWoW64.TargetPath)" ?> | ||
<?else ?> | ||
<!-- REVIEW does arm64 need to be different than x64 for anything?--> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
<?define SchemaGuid = "ab582af2-d6c0-43f7-8412-76a19c65d7f2" ?> | ||
<?define SchemaGuid32 = "e629b31a-3d56-4b5c-959c-586fc1c55599" ?> | ||
<?define AspNetCoreV2ProgramFilesTargetPath = "$(var.AspNetCoreV2.TargetPath)" ?> | ||
<?define AspNetCoreV2HandlerProgramFilesTargetPath = "$(var.AspNetCoreV2Handler.TargetPath)" ?> | ||
<?else ?> | ||
<?define SchemaGuid = "e629b31a-3d56-4b5c-959c-586fc1c55599" ?> | ||
<?define AspNetCoreV2ProgramFilesTargetPath = "$(var.AspNetCoreV2WoW64.TargetPath)" ?> | ||
<?define AspNetCoreV2HandlerProgramFilesTargetPath = "$(var.AspNetCoreV2HandlerWoW64.TargetPath)" ?> | ||
<?endif ?> | ||
|
||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:dep="http://schemas.microsoft.com/wix/DependencyExtension"> | ||
|
@@ -56,7 +57,7 @@ | |
Manufacturer="!(loc.Manufacturer)" | ||
Compressed="yes" | ||
InstallPrivileges="elevated" | ||
InstallerVersion="400" | ||
HaoK marked this conversation as resolved.
Show resolved
Hide resolved
|
||
InstallerVersion="$(var.ANCMInstallerVersion)" | ||
Platform="$(var.PlatformValue)" /> | ||
|
||
<Media Id="1" Cabinet="aspnetcoremodule.cab" EmbedCab="yes" CompressionLevel="high"/> | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -27,9 +27,12 @@ | |
<?if $(var.Platform) = "x64" ?> | ||
<?define AspNetCoreV2ProgramFilesTargetPath = "$(var.AspNetCoreV2.TargetPath)" ?> | ||
<?define AspNetCoreV2HandlerProgramFilesTargetPath = "$(var.AspNetCoreV2Handler.TargetPath)" ?> | ||
<?else ?> | ||
<?elseif $(var.Platform) = "x86" ?> | ||
<?define AspNetCoreV2ProgramFilesTargetPath = "$(var.AspNetCoreV2WoW64.TargetPath)" ?> | ||
<?define AspNetCoreV2HandlerProgramFilesTargetPath = "$(var.AspNetCoreV2HandlerWoW64.TargetPath)" ?> | ||
<?elseif $(var.Platform) = "arm64" ?> | ||
<?define AspNetCoreV2ProgramFilesTargetPath = "$(var.AspNetCoreV2ARM64.TargetPath)" ?> | ||
<?define AspNetCoreV2HandlerProgramFilesTargetPath = "$(var.AspNetCoreV2HandlerARM64.TargetPath)" ?> | ||
<?endif ?> | ||
|
||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:dep="http://schemas.microsoft.com/wix/DependencyExtension"> | ||
|
@@ -46,7 +49,7 @@ | |
Manufacturer="!(loc.Manufacturer)" | ||
Compressed="yes" | ||
InstallPrivileges="elevated" | ||
InstallerVersion="400" | ||
InstallerVersion="$(var.ANCMInstallerVersion)" | ||
Platform="$(var.PlatformValue)" /> | ||
|
||
<Media Id="1" Cabinet="aspnetcoremodule.cab" EmbedCab="yes" CompressionLevel="high"/> | ||
|
@@ -85,12 +88,14 @@ | |
<?endif ?> | ||
|
||
<!-- also prevent install of 64-bit product on 32-bit machine --> | ||
<?if $(var.Platform) = "x64"?> | ||
<?if $(var.Platform) = "x64" OR $(var.Platform) = "arm64"?> | ||
<Condition Message="!(loc.LaunchCondition_32BIT)"> | ||
<![CDATA[(Installed And NOT PATCH) Or VersionNT64]]> | ||
</Condition> | ||
<?endif ?> | ||
|
||
<!-- REVIEW need arm64 checks too? --> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
|
||
<Property Id="ALLUSERS">1</Property> | ||
|
||
<!-- Detect IIS version and require 7.5 --> | ||
|
@@ -215,6 +220,50 @@ | |
</Directory> | ||
</Directory> | ||
<?endif ?> | ||
|
||
<!-- ARM64 Support --> | ||
<?if $(var.Platform) = "arm64" ?> | ||
<Component Id="C_DiscoverabilityKeyARM64" Guid="2eeb90e8-28d0-4543-9c2f-843b03bd6d05" Win64="no"> | ||
<RegistryKey Root="HKLM" Key="$(var.DiscoverabilityKeyRoot)"> | ||
<RegistryKey Key="$(var.ProductShortName)"> | ||
<RegistryValue Type="integer" Name="Install" Value="1" /> | ||
<RegistryValue Type="string" Name="Version" Value="$(var.ANCMMsiVersion)" /> | ||
</RegistryKey> | ||
</RegistryKey> | ||
</Component> | ||
|
||
<Directory Id="$(var.ProgramFilesFolder32)"> | ||
<Directory Id="IISModuleDirectory32" Name="IIS"> | ||
<Directory Id="INSTALLLOCATION32" ShortName="ANCM" Name="Asp.Net Core Module"> | ||
<Directory Id="VersionDir32" Name="$(var.ProductVersionString)" SourceName="Arm64Only" > | ||
<Component Id="AspNetCoreModuleV2.arm64" Guid="1b8ecba0-c002-442a-92c0-0fa9c0f21df4" Win64="no"> | ||
<File Id="AspNetCoreModuleV2Dll.arm64" | ||
Name="aspnetcorev2.dll" | ||
Source="$(var.AspNetCoreV2ARM64.TargetPath)" | ||
DiskId="1" | ||
Vital="yes"> | ||
</File> | ||
<RemoveFile Id="AspNetCoreModuleV2Dll.arm64_Remove" Name="aspnetcorev2.dll" On="install" /> | ||
<RegistryKey Root="HKLM" Key="SYSTEM\CurrentControlSet\Services\EventLog\Application\$(var.ProductShortName)"> | ||
<RegistryValue Name="EventMessageFile" Type="expandable" Value="[#AspNetCoreModuleV2Dll.arm64]"/> | ||
<RegistryValue Name="TypesSupported" Type="integer" Value="7"/> | ||
</RegistryKey> | ||
</Component> | ||
<Directory Id="HandlerVersionDir32" Name="$(var.ANCMFolderVersion)" SourceName="Arm64Only"> | ||
<Component Id="AspNetCoreModuleHandler.arm64" Guid="d927e5d3-c8b2-400c-b85c-ae5c2772d6c3" Win64="no"> | ||
<File Id="AspNetCoreModuleHandlerDll.arm64" | ||
Name="aspnetcorev2_outofprocess.dll" | ||
Source="$(var.AspNetCoreV2HandlerARM64.TargetPath)" | ||
DiskId="1" | ||
Vital="yes"> | ||
</File> | ||
</Component> | ||
</Directory> | ||
</Directory> | ||
</Directory> | ||
</Directory> | ||
</Directory> | ||
<?endif ?> | ||
</Directory> | ||
|
||
<!-- Feature Definition --> | ||
|
@@ -228,6 +277,11 @@ | |
<ComponentRef Id="AspNetCoreModuleV2.wow"/> | ||
<ComponentRef Id="AspNetCoreModuleHandler.wow"/> | ||
<?endif ?> | ||
<?if $(var.Platform) = "arm64" ?> | ||
<ComponentRef Id="C_DiscoverabilityKeyARM64"/> | ||
<ComponentRef Id="AspNetCoreModuleV2.arm64"/> | ||
<ComponentRef Id="AspNetCoreModuleHandler.arm64"/> | ||
<?endif ?> | ||
</Feature> | ||
|
||
<!-- User Interface --> | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -70,5 +70,20 @@ | |
<ReferenceOutputAssembly>false</ReferenceOutputAssembly> | ||
<SetPlatform>Platform=Win32</SetPlatform> | ||
</ProjectReference> | ||
|
||
<ProjectReference Include="$(_ServerIISBasePath)AspNetCoreModuleV2\AspNetCore\AspNetCore.vcxproj"> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nit: This file is much more verbose than it needs to be. Could we please switch to using attributes on the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If you tell me what you want to do here, I'm happy to clean that up the next time I do an installers PR There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. e.g. for the last
|
||
<Name>AspNetCoreV2ARM64</Name> | ||
<Private>True</Private> | ||
<DoNotHarvest>True</DoNotHarvest> | ||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly> | ||
<SetPlatform>Platform=ARM64</SetPlatform> | ||
</ProjectReference> | ||
<ProjectReference Include="$(_ServerIISBasePath)AspNetCoreModuleV2\OutOfProcessRequestHandler\OutOfProcessRequestHandler.vcxproj"> | ||
<Name>AspNetCoreV2HandlerARM64</Name> | ||
<Private>True</Private> | ||
<DoNotHarvest>True</DoNotHarvest> | ||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly> | ||
<SetPlatform>Platform=ARM64</SetPlatform> | ||
</ProjectReference> | ||
</ItemGroup> | ||
</Project> |
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.
Could you look at recent builds of 'main' w/o this change and let us know whether this significantly slows down the job❔ This is often the longest job in official builds and we need to be careful about build perf regressions.
More generally, the problems you hit earlier indicate a wider problem w/ up-to-date (not fast up-to-date) checks in our native projects. The native project references shouldn't cause any rebuilds of the work done in earlier steps. Please file a fairly urgent issue to get to the root of this.
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.
Sure filed #40486
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.
The build installers step only takes 5 minutes in total, in a main build today it looks like it took 4:41, so not talking about a lot of time since there's only a handful of cpp files in the installers, https://dev.azure.com/dnceng/public/_build/results?buildId=1638321&view=logs&j=1b89928a-2219-5ef9-602f-f95beb3da4dc was the reference build
Looks like there might still be a race in here, since a second build looks like it failed after I just removed the artifacts from the yml
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.
@dougbu any ideas why the installers build ends up calling clean on the arm64 pdbs, looks like this is what causes the sporadic problem where the iiscommon.pdb is missing: There doesn't appear to even be any special arm64 settings in the vcxproj: https://github.com/dotnet/aspnetcore/blob/haok/arm64/src/Installers/Windows/AspNetCoreModule-Setup/IIS-Setup/IIS-Common/lib/IISSetup.CommonLib.vcxproj
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.
Adding
@(Clean)
items isn't the same thing as executing theClean
target. Do you see matches for$target Clean
in your binary log❔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.
Okay I think the issue is the arm64 references are not behaving like the existing x64/x86, I'm not sure why, I added them just like the other ones: in Directory.Build.props
aspnetcore/src/Installers/Windows/AspNetCoreModule-Setup/Directory.Build.props
Line 74 in a37bad2
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.
Yeah something really wonky is going on, there's multiple arm64/ARM64 outputs now, platform is case sensitive?
Looks like my change from Win32/x86 also resulted in an 5th platform too so it seems to be producing x64, x86, Win32, arm64, ARM64
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.
Guessing this is the result of letting everything != arm go through, I'm reverting that change I guess