summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjmmv <jmmv@FreeBSD.org>2014-06-10 17:04:30 +0000
committerjmmv <jmmv@FreeBSD.org>2014-06-10 17:04:30 +0000
commiteaa2cac55821c825b2408c2685152668dd8e436a (patch)
tree14219a1465e8bb9a0c64910c555829e62c34c481
parente48c89801a60e658b6613418e437afee6c72cd98 (diff)
downloadFreeBSD-src-eaa2cac55821c825b2408c2685152668dd8e436a.zip
FreeBSD-src-eaa2cac55821c825b2408c2685152668dd8e436a.tar.gz
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 it. To make this possible, we need two fixes: - bsd.subdir.mk needs to properly honor NO_SUBDIR in all cases so that we do not recurse into 'tests' subdirectories when we needn't. Otherwise, we end up with some Kyuafiles in base.txz. - etc/Makefile needs to skip installing tests in its 'distribute' target so that a Kyuafile doesn't leak into base.txz. Approved by: gjb
-rw-r--r--Makefile.inc17
-rw-r--r--etc/Makefile5
-rw-r--r--share/mk/bsd.subdir.mk2
-rw-r--r--share/mk/bsd.test.mk9
4 files changed, 22 insertions, 1 deletions
diff --git a/Makefile.inc1 b/Makefile.inc1
index c9f41e1..344da99 100644
--- a/Makefile.inc1
+++ b/Makefile.inc1
@@ -776,6 +776,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
@@ -817,6 +820,10 @@ distributeworld installworld: _installcheck_world
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} mtree -C -f ${.CURDIR}/etc/mtree/BSD.root.dist | \
sed -e 's#^\./#./${dist}/#' >> ${METALOG}
diff --git a/etc/Makefile b/etc/Makefile
index 8615046..4f1636b 100644
--- a/etc/Makefile
+++ b/etc/Makefile
@@ -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>
diff --git a/share/mk/bsd.subdir.mk b/share/mk/bsd.subdir.mk
index b93a5d7..b0ce120 100644
--- a/share/mk/bsd.subdir.mk
+++ b/share/mk/bsd.subdir.mk
@@ -81,6 +81,7 @@ __subdir_targets+= .WAIT
.else
__subdir_targets+= ${__target}_subdir_${__dir}
${__target}_subdir_${__dir}: .MAKE
+.if !defined(NO_SUBDIR)
@${_+_}set -e; \
if test -d ${.CURDIR}/${__dir}.${MACHINE_ARCH}; then \
${ECHODIR} "===> ${DIRPRFX}${__dir}.${MACHINE_ARCH} (${__target:realinstall=install})"; \
@@ -94,6 +95,7 @@ ${__target}_subdir_${__dir}: .MAKE
${MAKE} ${__target:realinstall=install} \
DIRPRFX=${DIRPRFX}$$edir/
.endif
+.endif
.endfor
${__target}: ${__subdir_targets}
.else
diff --git a/share/mk/bsd.test.mk b/share/mk/bsd.test.mk
index 4060677..3453d94 100644
--- a/share/mk/bsd.test.mk
+++ b/share/mk/bsd.test.mk
@@ -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
OpenPOWER on IntegriCloud