Author: ian
Date: Tue Aug 19 23:33:51 2014
New Revision: 270187
URL: http://svnweb.freebsd.org/changeset/base/270187

Log:
  MFC r266473,267331,267511:
  
    Use an intermediate target to associate with _SUBDIR which is marked .MAKE
    this allows make -n to do tree walks as expected without
    doing anything else (as intended).
    Use prefix _sub. to help avoid conflict with any real target.
  
    Put the test suite in its own tests.txz distribution file.
    Force all the contents of /usr/tests to go into a separate distribution
    file so that users of binary releases can easily choose to not install
  
    Create a mechanism for providing fine-grained build order dependencies
    during SUBDIR_PARALLEL builds.  This augments the coarse .WAIT mechanism,
    which is still useful if you've got a situation such as "almost everything
    depends on A and B".

Modified:
  stable/10/Makefile.inc1
  stable/10/etc/Makefile
  stable/10/lib/Makefile
  stable/10/share/mk/bsd.subdir.mk
  stable/10/share/mk/bsd.test.mk
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/Makefile.inc1
==============================================================================
--- stable/10/Makefile.inc1     Tue Aug 19 23:15:47 2014        (r270186)
+++ stable/10/Makefile.inc1     Tue Aug 19 23:33:51 2014        (r270187)
@@ -779,6 +779,9 @@ EXTRA_DISTRIBUTIONS+=       games
 .if defined(LIB32TMP) && ${MK_LIB32} != "no"
 EXTRA_DISTRIBUTIONS+=  lib32
 .endif
+.if ${MK_TESTS} != "no"
+EXTRA_DISTRIBUTIONS+=  tests
+.endif
 
 MTREE_MAGIC?=  mtree 2.0
 
@@ -820,6 +823,10 @@ distributeworld installworld: _installch
        mtree -deU -f ${.CURDIR}/etc/mtree/BSD.debug.dist \
            -p ${DESTDIR}/${DISTDIR}/${dist}/usr/lib >/dev/null
 .endif
+.if ${MK_TESTS} != "no" && ${dist} == "tests"
+       mtree -deU -f ${.CURDIR}/etc/mtree/BSD.tests.dist \
+           -p ${DESTDIR}/${DISTDIR}/${dist}/usr >/dev/null
+.endif
 .if defined(NO_ROOT)
        ${IMAKEENV} nmtree -C -f ${.CURDIR}/etc/mtree/BSD.root.dist | \
            sed -e 's#^\./#./${dist}/#' >> ${METALOG}

Modified: stable/10/etc/Makefile
==============================================================================
--- stable/10/etc/Makefile      Tue Aug 19 23:15:47 2014        (r270186)
+++ stable/10/etc/Makefile      Tue Aug 19 23:33:51 2014        (r270187)
@@ -174,7 +174,10 @@ afterinstall:
 .endif
 
 distribute:
-       ${_+_}cd ${.CURDIR} ; ${MAKE} install DESTDIR=${DISTDIR}/${DISTRIBUTION}
+       # Avoid installing tests here; "make distribution" will do this and
+       # correctly place them in the right location.
+       ${_+_}cd ${.CURDIR} ; ${MAKE} MK_TESTS=no install \
+           DESTDIR=${DISTDIR}/${DISTRIBUTION}
        ${_+_}cd ${.CURDIR} ; ${MAKE} distribution 
DESTDIR=${DISTDIR}/${DISTRIBUTION}
 
 .include <bsd.endian.mk>

Modified: stable/10/lib/Makefile
==============================================================================
--- stable/10/lib/Makefile      Tue Aug 19 23:15:47 2014        (r270186)
+++ stable/10/lib/Makefile      Tue Aug 19 23:33:51 2014        (r270187)
@@ -3,73 +3,40 @@
 
 .include <bsd.own.mk>
 
-# To satisfy shared library or ELF linkage when only the libraries being
-# built are visible:
-#
-# csu must be built before all shared libaries for ELF.
-# libc must be built before all other shared libraries.
-# libbsm must be built before libauditd.
-# libcom_err must be built before libpam.
-# libcrypt must be built before libpam.
-# libkvm must be built before libdevstat.
-# libldns must be built before libunbound.
-# msun must be built before libg++ and libstdc++.
-# libmd must be built before libatm, libopie, libradius, and libtacplus.
-# ncurses must be built before libdialog, libedit and libreadline.
-# libnetgraph must be built before libbsnmp/modules/snmp_netgraph.
-# libopie must be built before libpam.
-# libradius must be built before libpam.
-# librpcsvc must be built before libpam.
-# libsbuf must be built before libcam.
-# libtacplus must be built before libpam.
-# libutil must be built before libpam.
-# libypclnt must be built before libpam.
-# libgssapi must be built before librpcsec_gss
-#
-# Otherwise, the SUBDIR list should be in alphabetical order.
-#
-# Except it appears bind needs to be compiled last
+# The SUBDIR_ORDERED list is a small set of libraries which are used by many
+# of the other libraries.  These are built first with a .WAIT between them
+# and the main list to avoid needing a SUBDIR_DEPEND line on every library
+# naming just these few items.
 
 SUBDIR_ORDERED=        ${_csu} \
+       .WAIT \
        libc \
        libc_nonshared \
-       libbsm \
-       libauditd \
        libcompiler_rt \
-       libcrypt \
-       libelf \
-       ${_libiconv_modules} \
-       libkvm \
-       ${_libldns} \
-       msun \
-       libmd \
-       ncurses \
-       ${_libnetgraph} \
-       libradius \
-       librpcsvc \
-       libsbuf \
-       libtacplus \
-       libutil \
-       ${_libypclnt} \
+       ${_libcplusplus} \
        ${_libcxxrt} \
-       ${_libcplusplus}
+       libelf \
+       msun
 
-.if ${MK_KERBEROS_SUPPORT} != "no"
-SUBDIR_ORDERED+=       libcom_err
-.endif
+# The main list; please keep these sorted alphabetically.
 
 SUBDIR=        ${SUBDIR_ORDERED} \
+       .WAIT \
        libalias \
        libarchive \
        ${_libatm} \
+       libauditd \
        libbegemot \
        libblocksruntime \
        ${_libbluetooth} \
        ${_libbsnmp} \
+       libbsm \
        libbz2 \
        libcalendar \
        libcam \
+       ${_libcom_err} \
        libcompat \
+       libcrypt \
        libdevinfo \
        libdevstat \
        libdwarf \
@@ -82,18 +49,23 @@ SUBDIR=     ${SUBDIR_ORDERED} \
        ${_libgpib} \
        ${_libgssapi} \
        ${_librpcsec_gss} \
+       ${_libiconv_modules} \
        libipsec \
        ${_libipx} \
        libjail \
        libkiconv \
+       libkvm \
+       ${_libldns} \
        liblzma \
        libmagic \
        libmandoc \
        libmemstat \
+       libmd \
        ${_libmilter} \
        ${_libmp} \
        ${_libnandfs} \
        libnetbsd \
+       ${_libnetgraph} \
        ${_libngatm} \
        libopie \
        libpam \
@@ -101,8 +73,11 @@ SUBDIR=     ${SUBDIR_ORDERED} \
        ${_libpmc} \
        ${_libproc} \
        libprocstat \
+       libradius \
+       librpcsvc \
        librt \
        ${_librtld_db} \
+       libsbuf \
        ${_libsdp} \
        ${_libsm} \
        ${_libsmb} \
@@ -111,6 +86,7 @@ SUBDIR=      ${SUBDIR_ORDERED} \
        libstand \
        libstdbuf \
        libstdthreads \
+       libtacplus \
        ${_libtelnet} \
        ${_libthr} \
        libthread_db \
@@ -121,16 +97,49 @@ SUBDIR=    ${SUBDIR_ORDERED} \
        ${_libunbound} \
        ${_libusbhid} \
        ${_libusb} \
+       libutil \
        ${_libvgl} \
        ${_libvmmapi} \
        libwrap \
        liby \
+       ${_libypclnt} \
        libyaml \
        libz \
+       ncurses \
        ${_atf} \
        ${_clang} \
        ${_tests}
 
+# Inter-library dependencies.  When the makefile for a library contains LDADD
+# libraries, those libraries should be listed as build order dependencies here.
+
+SUBDIR_DEPEND_libarchive= libz libbz2 libexpat liblzma libmd
+SUBDIR_DEPEND_libatm= libmd
+SUBDIR_DEPEND_libauditdm= libbsm
+SUBDIR_DEPEND_libbsnmp= ${_libnetgraph}
+SUBDIR_DEPEND_libc++= libcxxrt
+SUBDIR_DEPEND_libc= libcompiler_rt
+SUBDIR_DEPEND_libcam= libsbuf
+SUBDIR_DEPEND_libdevstat= libkvm
+SUBDIR_DEPEND_libdiaglog= ncurses
+SUBDIR_DEPEND_libedit= ncurses
+SUBDIR_DEPEND_libg++= msun
+SUBDIR_DEPEND_libgeom= libexpat libsbuf
+SUBDIR_DEPEND_liblibrpcsec_gss= libgssapi
+SUBDIR_DEPEND_libmagic= libz
+SUBDIR_DEPEND_libmemstat= libkvm
+SUBDIR_DEPEND_libopie= libmd
+SUBDIR_DEPEND_libpam= libcrypt libopie libradius librpcsvc libtacplus libutil 
${_libypclnt} ${_libcom_err} 
+SUBDIR_DEPEND_libpjdlog= libutil
+SUBDIR_DEPEND_libprocstat= libkvm libutil
+SUBDIR_DEPEND_libradius= libmd
+SUBDIR_DEPEND_libreadline= ncurses
+SUBDIR_DEPEND_libsmb= libkiconv
+SUBDIR_DEPEND_libstdc++= msun
+SUBDIR_DEPEND_libtacplus= libmd
+SUBDIR_DEPEND_libulog= libmd
+SUBDIR_DEPEND_libunbound= ${_libldns}
+
 .if exists(${.CURDIR}/csu/${MACHINE_ARCH}-elf)
 _csu=csu/${MACHINE_ARCH}-elf
 .elif exists(${.CURDIR}/csu/${MACHINE_ARCH})
@@ -173,6 +182,10 @@ _librpcsec_gss=    librpcsec_gss
 _libiconv_modules=     libiconv_modules
 .endif
 
+.if ${MK_KERBEROS_SUPPORT} != "no"
+_libcom_err= libcom_err
+.endif
+
 .if ${MK_IPX} != "no"
 _libipx=       libipx
 .endif

Modified: stable/10/share/mk/bsd.subdir.mk
==============================================================================
--- stable/10/share/mk/bsd.subdir.mk    Tue Aug 19 23:15:47 2014        
(r270186)
+++ stable/10/share/mk/bsd.subdir.mk    Tue Aug 19 23:33:51 2014        
(r270187)
@@ -47,15 +47,15 @@ _SUBDIR: .USE .MAKE
 .if defined(SUBDIR) && !empty(SUBDIR) && !defined(NO_SUBDIR)
        @${_+_}set -e; for entry in ${SUBDIR:N.WAIT}; do \
                if test -d ${.CURDIR}/$${entry}.${MACHINE_ARCH}; then \
-                       ${ECHODIR} "===> ${DIRPRFX}$${entry}.${MACHINE_ARCH} 
(${.TARGET:realinstall=install})"; \
+                       ${ECHODIR} "===> ${DIRPRFX}$${entry}.${MACHINE_ARCH} 
(${.TARGET:S,realinstall,install,:S,^_sub.,,})"; \
                        edir=$${entry}.${MACHINE_ARCH}; \
                        cd ${.CURDIR}/$${edir}; \
                else \
-                       ${ECHODIR} "===> ${DIRPRFX}$$entry 
(${.TARGET:realinstall=install})"; \
+                       ${ECHODIR} "===> ${DIRPRFX}$$entry 
(${.TARGET:S,realinstall,install,:S,^_sub.,,})"; \
                        edir=$${entry}; \
                        cd ${.CURDIR}/$${edir}; \
                fi; \
-               ${MAKE} ${.TARGET:realinstall=install} \
+               ${MAKE} ${.TARGET:S,realinstall,install,:S,^_sub.,,} \
                    DIRPRFX=${DIRPRFX}$$edir/; \
        done
 .endif
@@ -80,7 +80,12 @@ __subdir_targets=
 __subdir_targets+= .WAIT
 .else
 __subdir_targets+= ${__target}_subdir_${__dir}
-${__target}_subdir_${__dir}: .MAKE
+__deps=
+.for __dep in ${SUBDIR_DEPEND_${__dir}}
+__deps+= ${__target}_subdir_${__dep}
+.endfor
+${__target}_subdir_${__dir}: .MAKE ${__deps}
+.if !defined(NO_SUBDIR)
        @${_+_}set -e; \
                if test -d ${.CURDIR}/${__dir}.${MACHINE_ARCH}; then \
                        ${ECHODIR} "===> ${DIRPRFX}${__dir}.${MACHINE_ARCH} 
(${__target:realinstall=install})"; \
@@ -94,10 +99,12 @@ ${__target}_subdir_${__dir}: .MAKE
                ${MAKE} ${__target:realinstall=install} \
                    DIRPRFX=${DIRPRFX}$$edir/
 .endif
+.endif
 .endfor
 ${__target}: ${__subdir_targets}
 .else
-${__target}: _SUBDIR
+${__target}: _sub.${__target}
+_sub.${__target}: _SUBDIR
 .endif
 .endfor
 
@@ -105,11 +112,14 @@ ${__target}: _SUBDIR
 .for __stage in build install
 ${__stage}${__target}:
 .if make(${__stage}${__target})
-${__stage}${__target}: _SUBDIR
+${__stage}${__target}: _sub.${__stage}${__target}
+_sub.${__stage}${__target}: _SUBDIR
 .endif
 .endfor
+.if !target(${__target})
 ${__target}: .MAKE
        ${_+_}set -e; cd ${.CURDIR}; ${MAKE} build${__target}; ${MAKE} 
install${__target}
+.endif
 .endfor
 
 .if !target(install)

Modified: stable/10/share/mk/bsd.test.mk
==============================================================================
--- stable/10/share/mk/bsd.test.mk      Tue Aug 19 23:15:47 2014        
(r270186)
+++ stable/10/share/mk/bsd.test.mk      Tue Aug 19 23:33:51 2014        
(r270187)
@@ -27,6 +27,15 @@ TESTS_SUBDIRS?=
 # List of variables to pass to the tests at run-time via the environment.
 TESTS_ENV?=
 
+# Force all tests in a separate distribution file.
+#
+# We want this to be the case even when the distribution name is already
+# overriden.  For example: we want the tests for programs in the 'games'
+# distribution to end up in the 'tests' distribution; the test programs
+# themselves have all the necessary logic to detect that the games are not
+# installed and thus won't cause false negatives.
+DISTRIBUTION:= tests
+
 # Ordered list of directories to construct the PATH for the tests.
 TESTS_PATH+= ${DESTDIR}/bin ${DESTDIR}/sbin \
              ${DESTDIR}/usr/bin ${DESTDIR}/usr/sbin
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to