-
-
Notifications
You must be signed in to change notification settings - Fork 44
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
curl v7.81.0 #101
curl v7.81.0 #101
Conversation
…nda-forge-pinning 2022.01.05.07.11.36
Hi! This is the friendly automated conda-forge-linting service. I just wanted to let you know that I linted all conda-recipes in your PR ( |
Apparently this is causing segfaults in Julia:
@mkitti @conda-forge/core |
I am confirming that libcurl 7.81 segfaults locally and that downgrading to 7.80 resolves the issue.
|
Shall we mark 7.81 as broken or do we need to exclude it for julia only? |
I'm trying to figure out how to answer that. The command line |
oh my daaaaze. @mkitti let's put upper pins on everything from now on. This is unsustainable. |
I'd guess julia only @beckermr. Already updated the patch here: conda-forge/conda-forge-repodata-patches-feedstock#208 |
This points to a julia specific issue with the newest curl and not just in conda forge. |
cc @conda-forge/core |
Basically, see this: conda-forge/conda-forge-repodata-patches-feedstock#208 The pin on curl goes like 7.80 to 8 --- does that make sense? Would it go 7.70 to 8 previously? |
This seems counterintuitive to me |
Basically, libcurl has ABI promises over a range of versions. This means for that range of versions, we can build new versions and just swap them in at run time. You can see this here: https://abi-laboratory.pro/index.php?view=timeline&l=curl We use a run export to fix the range of versions: https://github.com/conda-forge/curl-feedstock/blob/master/recipe/meta.yaml#L47 We use the global pinnings to set which version we build against. |
abi-laboratory.pro seems out of date. Does anyone know why? |
I understand the general premise, @beckermr, but I don't understand why it follows this formula:
so for example:
and now:
And in all of these case, the global "pin" on curl is... |
@mkitti the solution for us in julia is to impose a MAXIMUM pin on all CURRENT versions of dependencies. |
This line: curl-feedstock/recipe/meta.yaml Line 47 in e1cd3e6
The global pin sets the version installed at build time. In this case, the solver is maximizing the version but it has to match 7.*. |
ahhh! So this sets both a minimum (current version) and a maximum. Okay, weird. Do we want this in general? I mean, it seems it is working overall, but not for crazy, out-of-control julia... |
in general yeah this is what we want |
By the way, I just did a local build of Julia master versus libcurl 7.81.0, and it works. It is possible there is already a fix upstream or the way curl is configured makes a difference: Recent fork of Julia master
Conda-forge:
_
_ _ _(_)_ | Documentation: https://docs.julialang.org
(_) | (_) (_) |
_ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 1.7.1 (2021-12-22)
_/ |\__'_|_|_|\__'_| | https://github.com/conda-forge/julia-feedstock
|__/ |
julia> using LibCurl
ERROR: ArgumentError: Package LibCurl not found in current path:
- Run `import Pkg; Pkg.add("LibCurl")` to install the LibCurl package.
Stacktrace:
[1] require(into::Module, mod::Symbol)
@ Base ./loading.jl:967
julia> using LibCURL
julia> unsafe_string(LibCURL.curl_version())
"libcurl/7.81.0 OpenSSL/3.0.0 zlib/1.2.11 libssh2/1.10.0 nghttp2/1.43.0"
julia> download("https://curl.se")
signal (11): Segmentation fault
in expression starting at REPL[4]:1
Curl_connect at /home/mkitti/anaconda3/envs/julia171_20220107/bin/../lib/julia/libcurl.so (unknown line)
multi_runsingle at /home/mkitti/anaconda3/envs/julia171_20220107/bin/../lib/julia/libcurl.so (unknown line)
multi_socket at /home/mkitti/anaconda3/envs/julia171_20220107/bin/../lib/julia/libcurl.so (unknown line)
curl_multi_socket_action at /home/mkitti/anaconda3/envs/julia171_20220107/bin/../lib/julia/libcurl.so (unknown line)
curl_multi_socket_action at /home/conda/feedstock_root/build_artifacts/julia_1641439672340/work/usr/share/julia/stdlib/v1.7/LibCURL/src/lC_curl_h.jl:230 [inlined]
curl_multi_socket_action at /home/conda/feedstock_root/build_artifacts/julia_1641439672340/work/usr/share/julia/stdlib/v1.7/Downloads/src/Curl/utils.jl:91 [inlined]
macro expansion at /home/conda/feedstock_root/build_artifacts/julia_1641439672340/work/usr/share/julia/stdlib/v1.7/Downloads/src/Curl/utils.jl:35 [inlined]
... |
This comment has been minimized.
This comment has been minimized.
Okay, but I am still confused/bewildered. You're saying in general we want to force all builds to basically one single version? When it now says |
Yes, and that's my confusion above. I am still quite confused about these pins. |
In principle, everyone would obey and practice semantic versioning. Curl actually does a pretty decent job at this overall, so this is a surprising that a minor version bump has created breakage. It is likely a bug rather than being intentional. In practice, there seem to be different concepts about versioning. In this specific case, I have yet to isolate the issue. I suppose the next thing to try is Julia master with the specific curl binary produced here. Perhaps it is actually a dependency of curl such as OpenSSL that is causing this issue. |
No, we want to force all builds onto the same compatible version. For some libraries, this is an exact version. For cURL, it means 7.x, starting with what it builds with, and anything newer--up to and not including the next incompatible version. |
Thanks @dopplershift. I think I understand this correctly now. I mean, it seems it works fine except in this rare instance, so I take I was the confused one here 😆 |
It is very likely that the current package version for this feedstock is out of date.
Checklist before merging this PR:
license_file
is packagedInformation about this PR:
@conda-forge-admin,
please add bot automerge
in the title and merge the resulting PR. This command will add our bot automerge feature to your feedstock.bot-rerun
label to this PR. The bot will close this PR and schedule another one. If you do not have permissions to add this label, you can use the phrase@conda-forge-admin, please rerun bot
in a PR comment to have theconda-forge-admin
add it for you.Pending Dependency Version Updates
Here is a list of all the pending dependency version updates for this repo. Please double check all dependencies before merging.
Dependency Analysis
Please note that this analysis is highly experimental. The aim here is to make maintenance easier by inspecting the package's dependencies. Importantly this analysis does not support optional dependencies, please double check those before making changes. If you do not want hinting of this kind ever please add
bot: inspection: false
to yourconda-forge.yml
. If you encounter issues with this feature please ping the bot teamconda-forge/bot
.Analysis of the source code shows no discrepancy between the library's imports and the package's stated requirements in the meta.yaml.
This PR was created by the regro-cf-autotick-bot. The regro-cf-autotick-bot is a service to automatically track the dependency graph, migrate packages, and propose package version updates for conda-forge. Feel free to drop us a line if there are any issues! This PR was generated by https://github.com/regro/autotick-bot/actions/runs/1657730139, please use this URL for debugging.