-
-
Notifications
You must be signed in to change notification settings - Fork 741
fix Issue 10710 - phobos depends on versioned libcurl #1661
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
Conversation
With dmd v2.064 beta3: $ objdump -x linux/lib64/libphobos2.so | grep " curl" | awk '{print $NF}' Whit this pull request: $ objdump -x libphobos2.so.0.64.0 | grep " curl" | awk '{print $NF}' This pull request removes curl "versioned symbols" fixing the problem! The SONAME "libcurl.so" forces to install curl development packages to run programs compiled with dmd/phobos. It should be "libcurl.so.4". |
Thx and done. |
Autotest fails on OSX. |
- create a libcurl_stub.so for linking - set it's soname to libcurl.so.4 so that phobos gets a DT_NEEDED libcurl.so.4 entry - the runtime linker will load libcurl.so and resolve all undefined references - disable pragma(lib, "curl") because it doesn't work for archives anyways and additionally links against the real libcurl
OK, did this on linux only. |
I'm agree that this should be merged before 2.064 release. @WalterBright @andralex ... |
Why? The current state is not a regression over any previous release, much less the most recent release. It's an improvement, no doubt, but we're in regression fixing mode, not general improvement mode. |
To forestall an obvious objection, any release since curl was added as a dependency. If you go back to pre-curl, then ok, but that's a good ways back at this point. |
It's no a regression because Linux shared libraries are present from dmd v2.063.2, so it cannot be a regression, but if this is not merged, phobos shared libraries will be not usable on Linux systems that are not based on Debian, like Fedora, Centos, Redhat, OpenSUSE, LinuxArch, etc. |
Well the shared libphobos2.so that we shipped with the last release is broken on many linux distributions. |
I'd rather not waste another release cycle without a working libphobos2.so because this blocks important work (e.g. shared library support in dub). Also we're hardly getting any testing/feedback for this still optional feature ( |
For this release I could build the Fedora and openSUSE package so that we don't ship another broken libphobos2.so. |
Good! But please use the last commit on https://github.com/D-Programming-Language/installer/blob/master/linux/dmd_rpm.sh instead of any previous release. |
Can you please open a pull request which cherry-picks the 2.064 relevant installer changes. |
All the changes are already committed. You only have to use it with a modified (libphobos) release zip file, and don't forget to put https://github.com/D-Programming-Language/installer/blob/master/linux/dmd-completion together with the zip file. If not, the resulting packages will not have command line auto completion. |
Yes, but they're on master. We should build the 2.064 release with the 2.064 tag of the installer repo. |
Ah, ok, but I have no idea how to do it. |
Anyway, you will create the rpm packages from a non 2.064 tag, isn't it? |
No can do, it's not reproducible. |
Can wait: Better if included: Should be included: |
Let's resurrect this, it fixes 2 issues until we have per distribution build scripts. #1772. |
gets a DT_NEEDED libcurl.so entry
all undefined references
for archives anyways and additionally links against
the real libcurl
Issue 10710