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
*** Bug 538068 has been marked as a duplicate of this bug. ***
*** Bug 538072 has been marked as a duplicate of this bug. ***
*** Bug 538074 has been marked as a duplicate of this bug. ***
> 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)
(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.
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.
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}"
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.