summaryrefslogtreecommitdiff
path: root/mk/build/test.mk
diff options
context:
space:
mode:
authorjlam <jlam@pkgsrc.org>2006-07-05 06:09:15 +0000
committerjlam <jlam@pkgsrc.org>2006-07-05 06:09:15 +0000
commite31200b87c973f65d2a1f7c8949cc1891040e67e (patch)
tree5cda57cdca85b18146d681fc321900e0b05b7666 /mk/build/test.mk
parent00478b39e6c53023f76627af6ffacebafc9db9d6 (diff)
downloadpkgsrc-e31200b87c973f65d2a1f7c8949cc1891040e67e.tar.gz
Refactor configure, build, test and wrapper phases out of bsd.pkg.mk
and into their own directories. Also do some cleanups with build/_build and pkginstall -- we get rid of _build and simply run pkginstall as part of the "build" target. Introduce a new mechanism to handle varying directory depths under ${WRKSRC} in which we find files to override, e.g. configure, config.*, libtool, etc. OVERRIDE_DIRDEPTH is a package-settable variable that specifies how far under ${WRKSRC} the various targets should look, and it defaults to "2". We preserve the meaning of the various *_OVERRIDE variables, so if they are defined, then their values supersede the OVERRIDE_DIRDEPTH mechanism. devel/tla will need to specially set OVERRIDE_DIRDEPTH to 3 (see log for revision 1.1857 for bsd.pkg.mk -- to be done in a separate commit.
Diffstat (limited to 'mk/build/test.mk')
-rw-r--r--mk/build/test.mk123
1 files changed, 123 insertions, 0 deletions
diff --git a/mk/build/test.mk b/mk/build/test.mk
new file mode 100644
index 00000000000..6e242cf5f97
--- /dev/null
+++ b/mk/build/test.mk
@@ -0,0 +1,123 @@
+# $NetBSD: test.mk,v 1.1 2006/07/05 06:09:15 jlam Exp $
+#
+# TEST_DIRS is the list of directories in which to perform the build
+# process. If the directories are relative paths, then they
+# are assumed to be relative to ${WRKSRC}.
+#
+# TEST_ENV is the shell environment that is exported to the make
+# process.
+#
+# TEST_MAKE_FLAGS is the list of arguments that is passed to the make
+# process.
+#
+TEST_DIRS?= ${BUILD_DIRS}
+TEST_ENV+= ${MAKE_ENV}
+TEST_MAKE_FLAGS?= ${MAKE_FLAGS}
+
+######################################################################
+### test (PUBLIC)
+######################################################################
+### build is a public target to build the sources from the package.
+###
+_TEST_TARGETS+= build
+_TEST_TARGETS+= acquire-test-lock
+_TEST_TARGETS+= ${_TEST_COOKIE}
+_TEST_TARGETS+= release-test-lock
+
+.PHONY: test
+.if !target(test)
+test: ${_TEST_TARGETS}
+.endif
+
+.PHONY: acquire-test-lock release-test-lock
+acquire-test-lock: acquire-lock
+release-test-lock: release-lock
+
+.if !exists(${_TEST_COOKIE})
+${_TEST_COOKIE}:
+ ${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${SETENV} ${BUILD_ENV} ${MAKE} ${MAKEFLAGS} real-test PKG_PHASE=build
+.else
+${_TEST_COOKIE}:
+ @${DO_NADA}
+.endif
+
+######################################################################
+### real-test (PRIVATE)
+######################################################################
+### real-test is a helper target onto which one can hook all of the
+### targets that do the actual test of the built objects.
+###
+_REAL_TEST_TARGETS+= test-check-interactive
+_REAL_TEST_TARGETS+= test-message
+_REAL_TEST_TARGETS+= pre-test
+_REAL_TEST_TARGETS+= do-test
+_REAL_TEST_TARGETS+= post-test
+_REAL_TEST_TARGETS+= test-cookie
+_REAL_TEST_TARGETS+= error-check
+
+.PHONY: real-test
+real-test: ${_REAL_TEST_TARGETS}
+
+.PHONY: test-message
+test-message:
+ @${PHASE_MSG} "Testing for ${PKGNAME}"
+
+######################################################################
+### test-check-interactive (PRIVATE)
+######################################################################
+### test-check-interactive checks whether we must do an interactive
+### test or not.
+###
+test-check-interactive:
+.if !empty(INTERACTIVE_STAGE:Mtest) && defined(BATCH)
+ @${ERROR_MSG} "The test stage of this package requires user interaction"
+ @${ERROR_MSG} "Please test manually with:"
+ @${ERROR_MSG} " \"cd ${.CURDIR} && ${MAKE} test\""
+ @${TOUCH} ${_INTERACTIVE_COOKIE}
+ @${FALSE}
+.else
+ @${DO_NADA}
+.endif
+
+######################################################################
+### pre-test, do-test, post-test (PUBLIC, override)
+######################################################################
+### {pre,do,post}-test are the heart of the package-customizable
+### test targets, and may be overridden within a package Makefile.
+###
+.PHONY: pre-test do-test post-test
+
+.if !target(do-test)
+. if defined(TEST_TARGET) && !empty(TEST_TARGET)
+do-test:
+. for _dir_ in ${TEST_DIRS}
+ ${_PKG_SILENT}${_PKG_DEBUG}${_ULIMIT_CMD} \
+ cd ${WRKSRC} && cd ${_dir_} && \
+ ${SETENV} ${MAKE_ENV} ${MAKE_PROGRAM} ${TEST_MAKE_FLAGS} \
+ -f ${MAKEFILE} ${TEST_TARGET}
+. endfor
+. else
+do-test:
+ @${DO_NADA}
+. endif
+.endif
+
+.if !target(pre-test)
+pre-test:
+ @${DO_NADA}
+.endif
+
+.if !target(post-test)
+post-test:
+ @${DO_NADA}
+.endif
+
+######################################################################
+### test-cookie (PRIVATE)
+######################################################################
+### test-cookie creates the "test" cookie file.
+###
+.PHONY: test-cookie
+test-cookie:
+ ${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${_TEST_COOKIE:H}
+ ${_PKG_SILENT}${_PKG_DEBUG}${ECHO} ${PKGNAME} >> ${_TEST_COOKIE}