diff options
author | jlam <jlam@pkgsrc.org> | 2006-07-05 06:09:15 +0000 |
---|---|---|
committer | jlam <jlam@pkgsrc.org> | 2006-07-05 06:09:15 +0000 |
commit | e31200b87c973f65d2a1f7c8949cc1891040e67e (patch) | |
tree | 5cda57cdca85b18146d681fc321900e0b05b7666 /mk/build/test.mk | |
parent | 00478b39e6c53023f76627af6ffacebafc9db9d6 (diff) | |
download | pkgsrc-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.mk | 123 |
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} |