mirror of
https://git.openafs.org/openafs.git
synced 2025-01-18 15:00:12 +00:00
d93871b054
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> |
||
---|---|---|
build-tools | ||
doc | ||
src | ||
tests | ||
.gitignore | ||
.gitreview | ||
.mailmap | ||
.splintrc | ||
acinclude.m4 | ||
CODING | ||
configure-libafs.ac | ||
configure.ac | ||
CONTRIBUTING | ||
INSTALL | ||
libafsdep | ||
LICENSE | ||
Makefile-libafs.in | ||
Makefile.in | ||
NEWS | ||
NTMakefile | ||
README | ||
README-WINDOWS | ||
regen.sh |
AFS is a distributed file system that enables users to share and access all of the files stored in a network of computers as easily as they access the files stored on their local machines. The file system is called distributed for this exact reason: files can reside on many different machines, but are available to users on every machine. OpenAFS 1.0 was originally released by IBM under the terms of the IBM Public License 1.0 (IPL10). For details on IPL10 see the LICENSE file in this directory. The current OpenAFS distribution is licensed under a combination of the IPL10 and many other licenses as granted by the relevant copyright holders. The LICENSE file in this directory contains more details, thought it is not a comprehensive statement. See INSTALL for information about building and installing OpenAFS on various platforms. See CODING for developer information and guidelines. See NEWS for recent changes to OpenAFS.