-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
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
LibGit2: ABI update for 1.4.0 (and later) #45411
Conversation
Yggdrasil PR to build latest libgit2 (1.4.3) is opened at JuliaPackaging/Yggdrasil#4930 |
So if I understand the process, now that @giordano has merged the Yggdrasil PR, I can update the dependency here. |
Yes! |
@@ -9,7 +9,7 @@ Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb" | |||
Artifacts = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" | |||
|
|||
[compat] | |||
julia = "1.8" | |||
julia = "1.9" |
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 wasn't entirely sure about that, but it seemed like it needed to match the change you made in the other PR.
I think you have to change also the sonames at julia/stdlib/LibGit2_jll/src/LibGit2_jll.jl Lines 24 to 26 in 43786fb
|
Not sure what the errors are, and where they come from. |
Failures are in libgit2 tests, so the problem looks relevant: https://build.julialang.org/#/builders/20/builds/5846/steps/5/logs/stdio
|
After double-checking the code, the only think I can see is that my type and consts should be unsigned, because all values are positive and that's how other types are treated in the LibGit2 julia code. No sure if that will help, but updated the PR anyway. |
stdlib/LibGit2_jll/Project.toml
Outdated
@@ -1,6 +1,6 @@ | |||
name = "LibGit2_jll" | |||
uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" | |||
version = "1.3.0+0" | |||
version = "1.4.3+0" |
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.
Changing this to
version = "1.4.3+0" | |
version = "1.4.3+1" |
(ref: JuliaPackaging/Yggdrasil#4931) and refreshing again the checksums should hopefully fix the test failure.
BTW, I think that JuliaPackaging/Yggdrasil#4931 (comment) means that we probably want to pass Line 16 in 390503e
THREADSAFE is now called USE_THREADS and in Line 33 in 390503e
SHA1_BACKEND is now USE_SHA1 .
|
Pull request updated with:
|
Windows-only test failures 😢 |
A new error code was introduced in libgit2/libgit2#6267, but was not noted in the release notes. Should be handled now:
|
Still a Windows-only error, but different. Now it recognises that error code (
|
So on Windows, all clone operations error out with |
I've reviewed the code, and I cannot see anything. A lot of libgit2 operations in tests fail with:
which happens at every repo initialisation:
where
So either libgit2 ownership checks (recently introduced) are wrong on Windows, or the running process does not have ownership of the temporary directory Could someone help me debug? Or let me know how we can use Julia CI to check this, by instrumenting one of the tests? |
Could someone with access to Julia on windows run this code to check? (on an unmodified julia)
With this code, I want to confirm that the bug we have is the same as libgit2/libgit2#6279, which is fixed upstream by libgit2/libgit2#6321 |
I just tested this on Julia v1.7.3, Windows 11
|
Thanks @tylerjthomas9 everything seems to make sense, I've created a PR to include the upstream patch in yggdrasil builds: JuliaPackaging/Yggdrasil#5042 |
Windows fixed. Some weird failures on some linux nodes, not sure what/why, it's a mess 😢 |
Next |
I rebased on |
There is one failure on x86_64-linux, which corresponds to a comment in #45638:
So it appears to be preexisting, but showing up intermittently 🤷 |
Ok, let's merge this, at least we don't have regressions, and tests on musl are passing. For the record, some of the hangs we see in CI might be related to #45726, for which we have a PR. Thanks a lot for the great sleuthing work to fix all issues! |
* LibGit2: ABI update for 1.4.0 * Update to fix Windows issue
Could I ask that this be backported to 1.8.2? Or at least, the parts that provide forward build compatibility with libgit2 >= 1.4.0, i.e., this part:
Currently, julia 1.8.x fails to build against recent libgit2 >= 1.4.0. In Homebrew, we have to patch it as above, and linux distros (like archlinux) do it as well. It would be nicer to actually provide this for source build. In the official builds, since the dependency is not actually upgraded, it will change nothing. But it will make unpatched source builds possible for us. |
I'm not sure we want to upgrade the version of a dependency in a patch release unless there is a strong need to, but the ABI compatibility fix should be fine. You can do that by opening a pull request targeting the |
Partial backport of JuliaLang#45411
From the libgit2 release notes for 1.4.0:
The only things that seems used in Julia in this list are the
git_fetch_options
andgit_push_options
types, and related constants. This patch adds them.Before this patch, a build julia master, from source, on macOS (aarch64-darwin) against a prebuilt libgit2 1.4.3 (the latest version, which is what Homebrew is shipping) let to a bootstrap failure, with a hang and crash in:
(which involves the use of git through
Pkg
).With this patch applied, the build now succeeds.