When I emerge sys-libs/pam-0.77-r1 on sparc, the build fails when compiling pam_cracklib.so. This is reproducable using different versions of gcc (3.3.3-r5 and 3.4.1-r1), and it occurs with and without using distcc. It is possible that sys-libs/cracklib might actually be the problem and not pam. When trying to emerge mod_php on the same box, I get the following error during the configure portion: checking for CRACKlib support... yes configure: error: Cannot find the cracklib library file !!! ERROR: dev-php/mod_php-4.3.8 failed. !!! Function econf, Line 362, Exitcode 1 !!! econf failed I have verified that cracklib is installed and that the libraries actually do exist and are in my library path. Reproducible: Always Steps to Reproduce: 1.emerge pam 2. 3. Actual Results: make[2]: Entering directory `/var/tmp/portage/pam-0.77-r1/work/Linux-PAM-0.77/modules/pam_cracklib' mkdir -p ./dynamic gcc -Wall -Wwrite-strings -Wpointer-arith -Wcast-qual -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline -Wshadow -Dlinux -mcpu=ultrasparc -mtune=ultraspar c -O2 -pipe -fPIC -I/var/tmp/portage/pam-0.77-r1/work/Linux-PAM-0.77/include -I./include -I/var/tmp /portage/pam-0.77-r1/work/Linux-PAM-0.77/libpam/include -I/var/tmp/portage/pam-0.77-r1/work/Linux-PA M-0.77 -I/var/tmp/portage/pam-0.77-r1/work/Linux-PAM-0.77/libpamc/include -DCRACKLIB_DICTPATH=\"/us r/lib/cracklib_dict\" -I../pammodutil/include -DPAM_DYNAMIC -c pam_cracklib.c -o dynamic/pam_crackl ib.o pam_cracklib.c: In function `converse': pam_cracklib.c:191: warning: dereferencing type-punned pointer will break strict-aliasing rules pam_cracklib.c: In function `_pam_unix_approve_pass': pam_cracklib.c:526: warning: dereferencing type-punned pointer will break strict-aliasing rules pam_cracklib.c: In function `pam_sm_chauthtok': pam_cracklib.c:609: warning: dereferencing type-punned pointer will break strict-aliasing rules pam_cracklib.c:640: warning: dereferencing type-punned pointer will break strict-aliasing rules pam_cracklib.c:799: warning: dereferencing type-punned pointer will break strict-aliasing rules gcc -shared -L/var/tmp/portage/pam-0.77-r1/work/Linux-PAM-0.77/lib -o pam_cracklib.so dynamic/pam_cr acklib.o //usr/lib/libcrack.a -lcrypt -lc -L../pammodutil -lpammodutil gcc: //usr/lib/libcrack.a: No such file or directory distcc[9913] ERROR: compile (null) on localhost failed make[2]: *** [pam_cracklib.so] Error 1 make[2]: Leaving directory `/var/tmp/portage/pam-0.77-r1/work/Linux-PAM-0.77/modules/pam_cracklib' make[1]: *** [all] Error 1 make[1]: Leaving directory `/var/tmp/portage/pam-0.77-r1/work/Linux-PAM-0.77/modules' make: *** [modules] Error 2 !!! ERROR: sys-libs/pam-0.77-r1 failed. !!! Function src_compile, Line 213, Exitcode 2 !!! PAM build failed Expected Results: Should have compiled properly. Portage 2.0.50-r9 (default-sparc64-2004.0, gcc-3.4.1, glibc-2.3.4.20040619-r0, 2.6.7) ================================================================= System uname: 2.6.7 sparc64 sun4u Gentoo Base System version 1.5.1 distcc[22432] (dcc_trace_version) distcc 2.16 sparc-unknown-linux-gnu; built Jul 22 2004 01:12:23 [enabled] ccache version 2.3 [enabled] Autoconf: sys-devel/autoconf-2.59-r4 Automake: sys-devel/automake-1.8.5-r1 ACCEPT_KEYWORDS="sparc ~sparc" AUTOCLEAN="yes" CFLAGS="-mcpu=ultrasparc -mtune=ultrasparc -O2 -pipe" CHOST="sparc-unknown-linux-gnu" COMPILER="gcc3" CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3/share/config /usr/share/config /var/qmail/control" CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d" CXXFLAGS="-mcpu=ultrasparc -mtune=ultrasparc -O2 -pipe" DISTDIR="/usr/portage/distfiles" FEATURES="ccache distcc sandbox" GENTOO_MIRRORS="http://gentoo.oregonstate.edu http://www.ibiblio.org/pub/Linux/distributions/gentoo" MAKEOPTS="-j3" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/portage" SYNC="rsync://rsync.gentoo.org/gentoo-portage" USE="apache2 berkdb cups f77 foomaticdb gif jpeg lzq lzw lzw-tiff mng mysql offensive pcap perl php posix sparc ssl tiff ultra1 zlib"
What does /usr/lib/libcrack.a look like on your box?
That's interesting, it doesn't seem to exist. In fact, all the pam shared libs are in /lib instead of /usr/lib. I could have sworn there was a libcrack.a at the beginning of it all though. I started with a stage3 tarball for this install, and I got this error right away. I held off on reporting this because I had planned on doing an emerge -e world with gcc 3.4 anyhow. I thought that things might sort themselves out that way.
Ok, so I was just reading the changelog for cracklib, and I noticed that if you do not have USE="pam" then libcrack.a is not compiled (check my USE flags and you'll notice I have USE="-* blah blah blah...". In my opinion, this is broken behavior, because USE="-pam" should not block pam itself from compiling. If nobody has anything to say about this, I'll just go ahead and close this bug.
does this mean "use pam || rm -f ${D}/usr/lib/libcrack.a" is being removed from cracklib-2.7-r9.ebuild?
I've put out a new version of cracklib that doesn't wipe out the .a file. The new pam will depend on it.