summaryrefslogtreecommitdiff
path: root/mk/bulk/bsd.bulk-pkg.mk
diff options
context:
space:
mode:
Diffstat (limited to 'mk/bulk/bsd.bulk-pkg.mk')
-rw-r--r--mk/bulk/bsd.bulk-pkg.mk73
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 \