OpenAFS Master Repository branch, master, updated. openafs-devel-1_9_1-568-gd93871b

Gerrit Code Review gerrit@openafs.org
Thu, 7 Nov 2024 15:50:14 -0500


The following commit has been merged in the master branch:
commit d93871b054e814bf0d5b02dc0d06c17845ee4edd
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Thu Feb 9 18:35:01 2023 -0600

    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>

 src/auth/Makefile.in  | 2 +-
 src/kauth/Makefile.in | 2 +-
 src/pam/Makefile.in   | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

-- 
OpenAFS Master Repository