-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Build-test.sh handles native test assets #19430
Build-test.sh handles native test assets #19430
Conversation
…E flags for building tests
Remove compileoptions.cmake and push contents into configurecompiler.cmake which contains compiler configuration from repo root CMakeLists.txt
@jashook or @BruceForstall Can one of you kick off the ARM series of tests? |
@dotnet-bot test Windows_NT x86 Release Innerloop Build and Test |
@@ -152,7 +152,7 @@ generate_layout() | |||
# === | |||
# ========================================================================================= | |||
|
|||
build_Tests_internal "Restore_Packages" "${__ProjectDir}/tests/build.proj" "Restore product binaries (build tests)" "-BatchRestorePackages" | |||
build_MSBuild_projects "Restore_Packages" "${__ProjectDir}/tests/build.proj" "Restore product binaries (build tests)" "-BatchRestorePackages" |
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.
After checking you PR I have noticed that default settings in config.json for invoking msbuild
on unixes do not set maxcpucount
parameter what makes all calls non parallel and slows down every msbuild
based operation.
Another problem is related to node reuse. AFAIR node reuse was off by default on Linux, however, this could have changed now. In such case we would need -nodereuse=false
msbuild
parameter. @rainersigwald may know more about current state of node reuse support on Linux.
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.
dotnet build
and dotnet msbuild
unconditionally insert -maxcpucount
into MSBuild's command line.
Node reuse is on by default on all platforms since .NET Core SDK 2.1.300/MSBuild 15.7. Since there are many individual invocations of MSBuild here, I would expect it to provide a performance improvement and wouldn't recommend leaving it off entirely unless there's a pressing need. It might be a good idea to do a dotnet build-server shutdown
at the end of the script (even on error paths), depending on the use case.
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 didn't change any MSBuild logic in this review. That is definitely something we should investigate going forward though.
@dotnet-bot test Windows_NT arm64 Cross Debug Innerloop Build |
@dotnet-bot tests Ubuntu arm Cross Checked no_tiered_compilation_innerloop Build and Test |
@dotnet-bot test Ubuntu arm Cross Checked no_tiered_compilation_innerloop Build and Test |
@dotnet-bot test Windows_NT arm64 Cross Checked Innerloop Build and Test |
@jashook Any thoughts on why the ARMs are taking so long? |
@AaronRobinsonMSFT Looks like the ARM pool has dwindled down to just a couple of clients again so the job queue for them has ballooned, causing long delays. @jashook can get the dropped clients back online. |
I have brought a few of them back online; however, the rest are unreachable and will need an os refresh. |
@AaronRobinsonMSFT No objections. Can you list the configurations you tried in your private testing? For example, do the ARM/ARM64 cross builds build the expected components correctly? |
@RussKeldorph I verified Debug/Checked on Windows and MacOS. I didn't do any validation for ARM/ARM64, but I can. I assume I just pass the ARM flag to the respective build scripts? |
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 good to me after a first pass, want to look at it one more time later today.
Instructions for cross building on Unix are here. Essentially you have to build a rootfs and then build with the |
No, it is not that simple. You need to build rootfs for ARM and ARM64 first and then add |
The easiest way to do these builds currently is by using docker. An example build for arm and arm64 would be: Armhf
Arm64Build product
Build tests
|
It avoids having to go through our rootfs process, which is time consuming and error prone. |
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.
lgtm. I am good without running arm/arm64. As mentioned I think the following are worth validating before checking in:
pri1 run of all jobs
manual run of build-test.sh -priority=1 && runtest.sh ...
Thanks for the work!
Was able to fix the script to do the count check. Ran and passed with priority 1 on MacOS:
|
@dotnet-bot test OSX10.12 x64 Checked Innerloop Build and Test |
@dotnet-bot test Ubuntu arm Cross Checked Innerloop Build and Test |
It appears this broke some test builds. I opened https://github.com/dotnet/coreclr/issues/19540 to track. |
btw, it looks like the trigger phrases used above to try to trigger Windows x86/x64 pri-1 runs didn't work, and the x86 trigger phrase was incorrect. This should work:
|
See #19416
cc @janvorli @jashook @RussKeldorph