Skip to content

x64-hosted crossgen.exe missing in Microsoft.NETCore.App.Runtime.win-arm64 package #50979

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

Closed
AntonLapounov opened this issue Apr 8, 2021 · 10 comments · Fixed by #51004
Closed
Assignees
Labels
area-crossgen2-coreclr blocking Marks issues that we want to fast track in order to unblock other important work untriaged New issue has not been triaged by the area owner

Comments

@AntonLapounov
Copy link
Member

Might be caused by #49906. @jkoritzinsky

D:\workspace\_work\1\s\src\Framework\App.Runtime\src\Microsoft.AspNetCore.App.Runtime.csproj(399,5): error : Could not find crossgen D:\workspace\_work\1\s\.packages\microsoft.netcore.app.runtime.win-arm64\6.0.0-preview.4.21208.6\tools\x64_arm64\crossgen.exe
@ghost ghost added the untriaged New issue has not been triaged by the area owner label Apr 8, 2021
@sebastienros sebastienros added the blocking Marks issues that we want to fast track in order to unblock other important work label Apr 8, 2021
@sebastienros
Copy link
Member

Marking as blocking since aspnet can't ingest new runtimes

@jkoritzinsky
Copy link
Member

I'm investigating now.

@jkoritzinsky jkoritzinsky self-assigned this Apr 8, 2021
@jkoritzinsky
Copy link
Member

This failure is not caused by #49906. The native build still correctly outputs crossgen.exe to the expected location.

@AntonLapounov AntonLapounov changed the title Cross-architecture crossgen.exe missing in Microsoft.NETCore.App.Runtime.win-arm64 package x64-hosted crossgen.exe missing in Microsoft.NETCore.App.Runtime.win-arm64 package Apr 9, 2021
@AntonLapounov
Copy link
Member Author

I just built ARM64 and artifacts\obj\coreclr\windows.x64.* and artifacts\obj\coreclr\Linux.x64.* directories are completely missing.

@jkoritzinsky
Copy link
Member

I just built ./build.cmd clr.runtime -a arm64 and the cross-built crossgen is outputted to artifacts/bin/coreclr/windows.arm64.Debug/x64/crossgen.exe, which is where the cross-targetting crossgen has always been output to.

@AntonLapounov
Copy link
Member Author

You are right, I do have artifacts/bin/coreclr/windows.arm64.Debug/x64/crossgen.exe. I guess the issue is in packaging then. I will try to debug packaging unless you have better ideas.

@jkoritzinsky
Copy link
Member

Packaging was my next thing to look at. Since you've touched it more recently, if you want to take a look that'd be good.

@AntonLapounov
Copy link
Member Author

@jkoritzinsky Packing the x64-hosted crossgen.exe is controlled by @(CoreCLRCrossTargetFiles), which is populated from $(CoreCLRCrossTargetComponentDir) directory in eng\liveBuilds.targets. For debug ARM64 build that directory is artifacts\bin\coreclr\windows.arm64.Debug\x64\sharedFramework\. Before the recent changes we had the crossgen.exe executable and related DLLs in both of these locations (not sure why):

artifacts\bin\coreclr\windows.arm64.Debug\x64\crossgen.exe
artifacts\bin\coreclr\windows.arm64.Debug\x64\sharedFramework\crossgen.exe

However, now we have them only at the former location. If that change was intended, should we remove 'sharedFramework' from the path for CoreCLRCrossTargetComponentDir?

<CoreCLRCrossTargetComponentDir
Condition="'$(CoreCLRCrossTargetComponentDirName)' != ''">$([MSBuild]::NormalizeDirectory('$(CoreCLRArtifactsPath)','$(CoreCLRCrossTargetComponentDirName)','sharedFramework'))</CoreCLRCrossTargetComponentDir>

@jkoritzinsky
Copy link
Member

I did not realize we pulled from the sharedFramework directory. I’ll put out a fix tomorrow to push clrjit and crossgen into the sharedFramework directory even for cross building.

@AntonLapounov
Copy link
Member Author

FWIW, removing sharedFramework\ from the path assigned to the CoreCLRCrossTargetComponentDir property produced the following error:

error NU5100: The assembly 'runtime\x64_arm64\native\jitinterface_x64.dll' is not inside the 'lib' folder and hence it won't be added as a reference when the package is installed into a project. Move it into the 'lib' folder if it needs to be referenced.

because the sharedFramework subdirectory did not contain jitinterface_x64.dll; however, its parent directory does contain that file.

@ghost ghost added the in-pr There is an active PR which will close this issue when it is merged label Apr 9, 2021
@ghost ghost closed this as completed in #51004 Apr 10, 2021
@ghost ghost removed the in-pr There is an active PR which will close this issue when it is merged label Apr 10, 2021
@ghost ghost locked as resolved and limited conversation to collaborators May 10, 2021
This issue was closed.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-crossgen2-coreclr blocking Marks issues that we want to fast track in order to unblock other important work untriaged New issue has not been triaged by the area owner
Projects
None yet
4 participants