Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: src

Module Name:    src
Committed By:   riastradh
Date:           Wed Sep  6 23:44:43 UTC 2023

Modified Files:
        src/crypto/external/bsd/heimdal/lib: Makefile
        src/crypto/external/bsd/netpgp/lib: Makefile
        src/external/bsd/atf/lib: Makefile
        src/external/bsd/elftoolchain/lib: Makefile
        src/external/bsd/libevent/lib: Makefile
        src/external/bsd/openldap/lib: Makefile
        src/lib: Makefile
Added Files:
        src/crypto/external/bsd/heimdal/lib: Makefile.subdir
        src/crypto/external/bsd/netpgp/lib: Makefile.subdir
        src/external/bsd/atf/lib: Makefile.subdir
        src/external/bsd/elftoolchain/lib: Makefile.subdir
        src/external/bsd/libevent/lib: Makefile.subdir
        src/external/bsd/openldap/lib: Makefile.subdir

Log Message:
lib: Handle various external lib directories with build_install.

This way, update builds track shlib major bumps correctly.

For example, suppose you had built Heimdal's and linked against it, and then you updated past the recent
shlib major bump raising them to and

Without this change, the build will make the following sequence of
targets (interleaved with some others):

1. make dependall in libkrb5
2. make dependall in libgssapi
3. make install in libkrb5
4. make install in libgssapi

The existing .WAIT tags in SUBDIR ensure that (1) happens before (2)
and (3) happens before (4).  Unfortunately, this sequence is wrong,
because it will produce the following effect:

1. make dependall in libkrb5 builds
2. make dependall in libgssapi builds, linked against
3. make install in libkrb5 installs
4. make install in libgssapi installs

Why the out-of-date in step (2)?  Because we just pass
-L${DESTDIR}/usr/lib -lkrb5 to the linker (or the equivalent with
--sysroot and implied -L/usr/lib), and ${DESTDIR}/usr/lib still has
only by the time of step (2), not

Now any applications that link against _and_
will get and -- but transitively, via, they will also get, which is a recipe
for disaster.

Splicing the Heimdal library subdirectories into lib/Makefile, as
this does, ensures that we run make dependall _and_ make install in
libkrb5 _before_ make dependall in libgssapi, giving the following
correct sequence:

1. make dependall in libkrb5 builds
2. make install in libkrb5 installs
3. make dependall in libgssapi builds, linked against
4. make install in libgssapi installs

Note that LIBDPLIBS isn't enough here, as implemented.  LIBDPLIBS
ensures that the incremental build will remake  But it
doesn't ensure that the new is available before then,
so it doesn't prevent this problem.

We use the same mechanism for crypto/external/bsd/openssl/lib
already; this just extends it to other external library collections.

As an alternative, in principle perhaps we could teach LIBDPLIBS to
ensure that comes out of the libkrb5 objdir, and not out
of ${DESTDIR}/usr/lib.  But that requires some work to make happen,
and make it reliable, whereas this approach we've already confirmed
works without other adverse consequences (besides leaving
grody-looking mechanism lying around) for the libcrypto major bump
already.  We need to get this pulled up to the branch so all the
other major bumps it required are handled correctly by update builds.

XXX pullup-10

To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/crypto/external/bsd/heimdal/lib/Makefile
cvs rdiff -u -r0 -r1.1 src/crypto/external/bsd/heimdal/lib/Makefile.subdir
cvs rdiff -u -r1.17 -r1.18 src/crypto/external/bsd/netpgp/lib/Makefile
cvs rdiff -u -r0 -r1.1 src/crypto/external/bsd/netpgp/lib/Makefile.subdir
cvs rdiff -u -r1.2 -r1.3 src/external/bsd/atf/lib/Makefile
cvs rdiff -u -r0 -r1.1 src/external/bsd/atf/lib/Makefile.subdir
cvs rdiff -u -r1.2 -r1.3 src/external/bsd/elftoolchain/lib/Makefile
cvs rdiff -u -r0 -r1.1 src/external/bsd/elftoolchain/lib/Makefile.subdir
cvs rdiff -u -r1.4 -r1.5 src/external/bsd/libevent/lib/Makefile
cvs rdiff -u -r0 -r1.1 src/external/bsd/libevent/lib/Makefile.subdir
cvs rdiff -u -r1.2 -r1.3 src/external/bsd/openldap/lib/Makefile
cvs rdiff -u -r0 -r1.1 src/external/bsd/openldap/lib/Makefile.subdir
cvs rdiff -u -r1.296 -r1.297 src/lib/Makefile

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Home | Main Index | Thread Index | Old Index