Thread overview
dmd2.063.2 packaged libphobos2.so and linux disto libcurl.so dependency issue
Jul 15, 2013
Arjan
Jul 15, 2013
Dicebot
Jul 15, 2013
Jordi Sayol
July 15, 2013
Hello,

After installing the DMD2.063.2 rpm on openSUSE-12.2 and openSUSE-12.3 (both 32bits) I had some trouble with building dub (~master). Linkage failed with:
dmd -ofbin/dub -g -debug -w -property -Isource  -L-lphobos2 -L-lcurl   @build-files.txt ....
/opt/dmd2/linux/bin32/../lib32/libphobos2.so: undefined reference to `curl_global_cleanup@CURL_OPENSSL_3'
/opt/dmd2/linux/bin32/../lib32/libphobos2.so: undefined reference to `curl_easy_cleanup@CURL_OPENSSL_3'...

The same issues occurred with the zip.
Building a sample c/c++ program using libcurl linked without problems...

After some dissection this was revealed:
ldd on libphobos2.so shows:
ldd /opt/dmd2/linux/lib32/libphobos2.so
ldd: warning: you do not have execution permission for `/opt/dmd2/linux/lib32/libphobos2.so'
/opt/dmd2/linux/lib32/libphobos2.so: /usr/lib/libcurl.so.4: no version information available (required by /opt/dmd2/linux/lib32/libphobos2.so)
        linux-gate.so.1 (0xb77bf000)
        libcurl.so.4 => /usr/lib/libcurl.so.4 (0xb748d000)

Turns out the supplied libphobos2.so in the zip/rpm is linked against a newer version of libcurl than available on openSUSE-12.x. I can imagine this does not only affect openSUSE-12 users.

After a git clone and checkout of dmd/druntime/phobos, the host-build dmd could compile-and-link dub without problems.

So, would it be possible for the next release of the zip and rpms to link libphobos against a older (oldest possible) libcurl to alleviate/resolve this problem?

Thanks.
Arjan
July 15, 2013
On Monday, 15 July 2013 at 13:13:53 UTC, Arjan wrote:
> ...

Shared library support is only semi-official so packaging/toolchain issues are expected within a reasonable limit. Thanks for your report, that is definitely worth paying attention to in next release.

P.S. IMHO a typical example why providing packages on dlang.org instead of delegating maintenance to actual platform users is not a good idea ;)
July 15, 2013
On 15/07/13 15:13, Arjan wrote:
> Hello,
> 
> After installing the DMD2.063.2 rpm on openSUSE-12.2 and openSUSE-12.3 (both 32bits) I had some trouble with building dub (~master). Linkage failed with:
> dmd -ofbin/dub -g -debug -w -property -Isource  -L-lphobos2 -L-lcurl   @build-files.txt ....
> /opt/dmd2/linux/bin32/../lib32/libphobos2.so: undefined reference to `curl_global_cleanup@CURL_OPENSSL_3'
> /opt/dmd2/linux/bin32/../lib32/libphobos2.so: undefined reference to `curl_easy_cleanup@CURL_OPENSSL_3'...
> 
> The same issues occurred with the zip.
> Building a sample c/c++ program using libcurl linked without problems...
> 
> After some dissection this was revealed:
> ldd on libphobos2.so shows:
> ldd /opt/dmd2/linux/lib32/libphobos2.so
> ldd: warning: you do not have execution permission for `/opt/dmd2/linux/lib32/libphobos2.so'
> /opt/dmd2/linux/lib32/libphobos2.so: /usr/lib/libcurl.so.4: no version information available (required by /opt/dmd2/linux/lib32/libphobos2.so)
>         linux-gate.so.1 (0xb77bf000)
>         libcurl.so.4 => /usr/lib/libcurl.so.4 (0xb748d000)
> 
> Turns out the supplied libphobos2.so in the zip/rpm is linked against a newer version of libcurl than available on openSUSE-12.x. I can imagine this does not only affect openSUSE-12 users.
> 
> After a git clone and checkout of dmd/druntime/phobos, the host-build dmd could compile-and-link dub without problems.
> 
> So, would it be possible for the next release of the zip and rpms to link libphobos against a older (oldest possible) libcurl to alleviate/resolve this problem?
> 

This is a known problem and will be fixed on the next release.
Current phobos shared library has "libcurl versioned symbols" (@CURL_OPENSSL_3) and they are only usable on systems like Debian, Ubuntu, Linux Mint, etc. This problem is not related to the libcurl version.

Regards,
-- 
Jordi Sayol