libtool: Make libfoo.krb depend on libfoo

During parallel builds, we can run the final 'libtool --mode=link'
step for, say, pam_afs.la and pam_afs.krb.la in parallel. When libtool
runs --mode=link for these libraries, it effectively does the
following (amongst many other steps):

- rm -rf .libs/"$libname".*
- mkdir .libs/"$libname".lax
- mkdir .libs/"$libname".lax/libopr_pic.a

The 'rm -rf' cleans up any lingering files from previous runs in the
.libs dir (e.g. .libs/pam_afs.a, .libs/pam_afs.lai, etc etc). The
'.lax' directory is used as a temporary space to extract object files
in dependant libs. And of course it creates various other files in
there named like .libs/pam_afs.lai.

But if we're building a library called pam_afs.krb.la, then some of
our temporary files will be named like .libs/pam_afs.krb.lax, which
get deleted when building pam_afs.la when it deletes
".libs/pam_afs.*". So, if we build pam_afs.la while the libtool
command for pam_afs.krb.la is using .libs/pam_afs.krb.lax, the
temporary files can get deleted out from under us, causing rare
confusing libtool errors. For example:

    /bin/sh ../../libtool --quiet --mode=link --tag=CC gcc  -rpath /usr/local/lib \
            -module -no-undefined -o pam_afs.la [...]
    /bin/sh ../../libtool --quiet --mode=link --tag=CC gcc  -rpath /usr/local/lib \
            -module -no-undefined -o pam_afs.krb.la [...]
    ../../libtool: line 1719: cd: .libs/pam_afs.krb.lax/libopr_pic.a: No such file or directory
    make[3]: *** [Makefile:76: pam_afs.krb.la] Error 1
    make[3]: *** Waiting for unfinished jobs....

Fortunately, most of the libraries we build don't have dots in their
name, and so avoid this issue. But we do have a few libraries that
build a ".krb" variant, and so can be impacted by this. This includes
pam_afs.krb, libauth.krb, and libkauth.krb.

To make sure these libraries don't encounter this problem, make the
.krb variant depend on the non-.krb variant, so the libraries aren't
built in parallel.

Change-Id: Icb96a721b481bc3d99c9e24cf81fcfbbf7d498f6
Reviewed-on: https://gerrit.openafs.org/15328
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
This commit is contained in:
Andrew Deason 2023-02-09 18:35:01 -06:00 committed by Michael Meffie
parent af1a384072
commit d93871b054
3 changed files with 3 additions and 3 deletions

View File

@ -98,7 +98,7 @@ ktc.krb.lo: ktc.c ${INCLS} ${TOP_INCDIR}/afs/vice.h
libauth.a: $(LT_objs)
$(LT_LDLIB_lwp) $(LT_objs)
libauth.krb.a: $(KRB_objs)
libauth.krb.a: libauth.a $(KRB_objs)
$(LT_LDLIB_lwp) $(KRB_objs)
liboafs_auth.la: liboafs_auth.la.sym $(LT_objs) $(LT_deps)

View File

@ -184,7 +184,7 @@ Kkauth.h: kauth.rg
libkauth.a: $(LWP_objs)
$(LT_LDLIB_lwp) $(LWP_objs)
libkauth.krb.a: $(KRB_objs)
libkauth.krb.a: libkauth.a $(KRB_objs)
$(LT_LDLIB_lwp) $(KRB_objs)
kas.o: kas.c ${INCLS} AFS_component_version_number.o

View File

@ -70,7 +70,7 @@ pam_afs.la: $(LT_objs) $(LT_deps) \
afs_setcred.lo afs_auth.lo afs_util.lo ktc.lo \
$(LT_objs) $(LT_deps) $(LT_libs)
pam_afs.krb.la: $(LT_objs) $(LT_deps) \
pam_afs.krb.la: pam_afs.la $(LT_objs) $(LT_deps) \
afs_setcred_krb.lo afs_auth_krb.lo afs_util_krb.lo \
ktc_krb.lo pam_afs.map
$(LIBTOOL) --quiet --mode=link --tag=CC $(MT_CC) $(XLDFLAGS) -rpath $(libdir) \