-
Notifications
You must be signed in to change notification settings - Fork 571
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
libjulia: update to 1.8.2 and latest 1.9-DEV #5506
Conversation
bd9e090
to
524d478
Compare
There are errors with the Julia 1.9 snapshot on ARM with glibc. They are in code from JuliaLang/julia#45110 (see this commit) by @vtjnash . On a cursory check it seems to me that perhaps the preprocessor logic in This is the error:
So it is in this code in
So this is GLIBC and linux, and also ARM (which is explicitly handled farther down), but the definition of |
For the record, that was reported in JuliaLang/julia#45400 (comment) (and this is what's currently preventing us from using |
@giordano It may be related, but here it is worse: in the comment you link to, we see a warning about a mismatching type; but here it is an error because something "has no member named" ? |
When // helper function for returning the unw_context_t inside a ucontext_t
// (also used by stackwalk.c)
bt_context_t *jl_to_bt_context(void *sigctx)
{
#ifdef __APPLE__
return (bt_context_t*)&((ucontext64_t*)sigctx)->uc_mcontext64->__ss;
#elif defined(_CPU_ARM_)
// libunwind does not use `ucontext_t` on ARM.
// `unw_context_t` is a struct of 16 `unsigned long` which should
// have the same layout as the `arm_r0` to `arm_pc` fields in `sigcontext`
ucontext_t *ctx = (ucontext_t*)sigctx;
return (bt_context_t*)&ctx->uc_mcontext.arm_r0;
#else
return (bt_context_t*)sigctx;
#endif
} (What that code comment says matches with what I see in the However, despite its name, Anyway, also in Anyway, all in all I am now confused why this code would build on any Linux + glibc + arm (32bit) system? What's the difference in our build here that makes it fail? |
You're assuming Julia v1.8 works on 32-bit arm, we as far as I can see in https://julialang.org/downloads/#current_stable_release we don't have a build for that version. Last version to be built for armv7l is 1.7.3: https://julialang.org/downloads/oldreleases/ |
Well, 1.8.1 does seem to build fine, at least here... But yeah, 1.9-DEV is broken and I kinda assumed that it "should work", and that confused me a lot. But if you are telling me that this is not actually being tested actively, well that explains quite a bit :-). I guess I could just disable ARM 32 bit support for Julia 1.9 for now? Not great but I don't think I'll have time to debug this issue in Julia... Though I could at least open an issue for it on the main Julia repo (should I?) |
Oh and Julia 1.9-DEV also fails to compile on aarch64-linux-gnu ... it is fine with musl though, and other Julia versions and platforms...
|
524d478
to
34c6c51
Compare
I've rebased this now to use Julia 1.8.2, and the latest 1.9-DEV. It would be really good to finish this somehow. If |
Might be an ok-ish solution for the time being, but we need to sort this out before 1.9 is out. Is there an open issue already? |
Huh, I could have sworn I filed an issue about it, but I don't see one now -- and I assume I would have linked here, but GitHub shows no such link, so... I probably never filed it :-(. I'll wait for the results and if it still fails, will file that issue. |
Huh, it seems to be building llvm (also seems it needs a different libuv. Will look more closely when I am back at a computer, not a smartphone) |
Julia 1.9 builds fail on all platforms with
Turns out the builds here end up loading LibUV_jll v2.0.1+5 but the Julia master branch references v2.0.1+11 . Now despite the innocent identical version differing only in the build number, these are built from completely different git commits of libuv (side note: using the build version like that doesn't strike me as a great approach? Perhaps one should consider to adapt something like the "multiply all version digits by 100 to get some wriggling room for updates" for (some) stdlibs, too?) |
9813ae7
to
25dfdd9
Compare
I tried to deal with it by explicitly using Anyway, this also made me wonder if it's good that we use e.g. |
@fingolfin please try merging my wip commit from here: benlorenz@502048c |
4a19180
to
f30fced
Compare
Thanks to @benlorenz for pointing out I had to add |
Here is the ARM issue JuliaLang/julia#47345 |
f30fced
to
6d0cb70
Compare
444c6b2
to
5ced73d
Compare
5ced73d
to
46d0e60
Compare
I see no immediate way to fix the ARM 32 bit issue (the workaround suggested by @vtjnash (or at least how I understood the suggestion) does not seem to work, with the patch, it crashes for me on a Raspberry Pi 4 -- of course the crash might also be due to another, unrelated issue; one could presumably find out by checking the commit before the breaking commit; I plan to do that when I find some time). But in the meantime, Julia master just landed another ABI breaking change in JuliaLang/julia#47170 (see oscar-system/GAP.jl#836), so I have some urgent need to update libjulia_jll and then we could update all our other JLLs using it. Unfortunately that means disabling ARM 32 bit for the time being, but I see no other realistic option right now :-( |
I am not sure if the ABI for 1.8 changed since we made that last
snapshot, but it sure seems sensible to update to a stable release.
Since we are already at 1.8.1 by now, I've picked that.
Also update 1.9-DEV to a fresh release, which needs LLVM 14.