-
Notifications
You must be signed in to change notification settings - Fork 1k
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
Update CI from ubuntu 16.04 (EOL) to 19.04 #1337
Conversation
@gnzlbg: no appropriate reviewer found, use r? to override |
Let's see if including the |
So that did not work, that header cannot be included directly. |
It seems |
That would happen if the kernel does not define |
Yes, that appears to be the case: https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=2dba5ce7b8115d6a2789bf279892263621088e74;hp=5f3b183d198b39ca993a41aadb02bddd9fde078d Shows that "pseudo-system calls" that define ranges, and unused / reserved system calls, are skipped, which were not being skipped before. So code that uses them now fails to compile with newer glibc versions. |
AFAICT, that's a backwards incompatible breaking change from glibc, although maybe the behavior was broken before already. |
cc @fweimer |
Seems it's not present for some architectures:
|
@mati865 the error is (e.g. on
This means that |
The same happens in other targets with the reserved/unused syscalls. |
So most build jobs are green now. I have no idea why s390x is failing, the error message is weird. For example, see:
Notice how the first error says that |
I was also puzzled by this one. Definitions seems to be absent though: |
Most build jobs fail again with ubuntu 19.04, the errors are of the form:
The incorrect const and field size are easily fixable, but the incorrect function pointers means that Rust points to a different function than C in our tests. Maybe a different version of glibc is being pulled via the rust standard library than the one C is using ? No idea yet. Also, the s390x build job fails with:
but AFAICT ubuntu 19.04 ships glibc 2.29 =/ |
So everything is green now, except for the wasi build jobs which still fail with target not found (cc @alexcrichton @sunfishcode) and the android build jobs which are allowed to fail. |
c5af052
to
7071226
Compare
So I've pulled the renaming changes only from #1342 . |
Now the documentation build job fails because bitrig was remove in the latest nightly, which was just released. Perfect timing. |
@bors: r+ |
📌 Commit 8eceb62 has been approved by |
Update CI from ubuntu 16.04 (EOL) to 19.04 Closes #1333 .
This was, by far, the largest game of code golf I've ever played. |
☀️ Test successful - checks-cirrus, checks-travis, status-appveyor |
Thank you @mati865 for the feedback and help with the changes! |
@gnzlbg FWIW if this happens in the future I'd recommend simply disabling targets on CI. I think it's best to keep the wheels turning and the problems fixed here in general should be inconsequential because the current state of the crate isn't exactly full of bugs to the point that it's unusable. By enabling PRs to land quicker it can help reduce some stress from landing big changes/refactorings like this all at the same time. |
@alexcrichton The Ubuntu version that was being used went end-of-life and the Docker images for it were removed, so all build jobs using it (almost all of them) started failing. That is, we would have had to turn off CI completely. I suppose we could have done that, to be able to continue merging PRs without any testing on CI, but I don't think we should have done a new release until CI was up again, and at that point, merged PRs might have introduced errors, that I would have had to fix in the PR updating CI, so... I don't know if that would have been much better. |
@gnzlbg oh sure yeah I understand but it probably wasn't too hard to get the major targets working again on CI and the main difficulty was getting everything working, right? I was mostly just saying that this could probably get staged where the main targets are brought back up and then the remaining targets would be follow-ups. |
Well, maybe? The part that took most of the time here was getting x86_64 and aarch64 gnu Linux targets working (the Ubuntu upgrade updates glibc version, so mostly only the gnu targets were affected by it). This PR did not fix Android (there is a PR open for this) nor Emscripten, which are still broken, but getting the tests to pass on the Linux gnu targets without breaking the other targets more required splitting the Linux bits from the libc-test/build.rs, which was done as simple as possible (there are a million fixmes, which are now being cleaned up in other PRs). The other Linux targets (e.g. the musl ones) kind of just worked, or were easy to fix. The sparc64 and s390x fixes were probably unnecessary and could have been done later, but they weren't very time consuming either. What costed most of the time is having to test this on travis-ci, which gives me a 30min iteration time, because the docker containers that we have do not work on MacOS X. |
Ah ok, well whatever works works! Not being able to test locally I can also see would significantly complicate things... |
Closes #1333 .