summaryrefslogtreecommitdiff
path: root/mk
diff options
context:
space:
mode:
authoragc <agc>2001-03-06 14:50:45 +0000
committeragc <agc>2001-03-06 14:50:45 +0000
commit47cb4556815748a97cbb23a5c14cf2bc763aff68 (patch)
tree79a56aded63101364f49a0cfee8382d077c50970 /mk
parentb0875da3c8a4c12401065c4812b755cbe0a5508e (diff)
downloadpkgsrc-47cb4556815748a97cbb23a5c14cf2bc763aff68.tar.gz
Add support for message digests other than md5 into pkgsrc. This is done
by using the pkgsrc/pkgtools/digest package, and adding dependencies in bsd.pkg.mk to make sure that that package is up to date. There is no discernable performance decrease in using sha1 checksums over md5 ones, and most people advocate the use of sha1 or rmd160 over md5. As part of this change, move the initial setting of LOCALBASE, X11BASE and CROSSBASE into bsd.prefs.mk from bsd.pkg.mk. Addresses PR 11809.
Diffstat (limited to 'mk')
-rw-r--r--mk/bsd.pkg.mk108
-rw-r--r--mk/bsd.prefs.mk27
2 files changed, 86 insertions, 49 deletions
diff --git a/mk/bsd.pkg.mk b/mk/bsd.pkg.mk
index 6377c8615f9..594c3f83636 100644
--- a/mk/bsd.pkg.mk
+++ b/mk/bsd.pkg.mk
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.pkg.mk,v 1.675 2001/02/28 10:16:58 skrll Exp $
+# $NetBSD: bsd.pkg.mk,v 1.676 2001/03/06 14:50:45 agc Exp $
#
# This file is in the public domain.
#
@@ -24,11 +24,8 @@
MKCRYPTO?= yes
##### Some overrides of defaults below on a per-OS basis.
-.if (${OPSYS} == "NetBSD")
-LOCALBASE?= ${DESTDIR}/usr/pkg
-.elif (${OPSYS} == "SunOS")
+.if (${OPSYS} == "SunOS")
DEF_UMASK?= 022
-X11BASE?= ${DESTDIR}/usr/openwin
.elif (${OPSYS} == "Linux")
DEF_UMASK?= 022
NOMANCOMPRESS?= yes
@@ -42,10 +39,6 @@ CHECK_SHLIBS?= YES # run check-shlibs after install
SHLIB_HANDLING?= YES # do automatic shared lib handling
NOCLEAN?= NO # don't clean up after update
-LOCALBASE?= ${DESTDIR}/usr/local
-X11BASE?= ${DESTDIR}/usr/X11R6
-CROSSBASE?= ${LOCALBASE}/cross
-
PKGSRCDIR?= ${.CURDIR:C|/[^/]*/[^/]*$||}
PKGPATH?= ${.CURDIR:C|.*/([^/]*/[^/]*)$|\1|}
PKGBASE?= ${PKGNAME:C/-[^-]*$//}
@@ -271,20 +264,13 @@ BUILD_COOKIE= ${WRKDIR}/.build_done
PATCH_COOKIE= ${WRKDIR}/.patch_done
PACKAGE_COOKIE= ${WRKDIR}/.package_done
+# New message digest defs
+DIGEST_ALGORITHM?= SHA1
+
# Miscellaneous overridable commands:
SHCOMMENT?= ${ECHO_MSG} >/dev/null '***'
-.if exists(/sbin/md5)
-MD5?= /sbin/md5
-.elif exists(/bin/md5)
-MD5?= /bin/md5
-.elif exists(/usr/bin/md5)
-MD5?= /usr/bin/md5
-.elif exists(${LOCALBASE}/bsd/bin/md5)
-MD5?= ${LOCALBASE}/bsd/bin/md5
-.else
-MD5?= md5
-.endif
-MD5_FILE?= ${FILESDIR}/md5
+
+DIGEST_FILE?= ${FILESDIR}/md5
PATCH_SUM_FILE?= ${FILESDIR}/patch-sum
.if exists(/usr/bin/m4)
@@ -692,6 +678,25 @@ PKG_CREATE?= PKG_DBDIR=${PKG_DBDIR} ${PKG_TOOLS_BIN}/pkg_create
PKG_DELETE?= PKG_DBDIR=${PKG_DBDIR} ${PKG_TOOLS_BIN}/pkg_delete
PKG_INFO?= PKG_DBDIR=${PKG_DBDIR} ${PKG_TOOLS_BIN}/pkg_info
+# Latest version of digest(1) required for pkgsrc
+DIGEST_REQD= 20010302
+
+uptodate-digest:
+ ${_PKG_SILENT}${_PKG_DEBUG} \
+ if [ ! -f ${DIGEST} -o ${DIGEST_VERSION} -lt ${DIGEST_REQD} ]; then \
+ case ${PKGNAME} in \
+ digest-*) \
+ ;; \
+ *) \
+ (cd ${PKGSRCDIR}/pkgtools/digest; \
+ ${MAKE} clean; \
+ if [ -f ${DIGEST} ]; then \
+ ${MAKE} ${MAKEFLAGS} deinstall; \
+ fi; \
+ ${MAKE} ${MAKEFLAGS} install) \
+ esac \
+ fi
+
.if !defined(PKGTOOLS_VERSION)
.if !exists(${IDENT})
PKGTOOLS_VERSION=${PKGTOOLS_REQD}
@@ -1269,9 +1274,10 @@ _FETCH_FILE= \
for site in $$sites; do \
${ECHO_MSG} "=> Attempting to fetch $$bfile from $${site}."; \
if ${FETCH_CMD} ${FETCH_BEFORE_ARGS} $${site}$${bfile} ${FETCH_AFTER_ARGS}; then \
- if [ -n "${FAILOVER_FETCH}" -a -f ${MD5_FILE} -a -f ${_DISTDIR}/$$bfile ]; then \
- CKSUM=`${MD5} < ${_DISTDIR}/$$bfile`; \
- CKSUM2=`${AWK} '$$1 == "MD5" && $$2 == "('$$file')"{print $$4;}' ${MD5_FILE}`; \
+ if [ -n "${FAILOVER_FETCH}" -a -f ${DIGEST_FILE} -a -f ${_DISTDIR}/$$bfile ]; then \
+ alg=`${AWK} 'NF == 4 && $$2 == "('$$file')" && $$3 == "=" {print $$1;}' ${DIGEST_FILE}`; \
+ CKSUM=`${DIGEST} $$alg < ${_DISTDIR}/$$bfile`; \
+ CKSUM2=`${AWK} '$$1 == '"$$alg"' && $$2 == "('$$file')"{print $$4;}' ${DIGEST_FILE}`; \
if [ "$$CKSUM" = "$$CKSUM2" -o "$$CKSUM2" = "IGNORE" ]; then \
continue 2; \
else \
@@ -1438,7 +1444,7 @@ do-extract:
# Patch
.if !target(do-patch)
-do-patch:
+do-patch: uptodate-digest
.if defined(PATCHFILES)
@${ECHO_MSG} "${_PKGSRC_IN}> Applying distribution patches for ${PKGNAME}"
${_PKG_SILENT}${_PKG_DEBUG}cd ${_DISTDIR}; \
@@ -1482,8 +1488,13 @@ do-patch:
*) \
if [ -f ${PATCH_SUM_FILE} ]; then \
filename=`expr $$i : '.*/\(.*\)'`; \
- calcsum=`${SED} -e '/\$$NetBSD.*/d' $$i | ${MD5}`; \
- recorded=`${AWK} '$$1 == "MD5" && $$2 == "('$$filename')" { print $$4; }' ${PATCH_SUM_FILE} || ${TRUE}`; \
+ algsum=`${AWK} 'NF == 4 && $$2 == "('$$filename')" && $$3 == "=" {print $$1 " " $$4}' ${PATCH_SUM_FILE} || ${TRUE}`; \
+ alg=`${ECHO} $$algsum | ${AWK} '{ print $$1 }'`; \
+ recorded=`${ECHO} $$algsum | ${AWK} '{ print $$2 }'`; \
+ calcsum=`${SED} -e '/\$$NetBSD.*/d' $$i | ${DIGEST} $$alg`; \
+ if [ ${PATCH_DEBUG_TMP} = yes ]; then \
+ ${ECHO_MSG} "=> Verifying $$filename (using digest algorithm $$alg)" ; \
+ fi; \
if [ "X$$recorded" = "X" ]; then \
${ECHO_MSG} "**************************************"; \
${ECHO_MSG} "Ignoring unknown patch file: $$i"; \
@@ -2441,30 +2452,30 @@ fetch-list-one-pkg:
# Checksumming utilities
.if !target(makesum)
-makesum: fetch
+makesum: fetch uptodate-digest
${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${FILESDIR}
- ${_PKG_SILENT}${_PKG_DEBUG}if [ -f ${MD5_FILE} ]; then ${RM} -f ${MD5_FILE}; fi
- @${ECHO} -n "$$" > ${MD5_FILE}; \
- ${ECHO} -n "NetBSD" >> ${MD5_FILE}; \
- ${ECHO} "$$" >> ${MD5_FILE}; \
- ${ECHO} "" >> ${MD5_FILE}
+ ${_PKG_SILENT}${_PKG_DEBUG}if [ -f ${DIGEST_FILE} ]; then ${RM} -f ${DIGEST_FILE}; fi
+ @${ECHO} -n "$$" > ${DIGEST_FILE}; \
+ ${ECHO} -n "NetBSD" >> ${DIGEST_FILE}; \
+ ${ECHO} "$$" >> ${DIGEST_FILE}; \
+ ${ECHO} "" >> ${DIGEST_FILE}
${_PKG_SILENT}${_PKG_DEBUG}cd ${DISTDIR}; \
for sumfile in "" ${_CKSUMFILES}; do \
if [ "X$$sumfile" = "X" ]; then continue; fi; \
- ${MD5} $$sumfile >> ${MD5_FILE}; \
+ ${DIGEST} ${DIGEST_ALGORITHM} $$sumfile >> ${DIGEST_FILE}; \
done
${_PKG_SILENT}${_PKG_DEBUG} \
for ignore in "" ${_IGNOREFILES}; do \
if [ "X$$ignore" = "X" ]; then continue; fi; \
- ${ECHO} "MD5 ($$ignore) = IGNORE" >> ${MD5_FILE}; \
+ ${ECHO} "${DIGEST_ALGORITHM} ($$ignore) = IGNORE" >> ${DIGEST_FILE}; \
done
.endif
.if !target(makepatchsum)
-makepatchsum mps:
+makepatchsum mps: uptodate-digest
${_PKG_SILENT}${_PKG_DEBUG} \
(${MKDIR} ${FILESDIR}; \
- ${ECHO_MSG} "${_PKGSRC_IN}> Making patch checksums"; \
+ ${ECHO_MSG} "${_PKGSRC_IN}> Making patch checksums"; \
if [ -f "${PATCH_SUM_FILE}" ]; then \
${AWK} -- '{print ; exit}' < ${PATCH_SUM_FILE} > ${PATCH_SUM_FILE}.new; \
else \
@@ -2482,7 +2493,7 @@ makepatchsum mps:
case $$sumfile in \
patch-local-*) ;; \
*.orig) continue ;; \
- *) ${ECHO} "MD5 ($$sumfile) = `${SED} -e '/\$$NetBSD.*/d' $$sumfile | ${MD5}`" >> ${PATCH_SUM_FILE}.new; \
+ *) ${ECHO} "${DIGEST_ALGORITHM} ($$sumfile) = `${SED} -e '/\$$NetBSD.*/d' $$sumfile | ${DIGEST} ${DIGEST_ALGORITHM}`" >> ${PATCH_SUM_FILE}.new; \
havepatches=1 ;; \
esac; \
done; \
@@ -2509,21 +2520,22 @@ makepatchsum mps:
.endif
.if !target(checksum)
-checksum: fetch
+checksum: fetch uptodate-digest
${_PKG_SILENT}${_PKG_DEBUG} \
- if [ ! -f ${MD5_FILE} ]; then \
- ${ECHO_MSG} "=> No MD5 checksum file."; \
+ if [ ! -f ${DIGEST_FILE} ]; then \
+ ${ECHO_MSG} "=> No checksum file."; \
else \
(cd ${DISTDIR}; OK="true"; \
for file in "" ${_CKSUMFILES}; do \
if [ "X$$file" = X"" ]; then continue; fi; \
- CKSUM=`${MD5} < $$file`; \
- CKSUM2=`${AWK} '$$1 == "MD5" && $$2 == "('$$file')"{print $$4;}' ${MD5_FILE}`; \
+ alg=`${AWK} 'NF == 4 && $$2 == "('$$file')" && $$3 == "=" {print $$1;}' ${DIGEST_FILE}`; \
+ CKSUM=`${DIGEST} $$alg < $$file`; \
+ CKSUM2=`${AWK} '$$1 == "'$$alg'" && $$2 == "('$$file')"{print $$4;}' ${DIGEST_FILE}`; \
if [ "$$CKSUM2" = "" ]; then \
${ECHO_MSG} "=> No checksum recorded for $$file."; \
OK="false"; \
elif [ "$$CKSUM2" = "IGNORE" ]; then \
- ${ECHO_MSG} "=> Checksum for $$file is set to IGNORE in md5 file even though"; \
+ ${ECHO_MSG} "=> Checksum for $$file is set to IGNORE in checksum file even though"; \
${ECHO_MSG} " the file is not in the "'$$'"{IGNOREFILES} list."; \
OK="false"; \
elif [ "$$CKSUM" = "$$CKSUM2" ]; then \
@@ -2535,18 +2547,18 @@ checksum: fetch
done; \
for file in "" ${_IGNOREFILES}; do \
if [ "X$$file" = X"" ]; then continue; fi; \
- CKSUM2=`${AWK} '$$1 == "MD5" && $$2 == "('$$file')"{print $$4;}' ${MD5_FILE}`; \
+ CKSUM2=`${AWK} 'NF == 4 && $$3 == "=" && $$2 == "('$$file')"{print $$4;}' ${DIGEST_FILE}`; \
if [ "$$CKSUM2" = "" ]; then \
${ECHO_MSG} "=> No checksum recorded for $$file, file is in "'$$'"{IGNOREFILES} list."; \
OK="false"; \
elif [ "$$CKSUM2" != "IGNORE" ]; then \
- ${ECHO_MSG} "=> Checksum for $$file is not set to IGNORE in md5 file even though"; \
+ ${ECHO_MSG} "=> Checksum for $$file is not set to IGNORE in checksum file even though"; \
${ECHO_MSG} " the file is in the "'$$'"{IGNOREFILES} list."; \
OK="false"; \
fi; \
done; \
if [ "$$OK" != "true" ]; then \
- ${ECHO_MSG} "Make sure the Makefile and md5 file (${MD5_FILE})"; \
+ ${ECHO_MSG} "Make sure the Makefile and checksum file (${DIGEST_FILE})"; \
${ECHO_MSG} "are up to date. If you want to override this check, type"; \
${ECHO_MSG} "\"${MAKE} NO_CHECKSUM=yes [other args]\"."; \
exit 1; \
@@ -3185,7 +3197,7 @@ fake-pkg: ${PLIST} ${DESCR} ${MESSAGE}
fi; \
done; \
if [ -f ${PATCH_SUM_FILE} ]; then \
- for f in `${AWK} '$$1 == "MD5" { gsub("[()]", "", $$2); print $$2 }' < ${PATCH_SUM_FILE}`; do \
+ for f in `${AWK} 'NF == 4 && $$3 == "=" { gsub("[()]", "", $$2); print $$2 }' < ${PATCH_SUM_FILE}`; do \
if [ -f ${PATCHDIR}/$$f ]; then \
files="$$files ${PATCHDIR}/$$f"; \
fi; \
diff --git a/mk/bsd.prefs.mk b/mk/bsd.prefs.mk
index 430794abed7..d62d13d110f 100644
--- a/mk/bsd.prefs.mk
+++ b/mk/bsd.prefs.mk
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.prefs.mk,v 1.21 2000/12/03 14:10:03 wiz Exp $
+# $NetBSD: bsd.prefs.mk,v 1.22 2001/03/06 14:50:46 agc Exp $
#
# Make file, included to get the site preferences, if any. Should
# only be included by package Makefiles before any .if defined()
@@ -143,4 +143,29 @@ NEED_NCURSES= YES
# recursive dependency problems!)
.endif # USE_CURSES
+##### Some overrides of defaults below on a per-OS basis.
+.if (${OPSYS} == "NetBSD")
+LOCALBASE?= ${DESTDIR}/usr/pkg
+.elif (${OPSYS} == "SunOS")
+X11BASE?= ${DESTDIR}/usr/openwin
+.endif
+
+LOCALBASE?= ${DESTDIR}/usr/local
+X11BASE?= ${DESTDIR}/usr/X11R6
+CROSSBASE?= ${LOCALBASE}/cross
+
+.ifndef DIGEST
+DIGEST:= ${LOCALBASE}/bin/digest
+MAKEFLAGS+= DIGEST=${DIGEST}
+.endif
+
+.if !defined(DIGEST_VERSION)
+.if exists(${DIGEST})
+DIGEST_VERSION!= ${DIGEST} -V
+.else
+DIGEST_VERSION= ${DIGEST_REQD}
+.endif
+MAKEFLAGS+= DIGEST_VERSION="${DIGEST_VERSION}"
+.endif
+
.endif # BSD_PKG_MK