-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
Keep response files used for crossgenning the framework #43183
Conversation
Response files are a very useful artifact for reproing various Crossgen / Crossgen2 compilation errors. I propose modifying the test build scripts to retain these artifacts by using the --nocleanup option and by skipping deletion of the entire output folder upon the end of framework compilation. The Crossgen output folder is not listed among the artifacts transferred to Helix so it should be a non-concern w.r.t. Helix throughput. I have also put the cmd and sh versions of the script in sync by adding "large-bubble" and "release" flags to the Unix version. Thanks Tomas
src/tests/build.sh
Outdated
@@ -170,7 +170,7 @@ precompile_coreroot_fx() | |||
__NumProc=$(nproc --all) | |||
fi | |||
|
|||
local crossgenCmd="\"$__DotNetCli\" \"$CORE_ROOT/R2RTest/R2RTest.dll\" compile-framework -cr \"$CORE_ROOT\" --output-directory \"$CORE_ROOT/crossgen.out\" --target-arch $__BuildArch -dop $__NumProc" | |||
local crossgenCmd="\"$__DotNetCli\" \"$CORE_ROOT/R2RTest/R2RTest.dll\" compile-framework -cr \"$CORE_ROOT\" --output-directory \"$CORE_ROOT/crossgen.out\" --large-bubble --release --target-arch $__BuildArch -dop $__NumProc" |
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.
I think the --nocleanup
should be added here too, right?
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, thanks for reminding me!
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.
@trylek, everything in the crossgen.out directory is copied to the helix machines. See
We probably should just avoid using the core_root directory for holding temporary state, and instead put the crossgen.out directory somewhere else.
Thanks David for the heads-up. I'm going to investigate why that's happening as I believe that our current scripts should filter the folder out according to the following clauses:
|
OK, I see the problem, this scripts kicks in earlier, it just defines how to populate CORE_ROOT, not how to filter its contents when zipping it up for Helix. In such case I'll modify it as David suggested, by moving the intermediate crossgen outputs somewhere under artifacts\obj. |
The change looks good, but I'm concerned by the fact that all the tests seem to be failing. Also, the Linux logs don't print out which assemblies were crossgened. You may want to make the outputs consistent between Unix and Windows. |
I concur, I keep trying to figure out what the problem is; it's just somewhat tricky because so far none of my attempts at reproing the issue have been successful, and that includes manually reconstructing the Helix workitem environment based on the payloads and running it locally. I'll fix the logging as you suggest and I'll continue looking but I must admit that right now I'm quite desperate what else should I try. |
I see in the helix log
It looks like we started running CG2 on the Xunit assemblies in Core_Root recently. That's a bit weird to do because we're likely Crossgening them against the framework under test in Core_root. On Helix we run Xunit against the shared framework, which is some other version of the framework libraries. I don't really get how System.Object changed enough to fail Verify_TypeLayout since it's a simple class but maybe we should try excluding Xunit libraries from our framework CG2 script. |
Response files are a very useful artifact for reproing various
Crossgen / Crossgen2 compilation errors. I propose modifying the
test build scripts to retain these artifacts by using the --nocleanup
option and by skipping deletion of the entire output folder upon
the end of framework compilation. The Crossgen output folder is not
listed among the artifacts transferred to Helix so it should be a
non-concern w.r.t. Helix throughput. I have also put the cmd and sh
versions of the script in sync by adding "large-bubble" and "release"
flags to the Unix version.
Thanks
Tomas
/cc: @dotnet/crossgen-contrib