Ensure PAM modules are built PIC and pthread-aware where needed
authorRuss Allbery <rra@stanford.edu>
Sun, 12 Jul 2009 16:07:12 +0000 (09:07 -0700)
committerDerrick Brashear <shadow@dementia.org>
Mon, 13 Jul 2009 20:40:40 +0000 (14:40 -0600)
Link the PAM modules against libafsauthent_pic and libafsrpc_pic instead
of the large collection of LWP AFS libraries so that they are always
built PIC, even on platforms that don't normally build everything PIC.
This also uses the pthread-aware version of the AFS routines on platforms
that support it, avoiding conflict problems between LWP in PAM modules
and pthread in a calling application.

Build a separate copy of ktc.krb.o in the pam directory for pam_afs.krb
since there is no AFS_KERBEROS_ENV-aware version of libafsauthent.

Enable the PAM module build by default on x86_64-linux now that it's
properly built PIC and can compile.

Stop ignoring build failures in the PAM modules if they're configured to
build.  On platforms where they should not be built, they should be
excluded in acinclude.m4.

Reviewed-on: http://gerrit.openafs.org/65
Verified-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

Makefile.in
acinclude.m4
src/pam/Makefile.in

index 632c961..08c7f21 100644 (file)
@@ -334,7 +334,7 @@ vfsck:      vol
                ${COMPILE_PART1} vfsck ${COMPILE_PART2} ;; \
        esac
 
-pam: cmd comerr kauth rxkad
+pam: auth shlibafsauthent shlibafsrpc
        +set -x; \
        if test "@HAVE_PAM@" = "yes"; then \
                ${COMPILE_PART1} pam ${COMPILE_PART2} ; \
index 54fa21b..21e626a 100644 (file)
@@ -778,7 +778,7 @@ else
                        ;;
                x86_64-*-linux-gnu)
                        AFS_SYSNAME="amd64_linuxXX"
-                       enable_pam="no"
+                       enable_pam="yes"
                        ;;
                *)
                        AC_MSG_ERROR(An AFS sysname is required)
index ae1eefe..020959e 100644 (file)
@@ -21,10 +21,10 @@ AFSLIBS = ${TOP_LIBDIR}/librxkad.a ${TOP_LIBDIR}/libsys.a \
          ${TOP_LIBDIR}/util.a
 
 LDFLAGS = ${SHLIB_LDFLAGS}
-   LIBS = ${TOP_LIBDIR}/libkauth.a ${LIBSA} ${TOP_LIBDIR}/libauth.a \
-         ${AFSLIBS} ${PAM_LIBS} @LIB_AFSDB@
-  KLIBS = ${TOP_LIBDIR}/libkauth.krb.a ${LIBSA} ${TOP_LIBDIR}/libauth.krb.a \
-         ${AFSLIBS} ${PAM_LIBS} @LIB_AFSDB@
+   LIBS = ${TOP_LIBDIR}/libafsauthent_pic.a ${TOP_LIBDIR}/libafsrpc_pic.a \
+         ${PAM_LIBS} @LIB_AFSDB@ ${MT_LIBS}
+  KLIBS = ktc_krb.o ${TOP_LIBDIR}/libafsauthent_pic.a \
+         ${TOP_LIBDIR}/libafsrpc_pic.a ${PAM_LIBS} @LIB_AFSDB@ ${MT_LIBS}
  SHOBJS = afs_account.o afs_session.o afs_password.o \
          afs_pam_msg.o afs_message.o AFS_component_version_number.o
    OBJS = $(SHOBJS) test_pam.o
@@ -51,12 +51,20 @@ afs_util.o: afs_util.c afs_pam_msg.h afs_message.h afs_util.h
 afs_util_krb.o: afs_util.c afs_pam_msg.h afs_message.h afs_util.h
        ${CC} ${CFLAGS} -DAFS_KERBEROS_ENV -c ${srcdir}/afs_util.c -o afs_util_krb.o
 
-pam_afs.so.1: $(SHOBJS) afs_setcred.o afs_auth.o afs_util.o
-       -../config/shlib-build -d $(srcdir) -f pam_afs.so.1 -l pam_afs -- \
+ktc_krb.o: ${srcdir}/../auth/ktc.c ${srcdir}/../auth/cellconfig.h \
+               ${srcdir}/../auth/auth.h ${srcdir}/../auth/keys.h \
+               ${TOP_INCDIR}/afs/vice.h
+       ${CC} ${CFLAGS} -DAFS_KERBEROS_ENV -c ${srcdir}/../auth/ktc.c -o $@
+
+pam_afs.so.1: $(SHOBJS) afs_setcred.o afs_auth.o afs_util.o \
+               ${TOP_LIBDIR}/libafsauthent_pic.a ${TOP_LIBDIR}/libafsrpc_pic.a
+       ../config/shlib-build -d $(srcdir) -f pam_afs.so.1 -l pam_afs -- \
                afs_setcred.o afs_auth.o afs_util.o ${SHOBJS} ${LIBS}
 
-pam_afs.krb.so.1: $(SHOBJS) afs_setcred_krb.o afs_auth_krb.o afs_util_krb.o
-       -../config/shlib-build -d $(srcdir) -f pam_afs.krb.so.1 -l pam_afs -- \
+pam_afs.krb.so.1: $(SHOBJS) afs_setcred_krb.o afs_auth_krb.o afs_util_krb.o \
+               ktc_krb.o ${TOP_LIBDIR}/libafsauthent_pic.a \
+               ${TOP_LIBDIR}/libafsrpc_pic.a
+       ../config/shlib-build -d $(srcdir) -f pam_afs.krb.so.1 -l pam_afs -- \
                afs_setcred_krb.o afs_auth_krb.o afs_util_krb.o \
                ${SHOBJS} ${KLIBS}
 
@@ -77,13 +85,13 @@ test_pam: test_pam.o
 
 install: pam_afs.so.1 pam_afs.krb.so.1
        ${INSTALL} -d ${DESTDIR}${libdir}
-       -${INSTALL_DATA} pam_afs.so.1 ${DESTDIR}${libdir}/pam_afs.so.1
-       -${INSTALL_DATA} pam_afs.krb.so.1 ${DESTDIR}${libdir}/pam_afs.krb.so.1
+       ${INSTALL_DATA} pam_afs.so.1 ${DESTDIR}${libdir}/pam_afs.so.1
+       ${INSTALL_DATA} pam_afs.krb.so.1 ${DESTDIR}${libdir}/pam_afs.krb.so.1
 
 dest: pam_afs.so.1 pam_afs.krb.so.1
        ${INSTALL} -d ${DEST}/lib
-       -${INSTALL_DATA} pam_afs.so.1 ${DEST}/lib/pam_afs.so.1
-       -${INSTALL_DATA} pam_afs.krb.so.1 ${DEST}/lib/pam_afs.krb.so.1
+       ${INSTALL_DATA} pam_afs.so.1 ${DEST}/lib/pam_afs.so.1
+       ${INSTALL_DATA} pam_afs.krb.so.1 ${DEST}/lib/pam_afs.krb.so.1
 
 afs_pam_msg.o: afs_pam_msg.c afs_pam_msg.h afs_message.h
 afs_message.o: afs_message.c afs_message.h