This fixes problems where a package sets PKG_*_REASON, which causes bsd.pkg.mk to define its own "checksum" replacement, which causes a "duplicate script" make error to occur.
118 lines
4 KiB
Makefile
118 lines
4 KiB
Makefile
# $NetBSD: checksum.mk,v 1.2 2006/07/13 18:40:33 jlam Exp $
|
|
|
|
_DIGEST_ALGORITHMS?= SHA1 RMD160
|
|
_PATCH_DIGEST_ALGORITHMS?= SHA1
|
|
|
|
# These variables are set by pkgsrc/mk/fetch/fetch.mk.
|
|
#_CKSUMFILES?= # empty
|
|
#_IGNOREFILES?= # empty
|
|
|
|
######################################################################
|
|
### checksum (PUBLIC)
|
|
######################################################################
|
|
### checksum is a public target to checksum the fetched distfiles
|
|
### for the package.
|
|
###
|
|
_CHECKSUM_CMD= \
|
|
${SETENV} DIGEST=${TOOLS_DIGEST:Q} CAT=${TOOLS_CAT:Q} \
|
|
ECHO=${TOOLS_ECHO:Q} TEST=${TOOLS_TEST:Q} \
|
|
${SH} ${PKGSRCDIR}/mk/checksum/checksum \
|
|
|
|
.PHONY: checksum
|
|
.if !target(checksum)
|
|
checksum: fetch
|
|
. for _alg_ in ${_DIGEST_ALGORITHMS}
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
if cd ${DISTDIR} && ${_CHECKSUM_CMD} -a ${_alg_:Q} \
|
|
${DISTINFO_FILE} ${_CKSUMFILES}; then \
|
|
${TRUE}; \
|
|
else \
|
|
${ERROR_MSG} "Make sure the Makefile and checksum file (${DISTINFO_FILE})"; \
|
|
${ERROR_MSG} "are up to date. If you want to override this check, type"; \
|
|
${ERROR_MSG} "\"${MAKE} NO_CHECKSUM=yes [other args]\"."; \
|
|
exit 1; \
|
|
fi
|
|
. endfor
|
|
.endif
|
|
|
|
######################################################################
|
|
### makesum (PUBLIC)
|
|
######################################################################
|
|
### makesum is a public target to add checksums of the distfiles for
|
|
### the package to ${DISTINFO_FILE}.
|
|
###
|
|
.PHONY: makesum
|
|
makesum: fetch
|
|
${_PKG_SILENT}${_PKG_DEBUG}set -e; \
|
|
newfile=${DISTINFO_FILE}.$$$$; \
|
|
if ${TEST} -f ${DISTINFO_FILE}; then \
|
|
{ ${GREP} '^.NetBSD' ${DISTINFO_FILE} || \
|
|
${ECHO} "$$""NetBSD""$$"; } > $$newfile; \
|
|
else \
|
|
${ECHO} "$$""NetBSD""$$" > $$newfile; \
|
|
fi; \
|
|
${ECHO} "" >> $$newfile; \
|
|
cd ${DISTDIR}; \
|
|
for sumfile in "" ${_CKSUMFILES}; do \
|
|
${TEST} -n "$$sumfile" || continue; \
|
|
for a in "" ${_DIGEST_ALGORITHMS}; do \
|
|
${TEST} -n "$$a" || continue; \
|
|
${TOOLS_DIGEST} $$a $$sumfile >> $$newfile; \
|
|
done; \
|
|
${WC} -c $$sumfile | \
|
|
${AWK} '{ print "Size (" $$2 ") = " $$1 " bytes" }' \
|
|
>> $$newfile; \
|
|
done; \
|
|
for ignore in "" ${_IGNOREFILES}; do \
|
|
${TEST} -n "$$ignore" || continue; \
|
|
for a in "" ${_DIGEST_ALGORITHMS}; do \
|
|
${TEST} -n "$$a" || continue; \
|
|
${ECHO} "$$a ($$ignore) = IGNORE" >> $$newfile; \
|
|
done; \
|
|
done; \
|
|
if ${TEST} -f ${DISTINFO_FILE}; then \
|
|
${AWK} '$$2 ~ /\(patch-[a-z0-9]+\)/ { print $$0 }' \
|
|
< ${DISTINFO_FILE} >> $$newfile; \
|
|
fi; \
|
|
if ${CMP} -s $$newfile ${DISTINFO_FILE}; then \
|
|
${RM} -f $$newfile; \
|
|
${ECHO_MSG} "=> distinfo: distfiles part unchanged."; \
|
|
else \
|
|
${MV} -f $$newfile ${DISTINFO_FILE}; \
|
|
fi
|
|
|
|
######################################################################
|
|
### makepatchsum (PUBLIC)
|
|
######################################################################
|
|
### makepatchsum is a public target to add checksums of the patches
|
|
### for the package to ${DISTINFO_FILE}.
|
|
###
|
|
makepatchsum:
|
|
${_PKG_SILENT}${_PKG_DEBUG}set -e; \
|
|
newfile=${DISTINFO_FILE}.$$$$; \
|
|
if ${TEST} -f ${DISTINFO_FILE}; then \
|
|
${AWK} '$$2 !~ /\(patch-[a-z0-9]+\)/ { print $$0 }' \
|
|
< ${DISTINFO_FILE} >> $$newfile; \
|
|
else \
|
|
${ECHO} "$$""NetBSD""$$" > $$newfile; \
|
|
${ECHO} "" >> $$newfile; \
|
|
fi; \
|
|
if ${TEST} -d ${PATCHDIR}; then \
|
|
( cd ${PATCHDIR}; \
|
|
for sumfile in "" patch-*; do \
|
|
case "$$sumfile" in \
|
|
""|"patch-*") continue ;; \
|
|
patch-local-*|*.orig|*.rej|*~) continue ;; \
|
|
esac; \
|
|
for a in "" ${_PATCH_DIGEST_ALGORITHMS}; do \
|
|
${TEST} -n "$$a" || continue; \
|
|
${ECHO} "$$a ($$sumfile) = `${SED} -e '/\$$NetBSD.*/d' $$sumfile | ${TOOLS_DIGEST} $$a`" >> $$newfile; \
|
|
done; \
|
|
done ); \
|
|
fi; \
|
|
if ${CMP} -s $$newfile ${DISTINFO_FILE}; then \
|
|
${RM} -f $$newfile; \
|
|
${ECHO_MSG} "=> distinfo: patches part unchanged."; \
|
|
else \
|
|
${MV} $$newfile ${DISTINFO_FILE}; \
|
|
fi
|