-
Notifications
You must be signed in to change notification settings - Fork 44
Add source-build support. #439
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
|
The changes to There are a few issues when the vmr builds this through arcade: 1.
edit: no longer an issue since the branch was changed, and the new target branch already includes a LICENSE file in the root.
@MichaelSimons @premun can you provide some assistance with these issues? |
|
It looks like this repo also needs a source-build CI enabled. |
I can take a look but it won't be until later in the week. I am fully booked today. |
@MichaelSimons that would be great. I'm sure you'll make faster progress debugging this than I would. @directhex can you please review the changes I've made to |
|
Did I break the Windows arm64 builds? |
Yes. The Windows build is split into two parts:
The error you're getting is:
|
|
The core issue is for Windows, the host/target steps are separated out in azure-pipelines.yml: We'll need to translate this logic to MSBuild for source-build to go through in a single pass. |
|
@directhex I've fixed the Windows arm64 CI build issue by making it cross-build aware. CI is passing now. Can you review the changes to |
|
A source-build CI leg should be enabled as well. Instructions can be found at https://github.com/dotnet/source-build/blob/main/Documentation/planning/arcade-powered-source-build/onboarding/ci-onboarding.md. |
|
This will need re-targeting against |
@MichaelSimons it seems like we're in the "The simplest way to onboard". -case with the llvm-project/eng/azure-pipelines.yml Lines 21 to 25 in bd3acea
What |
I've updated the target branch. |
The list of the platforms in the doc is way out of date. It lists platforms that are no longer supported, it uses stale docker image links, etc. I think it is sufficient to add a single non-portable build, say Debian 11. It is unlikely that this repo is going to have distro-specific source build issues. |
I also don't find any repo that uses |
|
@NikolaMilosavljevic - Can you help @tmds get the source-build CI leg enabled? Please make sure there are tracking issues/PRs to ensure the guidelines are up-to-date. TIA. |
|
@tmds it is not necessary to specify any platform. Default platform would be used and that should be sufficient for this repo - https://github.com/dotnet/arcade/blob/e4bd767159fde419b50dd54c6d83e1ef970a68d0/eng/common/templates/jobs/source-build.yml#L42-L46 |
|
@tmds the only other repo building non-managed for source-build, is Here are the job parameters: https://github.com/dotnet/runtime/blob/18321c608e32bc5d13ad0299822cf02ab7ebfd6c/eng/pipelines/runtime-official.yml#L423-L435 Note that @ViktorHofer does |
almalinux-8 makes sense. (dotnet/runtime uses almalinux-8 as a proxy for Red Hat 8.) |
|
@NikolaMilosavljevic it looks like the source build leg gets cancelled after an hour. How can I increase the time-out? |
You can set |
Unless the PR fails at any point (a PR check is failing), Maestro will not add new commits on top of a PR that is currently in validation. So it shouldn't cycle endlessly in the best case. But, failures are common so you can get into a bad spot. I think overall that only enabling the objwriter is the right thing to do for .NET 8. |
They look good. I'll sign-off after source-build leg is scoped down to build just the ObjWriter. |
|
From a personal experience of working with this repo on FreeBSD, the ObjWriter takes minutes (15 at most) to build whereas the entirety of ObjWriter+JITTools+LLVM takes over 2 hours. At 2+ hours this repo alone would add almost 40% to the build time of a source-build (again, for FreeBSD) |
|
As a distro maintainer, it also bothers me that we are rebuilding llvm, which many distros already maintain and package separately. Is there no way we can just build the custom subcomponents like ObjWriter but re-use the llvm packages that distros already maintain? Is it possible to upstream the changes in our llvm fork? |
|
LLVM upstream is an absolute nightmare to work with. Personally, I gave up sending critical Windows build system fixes – they have no reviewers, and are deeply committed to the world’s worst patch submission system (and yes I’m including .diff by email in that comparison). That’s just issues orthogonal to “will our changes actually be considered upstreamable by upstream)
Mono absolutely won’t work with an upstream LLVM, we need our various changes for it to work. I’m not certain for objwriter, but I’m reasonably sure it also won’t work with upstream LLVM (or upstream-with-objwriter-itself-patched-in-since-its-original-code-by-us) – changes are needed in various headers to support it.
|
|
@NikolaMilosavljevic hmm I found no way to pass custom properties into the source build leg via the .yml template so that it ends up being passed to build.sh, is that something we'd need to add in arcade? |
cc @mmitche |
|
In dotnet/runtime, we customize what does and does not get build using the Can we do the same thing here? |
|
Agreed with @jkotas. There are some other options with |
Maybe we could define |
Do you mean |
Yeah, that is the one that's meant for project-level conditioning. The other property would work as well, but would require more changes. |
|
I pushed some changes so we're only building objwriter in the source build job, it completes in ~30 mins now on AzDO. |
|
Thanks everyone for the patience! |
|
Thanks @akoeplinger for getting this in! |
Co-authored-by: Matt Mitchell <[email protected]> Co-authored-by: Alexander Köplinger <[email protected]>
Co-authored-by: Matt Mitchell <[email protected]> Co-authored-by: Alexander Köplinger <[email protected]>
Co-authored-by: Matt Mitchell <[email protected]> Co-authored-by: Alexander Köplinger <[email protected]>
Co-authored-by: Matt Mitchell <[email protected]> Co-authored-by: Alexander Köplinger <[email protected]>
Co-authored-by: Matt Mitchell <[email protected]> Co-authored-by: Alexander Köplinger <[email protected]>
Co-authored-by: Matt Mitchell <[email protected]> Co-authored-by: Alexander Köplinger <[email protected]>
Contributes to dotnet/source-build#1215.
@directhex @MichaelSimons @premun ptal
cc @omajid @ashnaga