jabberd should link explictly to gcrypt. currently it depends its linking to gnutls to "inherit" a link to gcrypt. No such link exists. Reproducible: Always Steps to Reproduce: 1. have gnutls installed +nettle 2. emerge -va =jabberd-1.6.1.1-r Actual Results: libtool: link: x86_64-pc-linux-gnu-g++ -march=native -O2 -fomit-frame-pointer -pipe -mssse3 -Wl,-O1 -Wl,--as-needed -o .libs/jabberd -Wl,-O1 -Wl,--as-needed jabberd.o -Wl,--export-dynamic ../jabberd/base/.libs/libjabberdbase.a ./.libs/libjabberd.so -lgnutls-extra -lgnutls -lpopt -lresolv -ldl -lidn -lpth -lexpat ./.libs/libjabberd.so: undefined reference to `gcry_control' Expected Results: Succesful compile
Meant explicit linking to libgcrypt should be done (I wrote gcrpyt)
make[1]: Entering directory `/tmp/jabberd14-1.6.1.1/jabberd' /bin/sh ../libtool --tag=CXX --mode=link g++ -g -O2 -lgnutls -lgnutls-extra -lgnutls -o jabberd -lgnutls -lgnutls-extra -lgnutls -export-dynamic jabberd.o ../jabberd/base/libjabberdbase.la ../jabberd/libjabberd.la -lpopt -lresolv -lgcrypt -ldl -lidn -lpth -lexpat -lmysqlclient g++ -g -O2 -o .libs/jabberd jabberd.o -Wl,--export-dynamic ../jabberd/base/.libs/libjabberdbase.a -lgnutls-extra -lgnutls ../jabberd/.libs/libjabberd.so -lpopt -lresolv /usr/lib64/libgcrypt.so -ldl /usr/lib64/libidn.so /usr/lib64/libpth.so /usr/lib64/libexpat.so -lmysqlclient creating jabberd make[1]: Leaving directory `/tmp/jabberd14-1.6.1.1/jabberd' Manually added -lgcrypt to makefile; added #include <gcrypt.h> to jabberd/jabberd.h Works. :)
With gnutls-2.12.18, +nettle is default in IUSE, which removes the dep on libgcrypt. -nettle causes gnutls to still to use libgrypt, so the inheireted linking would still works. It is probably preferred to include libgcrypt directly than to force gnutls[-nettle]
Added -lgcrypt to jabberd/Makefile.am and the missing depend in the ebuild Thanks for reporting! Closing
*** Bug 408633 has been marked as a duplicate of this bug. ***