diff options
Diffstat (limited to 'mk/bulk/bsd.bulk-pkg.mk')
-rw-r--r-- | mk/bulk/bsd.bulk-pkg.mk | 73 |
1 files changed, 45 insertions, 28 deletions
diff --git a/mk/bulk/bsd.bulk-pkg.mk b/mk/bulk/bsd.bulk-pkg.mk index 52bbf4f960a..91bd8a7cc1f 100644 --- a/mk/bulk/bsd.bulk-pkg.mk +++ b/mk/bulk/bsd.bulk-pkg.mk @@ -1,4 +1,4 @@ -# $NetBSD: bsd.bulk-pkg.mk,v 1.65.2.2 2005/01/13 20:11:55 tv Exp $ +# $NetBSD: bsd.bulk-pkg.mk,v 1.65.2.3 2005/01/24 18:40:01 tv Exp $ # # Copyright (c) 1999, 2000 Hubert Feyrer <hubertf@NetBSD.org> @@ -53,6 +53,12 @@ WC?= wc # they're known to exist and be up to date, don't use them. USE_BULK_CACHE?= no +# This variable may be set to 'no' to avoid automatic rebuilding of dependent +# packages based solely on timestamps of the package's pkgsrc files and/or +# its dependency binary packages. This will cause rebuilding only when the +# full version number of the package changes (e.g., via PKGREVISION bump). +USE_BULK_TIMESTAMPS?= yes + # Shall we remove any packages which are installed, but not required # to build this package PRECLEAN?= yes @@ -118,6 +124,10 @@ ORDERFILE?= ${BULKFILESDIR}/.order${BULK_ID} # eventually for looking for leftover files (files not properly deinstalled) STARTFILE?= ${BULKFILESDIR}/.start${BULK_ID} +# File created and used by lintpkgsrc(8) to cache package metadata for +# pruning and bulk-upload exclusions. +LINTPKGSRC_DB?= ${BULKFILESDIR}/.lintpkgsrc.db${BULK_ID} + # File which is used as a database for bulk builds in which SPECIFIC_PKGS is # defined. This database is used to hold all the dependency and index # information for the specific packages as well as their dependencies. In a @@ -190,39 +200,46 @@ clean-bulk-cache: # check if the $REF file is uptodate, i.e. is newer than any of # the pkg files; prints "1" if upto date, "0" if not. bulk-check-uptodate: - @uptodate=1 ; \ + @uptodate=1; \ if [ -f "${REF}" ]; then \ - ${SHCOMMENT} "Check files of this package" ; \ - newfiles="`${FIND} . -type f -newer "${REF}" -print | ${EGREP} -v -e ./work -e COMMENT -e DESCR -e README.html -e CVS -e '^\./\.' || ${TRUE}`" ; \ - nnewfiles="`${FIND} . -type f -newer "${REF}" -print | ${EGREP} -v -e ./work -e COMMENT -e DESCR -e README.html -e CVS -e '^\./\.' | ${WC} -l`" ; \ - if [ "$$nnewfiles" -gt 0 ]; then \ - ${ECHO_MSG} >&2 "BULK> Package ${PKGNAME} ($$newfiles) modified since last 'make package' re-packaging..." ; \ - uptodate=0 ; \ + if [ "${REF:T}" != "${PKGFILE:T}" ]; then \ + ${ECHO_MSG} >&2 "BULK> ${REF} is out of date (new version ${PKGNAME}); rebuilding..."; \ + uptodate=0; \ + elif [ "${USE_BULK_TIMESTAMPS}" = "yes" ]; then \ + ${SHCOMMENT} "Check files of this package"; \ + newfiles="`${FIND} . -type f -newer "${REF}" -print | ${EGREP} -v -e ./work -e COMMENT -e DESCR -e README.html -e CVS -e '^\./\.' || ${TRUE}`"; \ + nnewfiles="`${FIND} . -type f -newer "${REF}" -print | ${EGREP} -v -e ./work -e COMMENT -e DESCR -e README.html -e CVS -e '^\./\.' | ${WC} -l`"; \ + if [ "$$nnewfiles" -gt 0 ]; then \ + ${ECHO_MSG} >&2 "BULK> Package ${PKGNAME} ($$newfiles) modified since last 'make package' re-packaging..."; \ + uptodate=0; \ + else \ + ${ECHO_MSG} >&2 "BULK> ${REF} is up to date."; \ + fi; \ else \ - ${ECHO_MSG} >&2 "BULK> ${REF} is up to date." ; \ - fi ; \ + ${ECHO_MSG} >&2 "BULK> ${REF} is up to date."; \ + fi; \ else \ - ${ECHO_MSG} >&2 "BULK> Package ${PKGNAME} not built yet, packaging..." ; \ - uptodate=0 ; \ - fi ; \ + ${ECHO_MSG} >&2 "BULK> Package ${PKGNAME} not built yet, packaging..."; \ + uptodate=0; \ + fi; \ if [ "$$uptodate" = "1" ]; then \ - ${SHCOMMENT} "Check required binary packages" ; \ + ${SHCOMMENT} "Check required binary packages"; \ (${DEPENDS:C/:.*$//:@d@${ECHO} ${d:Q};@} ${TRUE}) | \ - while read dep; do \ - ${SHCOMMENT} "check against the binary pkg that pkg_add would pick, too:" ; \ - ${SHCOMMENT} "(Only one should be returned here, really...)" ; \ - pkg=`${PKG_ADMIN} lsbest "${PACKAGES}/All/$$dep"` ; \ + (while read dep; do \ + ${SHCOMMENT} "check against the binary pkg that pkg_add would pick, too:"; \ + ${SHCOMMENT} "(Only one should be returned here, really...)"; \ + pkg=`${PKG_ADMIN} lsbest "${PACKAGES}/All/$$dep"`; \ if [ -z "$$pkg" ]; then \ - ${ECHO_MSG} >&2 "BULK> Required binary package $$dep does not exist, rebuilding... " ; \ - uptodate=0 ; \ - elif [ -n "$$(${FIND} $$pkg -prune -newer ${REF} -print)" ]; then \ - ${ECHO_MSG} >&2 "BULK> Required binary package $$dep (`basename $$pkg`) is newer, rebuilding... " ; \ - uptodate=0 ; \ + ${ECHO_MSG} >&2 "BULK> Required binary package $$dep does not exist, rebuilding..."; \ + exit 1; \ + elif [ "${USE_BULK_TIMESTAMPS}" = "yes" ] && [ -n "`${FIND} $$pkg -prune -newer ${REF} -print`" ]; then \ + ${ECHO_MSG} >&2 "BULK> Required binary package $$dep (`basename $$pkg`) is newer, rebuilding..."; \ + exit 1; \ else \ - ${ECHO_MSG} >&2 "BULK> Required binary package $$dep (`basename $$pkg`) is usable. " ; \ - fi ; \ - done ; \ - fi ; \ + ${ECHO_MSG} >&2 "BULK> Required binary package $$dep (`basename $$pkg`) is usable."; \ + fi; \ + done) || uptodate=0; \ + fi; \ ${ECHO_MSG} $$uptodate # rebuild binpkg if any of the pkg files is newer than the binary archive @@ -398,7 +415,7 @@ bulk-package: fi; \ ${ECHO_MSG} "BULK> $$pkgname ($$pkgdir) is broken because it depends upon ${PKGNAME} (${PKGPATH}) which is broken." \ >> ${PKGSRCDIR}/$$pkgdir/${BROKENFILE};\ - ${ECHO_MSG} "Please view the <a href=\"../../${PKGPATH}/${BROKENFILE}\">build log for ${PKGNAME}</a>" \ + ${ECHO_MSG} "Please view the <a href=\"../../${PKGPATH}/${BROKENFILE}\">build log for ${PKGNAME}</a>.<br />" \ >> ${PKGSRCDIR}/$$pkgdir/${BROKENFILE};\ nbrokenby=`expr $$nbrokenby + 1`;\ if ${GREP} -q " $$pkgdir/${BROKENFILE}" ${PKGSRCDIR}/${BROKENFILE} ; then :; else \ |