Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 538070 - dev-vcs/git-annex-5.20141231 should RDEPEND on net-dns/libidn dev-libs/libxml2 net-libs/gnutls net-libs/libgsasl
Summary: dev-vcs/git-annex-5.20141231 should RDEPEND on net-dns/libidn dev-libs/libxml...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Development (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Gentoo's Haskell Language team
URL:
Whiteboard:
Keywords:
: 538068 538072 538074 (view as bug list)
Depends on:
Blocks:
 
Reported: 2015-01-28 16:52 UTC by Dennis Schridde
Modified: 2016-05-14 10:39 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Dennis Schridde 2015-01-28 16:52:32 UTC
git-annex indirectly depends on net-dns/libidn, which is pulled in correctly while building it, but which is not installed during runtime:
# ldd /usr/bin/git-annex
        libidn.so.11 => not found

Reproducible: Always
Comment 1 Jeroen Roovers (RETIRED) gentoo-dev 2015-01-29 10:35:12 UTC
*** Bug 538068 has been marked as a duplicate of this bug. ***
Comment 2 Jeroen Roovers (RETIRED) gentoo-dev 2015-01-29 10:35:37 UTC
*** Bug 538072 has been marked as a duplicate of this bug. ***
Comment 3 Jeroen Roovers (RETIRED) gentoo-dev 2015-01-29 10:35:46 UTC
*** Bug 538074 has been marked as a duplicate of this bug. ***
Comment 4 Dennis Schridde 2015-02-05 08:41:35 UTC
> At minimum, add full output of ldtree.

Where do I get that from? Google knows some JSON/RDF thing, and DDG knows nothing software related at all.

> Though other stuff, like - for example - version of git-annex would make this look more like a bug report.

!!! existing preserved libs:
>>> package: net-libs/gnutls-3.3.12
 *  - /usr/lib64/libgnutls.so.28
 *  - /usr/lib64/libgnutls.so.28.41.4
 *      used by /usr/bin/git-annex (dev-vcs/git-annex-5.20141231)
>>> package: net-libs/libgsasl-1.8.0-r1
 *  - /usr/lib64/libgsasl.so.7
 *  - /usr/lib64/libgsasl.so.7.9.6
 *      used by /usr/bin/git-annex (dev-vcs/git-annex-5.20141231)
>>> package: net-dns/libidn-1.29
 *  - /usr/lib64/libidn.so.11
 *  - /usr/lib64/libidn.so.11.6.12
 *      used by /usr/bin/git-annex (dev-vcs/git-annex-5.20141231)
>>> package: dev-libs/libtasn1-4.2
 *  - /usr/lib64/libtasn1.so.6
 *  - /usr/lib64/libtasn1.so.6.3.2
 *      used by /usr/lib64/libgnutls.so.28 (preserved)
 *      used by /usr/lib64/libgnutls.so.28.41.4 (preserved)
>>> package: dev-libs/nettle-2.7.1-r1
 *  - /usr/lib64/libhogweed.so.2
 *  - /usr/lib64/libhogweed.so.2.5
 *      used by /usr/lib64/libgnutls.so.28 (preserved)
 *      used by /usr/lib64/libgnutls.so.28.41.4 (preserved)
 *  - /usr/lib64/libnettle.so.4
 *  - /usr/lib64/libnettle.so.4.7
 *      used by /usr/lib64/libgnutls.so.28 (preserved)
 *      used by /usr/lib64/libgnutls.so.28.41.4 (preserved)
Comment 5 Dennis Schridde 2015-02-05 09:55:49 UTC
(In reply to Dennis Schridde from comment #4)
> > At minimum, add full output of ldtree.

Found it, it is named lddtree:

# lddtree /usr/bin/git-annex
git-annex => /usr/bin/git-annex (interpreter => /lib64/ld-linux-x86-64.so.2)
    libgsasl.so.7 => /usr/lib64/libgsasl.so.7
    libidn.so.11 => /usr/lib64/libidn.so.11
    libgnutls.so.28 => /usr/lib64/libgnutls.so.28
        libtasn1.so.6 => /usr/lib64/libtasn1.so.6
        libnettle.so.4 => /usr/lib64/libnettle.so.4
        libhogweed.so.2 => /usr/lib64/libhogweed.so.2
    libxml2.so.2 => /usr/lib64/libxml2.so.2
    libz.so.1 => /lib64/libz.so.1
    librt.so.1 => /lib64/librt.so.1
    libdl.so.2 => /lib64/libdl.so.2
    libpthread.so.0 => /lib64/libpthread.so.0
    libgmp.so.10 => /usr/lib64/libgmp.so.10
    libm.so.6 => /lib64/libm.so.6
    libffi.so.6 => /usr/lib64/libffi.so.6
    libc.so.6 => /lib64/libc.so.6

> > Though other stuff, like - for example - version of git-annex would make this look more like a bug report.

The issue affects dev-vcs/git-annex-5.20141203, too.
Comment 6 Sergei Trofimovich (RETIRED) gentoo-dev 2015-02-05 10:21:08 UTC
Yeah, it's a general issue of ebuild for haskell binaries.

When haskell binary links against static haskell library all the transitive closure of library's RDEPENDS should be grabbed and added to RDEPENDS.

Sometimes it's easy to grab manually, sometimes it's not.
Should be fixed anyways.
Comment 7 Dennis Schridde 2015-02-05 10:27:43 UTC
More complete list:
/usr/bin/git-annex
| /usr/lib64/libgsasl.so.7
| /usr/lib64/libidn.so.11
| /usr/lib64/libgnutls.so.28
| | /lib64/libz.so.1
| | /usr/lib64/libtasn1.so.6
| | /usr/lib64/libnettle.so.4
| | /usr/lib64/libhogweed.so.2
| | | /usr/lib64/libnettle.so.4
| | | /usr/lib64/libgmp.so.10
| | /usr/lib64/libgmp.so.10
| /usr/lib64/libxml2.so.2
| | /lib64/libz.so.1
| /lib64/libz.so.1
| /usr/lib64/libgmp.so.10
| /usr/lib64/libffi.so.6

Generated using:
#!/bin/bash

needed() {
        local scan_lib="$1" ws="$2"
        if [[ "${skip_stdlib}" ]] ; then
                case "${scan_lib}" in
                        *libc.so*|*libdl.so*|*libm.so*|*libpthread.so*|*librt.so*) return ;;
                esac
        fi
        echo "${ws}${scan_lib}"
        scanelf --needed --use-ldpath "${scan_lib}" | awk '/^ET_/{print$2}' | tr , '\n' | while read lib ; do
                if [[ "${scan_lib}" != "${lib}" ]] ; then
                        needed "${lib}" "${ws}| "
                fi
        done
}

bin="$1"
[[ "${bin}" ]] || exit 1

while [ $# -gt 0 ] ; do
        arg=$1 ; shift
        case $arg in
                --skip-stdlib) skip_stdlib=yes ;;
        esac
done

needed "${bin}"
Comment 8 Sergei Trofimovich (RETIRED) gentoo-dev 2016-05-14 10:39:16 UTC
Starting from ghc-7.10 we've enabled dynamic linking against haskell packages by default and as a result we've moved all haskell packages to RDEPENDs.

That allows getting smaller binaries and retain correct dependencies but it means ghc is a (very heavyweight) runtime dependency.

You can always get old behaviour as

    CABAL_EXTRA_CONFIGURE_FLAGS=--disable-executable-dynamic emerge -1 git-annex

but it means you are on your own to find out proper runtime dependencies
which can be very tricky as some libraries read files (configs) from disk
and could do dynamic discovery of available libraries.