-
Notifications
You must be signed in to change notification settings - Fork 103
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
Add images for cross-compiling against Ubuntu 18.04, not 16.04 #857
Add images for cross-compiling against Ubuntu 18.04, not 16.04 #857
Conversation
There are cases where the 16.04 crossroot is too old, e.g. we cannot compile LLVM 16+ because the libstdc++ version in Ubuntu 16.04 is too old. If we are careful in checking the versioned symbols consumed from libstdc++ and glibc, we can build against a newer base OS without significantly altering our supported base OS version (e.g. objwriter compiled against this image still supports every OS on the .NET 8.0 support matrix, and a few beyond it such as Amazon Linux 2.0).
This reverts commit 779cbb8.
This would be useful for dotnet/jitutils#370 as well. |
… into cbl-mariner-18.04-crossroots
This is failing because the cached |
This is failing because the cached
Bingo. |
Yes, looks like it. Last time I hit a caching issue @mthalman suggested to make a no-op change to the Dockerfile whose cache you want to invalidate, for testing in ci. Then once it's green you can undo the no-op change and merge, and @mthalman will ensure it gets a non-cached build in offiacl ci. Does that sound right @mthalman? |
Sounds like last time I had to invalidate a low-level image (to add s390x or ppc64el or somesuch) |
And I think GH is down. I'm getting failures on git push and trying to add comments to this PR. So sounds like I won't get this sorted today. |
Yes. And actually, you might as well make the no-op change permanent. That will automatically invalidate the cache on the internal build too. So I would suggest just adding whitespace to the Dockerfile that needs to get rebuilt. Not pretty, I know. |
Not even in the top 100 grossest hacks I'll have committed to disk during my career |
Well it got there in only 5 hours |
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, thank you!
There are cases where the 16.04 crossroot is too old, e.g. we cannot compile LLVM >16 because the libstdc++ version in Ubuntu 16.04 is too old. If we are careful in checking the versioned symbols consumed from libstdc++ and glibc, we can build against a newer base OS without significantly altering our supported base OS version (e.g. objwriter compiled against this image still supports every OS on the .NET 8.0 support matrix, and a few beyond it such as Amazon Linux 2.0).
x64 build is blocked on dotnet/arcade#13277