-
Notifications
You must be signed in to change notification settings - Fork 559
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
Bump LibGit2 to 1.0.0 #638
Conversation
FYI, a number of users have reported this to be buggy see this comment and below: JuliaLang/julia#33111 (comment) |
OK. We can force using LibCURL if it's better. The failures are due to this:
|
The Julia issue with LibGit2 0.99.0 should be fixed by JuliaLang/julia#35232. |
I honestly don't know how this is going to work: if we merge this, all JLL packages depending on libgit2 will pull v0.99.0, but the fix in JuliaLang/julia#35232 has a static check on whatever libgit2 version was used to build julia, not the runtime one. Maybe @staticfloat have some insights on this, especially given his work in JuliaLang/julia#35193 |
For the Julia PR, I used the same version check structure for LibGit2 that was already present elsewhere in that file, e.g. in line 48. If there is a better way to do this, please feel free to weigh in in the comments of this PR: I honestly don't know enough about Julia to gauge whether modifying the struct based on the runtime version check would be possible, I'm just trying to get Julia working with LibGit2 0.99.0 in Arch Linux. |
I fixed that, but now it'll fail on the final step because build script doesn't link to libmbedtls. I couldn't find an easy way to tell cmake to link the library to mbedtls, will need to dig deeper 😞 |
macOS and Windows worked, but we need to fix this warning for macOS:
|
Apparently we can set the |
Any idea what could be done? |
It's not that MbedTLS is not found, but none of the libraries in our |
Ok, MbedTLS doesn't build MD4 by default: https://github.com/ARMmbed/mbedtls/blob/e62bdefce164cbdd44bcc8cacff5ee7d92819c40/include/mbedtls/config.h#L2684-L2699 |
L/LibGit2/build_tarballs.jl
Outdated
# If we're on Linux or FreeBSD, explicitly ask for mbedTLS instead of OpenSSL. | ||
# Disable NTLM because it requires MD4, which is not provided by our build | ||
# of MbedTLS, as it's considered unsafe. | ||
BUILD_FLAGS+=(-DUSE_HTTPS=mbedTLS -DSHA1_BACKEND=CollisionDetection -DCMAKE_INSTALL_RPATH="\$ORIGIN" -DUSE_NTLMCLIENT=OFF) |
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'm disabling NTLM for Linux and FreeBSD for the reason explained above, should we disable it everywhere for consistency?
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.
@aviks pointed out that ntlm might be necessary for some corporate users behind proxy
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 guess it could make sense to have it on Windows since most users of NTLM are probably there.
Anyway let's make a decision as it's too bad to block this PR just because of this. If we're unsure, we can also disable NTLM on all OSes since it wasn't supported in previous releases: there would be no regression.
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 think we should enable MD4 and NTLM on all platforms for consistency. If someone uses NTLM auth then yes, it is likely they are using Windows, but we also want them to be able to use their Linux CI servers to auth in the same way, for instance.
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.
OK, I've tried doing that at #911. MbedTLS appears to have a nonstandard configuration system where you need to edit a header file directly... :-/
Thanks! I have no idea about whether NTLM is necessary. Actually, libgit2 1.0.0 was published two weeks ago, so we should probably use that. |
The version of LibGit2 that Julia uses will always be the one that ships with Julia, so the static build-time checks like this fix will always work. Until the JLL stdlib work is merged, it is possible for the JLL version you download for a dependency (like HTTP.jl) to not match what was used to build Julia. We can define version bounds (e.g. LibGit2_jll 1.0.0 is only compatible with Julia 1.4+) to help restrict that a bit, but in general we kind of just hope that they are compatible enough that it won't matter. |
61c52fb
to
4d5daca
Compare
This version uses an internal library for HTTP proxies by default rather than LibCURL.
4d5daca
to
a611301
Compare
Can this be merged now? :-) |
For the time being I've restricted |
This version uses an internal library for HTTP proxies by default rather than LibCURL.