libcap tries to link to pam library if security/pam_modules.h exists even though USE=-pam is being used. The reason is that Makefile includes Make.Rules which checks for above include file overwriting the PAM_CAP environment variable telling it to skip any pam-related compilation. For libcap-2.15 the failure happens in src_install() when make is called without telling it about PAM. src_install() { - emake install DESTDIR="${D}" lib=$(get_libdir) || die + emake install DESTDIR="${D}" lib=$(get_libdir) \ + PAM_CAP=$(use pam && echo yes || echo no) || die gen_usr_ldscript libcap.so mv "${D}"/$(get_libdir)/libcap.a "${D}"/usr/$(get_libdir)/ || die dopammod pam_cap/pam_cap.so dopamsecurity '' pam_cap/capability.conf dodoc CHANGELOG README doc/capability.notes } Build log: >>> Test phase [not enabled]: sys-libs/libcap-2.15 >>> Install libcap-2.15 into /var/tmp/portage/sys-libs/libcap-2.15/image/ category sys-libs make -C libcap install make[1]: Entering directory `/var/tmp/portage/sys-libs/libcap-2.15/work/libcap-2.15/libcap' mkdir -p -m 0755 /var/tmp/portage/sys-libs/libcap-2.15/image//usr/include/sys install -m 0644 include/sys/capability.h /var/tmp/portage/sys-libs/libcap-2.15/image//usr/include/sys mkdir -p -m 0755 /var/tmp/portage/sys-libs/libcap-2.15/image//lib64 install -m 0644 libcap.a /var/tmp/portage/sys-libs/libcap-2.15/image//lib64/libcap.a install -m 0644 libcap.so.2.15 /var/tmp/portage/sys-libs/libcap-2.15/image//lib64/libcap.so.2.15 ln -sf libcap.so.2.15 /var/tmp/portage/sys-libs/libcap-2.15/image//lib64/libcap.so.2 ln -sf libcap.so.2 /var/tmp/portage/sys-libs/libcap-2.15/image//lib64/libcap.so make[1]: Leaving directory `/var/tmp/portage/sys-libs/libcap-2.15/work/libcap-2.15/libcap' make -C pam_cap install make[1]: Entering directory `/var/tmp/portage/sys-libs/libcap-2.15/work/libcap-2.15/pam_cap' x86_64-pc-linux-gnu-gcc -O2 -march=nocona -pipe -Wall -Wwrite-strings -Wpointer-arith -Wcast-qual -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline -Wshadow -Wall -Wwrite-strings -Wpointer-arith -Wcast-qual -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline -Wshadow -fPIC -I/var/tmp/portage/sys-libs/libcap-2.15/work/libcap-2.15/pam_cap/../libcap/include -I/var/tmp/portage/sys-libs/libcap-2.15/work/libcap-2.15/pam_cap/../libcap/include -Dlinux -c pam_cap.c -o pam_cap.o pam_cap.c: In function 'pam_sm_setcred': pam_cap.c:298: warning: dereferencing type-punned pointer will break strict-aliasing rules x86_64-pc-linux-gnu-gcc -Wl,-x -shared -O2 -march=nocona -pipe -Wall -Wwrite-strings -Wpointer-arith -Wcast-qual -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline -Wshadow -Wall -Wwrite-strings -Wpointer-arith -Wcast-qual -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline -Wshadow -fPIC -Wl,-O1 -L/var/tmp/portage/sys-libs/libcap-2.15/work/libcap-2.15/libcap -L/var/tmp/portage/sys-libs/libcap-2.15/work/libcap-2.15/pam_cap/../libcap -o pam_cap.so pam_cap.o -lcap make testcompile make[2]: Entering directory `/var/tmp/portage/sys-libs/libcap-2.15/work/libcap-2.15/pam_cap' x86_64-pc-linux-gnu-gcc -O2 -march=nocona -pipe -Wall -Wwrite-strings -Wpointer-arith -Wcast-qual -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline -Wshadow -Wall -Wwrite-strings -Wpointer-arith -Wcast-qual -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline -Wshadow -fPIC -Wall -Wwrite-strings -Wpointer-arith -Wcast-qual -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline -Wshadow -fPIC -I/var/tmp/portage/sys-libs/libcap-2.15/work/libcap-2.15/pam_cap/../libcap/include -I/var/tmp/portage/sys-libs/libcap-2.15/work/libcap-2.15/pam_cap/../libcap/include -Dlinux -Wl,-O1 -L/var/tmp/portage/sys-libs/libcap-2.15/work/libcap-2.15/libcap -L/var/tmp/portage/sys-libs/libcap-2.15/work/libcap-2.15/pam_cap/../libcap -L/var/tmp/portage/sys-libs/libcap-2.15/work/libcap-2.15/pam_cap/../libcap -o testcompile test.c pam_cap.o -lpam -ldl -lcap /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -lpam collect2: ld returned 1 exit status make[2]: *** [testcompile] Error 1 make[2]: Leaving directory `/var/tmp/portage/sys-libs/libcap-2.15/work/libcap-2.15/pam_cap' make[1]: *** [all] Error 2 make[1]: Leaving directory `/var/tmp/portage/sys-libs/libcap-2.15/work/libcap-2.15/pam_cap' make: *** [install] Error 2
Reasssigning to base-system herd.
the compile step works fine ... fixed in cvs http://sources.gentoo.org/sys-libs/libcap/libcap-2.15.ebuild?r1=1.9&r2=1.10 http://sources.gentoo.org/sys-libs/libcap/libcap-2.16.ebuild?r1=1.1&r2=1.2