Date: Thu, 12 Feb 2004 15:56:09 -0800 (PST) From: Trevor Johnson <trevor@FreeBSD.org> To: FreeBSD-gnats-submit@FreeBSD.org Subject: ports/62761: patch for phasing out distinfo files Message-ID: <20040212235609.E725E16A4CF@hub.freebsd.org> Resent-Message-ID: <200402130000.i1D00O5B038184@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 62761 >Category: ports >Synopsis: patch for phasing out distinfo files >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Thu Feb 12 16:00:24 PST 2004 >Closed-Date: >Last-Modified: >Originator: Trevor Johnson >Release: N/A >Organization: >Environment: bsd.port.mk 1.484 >Description: This is a patch to record MD5 and SIZE in a port's Makefile with "make makesum" and use that information for "make checksum" in a way that remains compatible with ports that still have a distinfo or other MD5_FILE. The purpose is to reduce the number of files needed by the ports tree, to improve the extraction time of ports.tgz and lessen the consumption of inodes. >How-To-Repeat: N/A >Fix: also available via <URL:http://people.freebsd.org/~trevor/ports/distinfo-in-makefile.diff> N.B. in the sixth chunk I removed an "if" but didn't change the indentation. Index: /usr/ports/Mk/bsd.port.mk =================================================================== RCS file: /home/ncvs/ports/Mk/bsd.port.mk,v retrieving revision 1.484 diff -u -r1.484 bsd.port.mk --- /usr/ports/Mk/bsd.port.mk 4 Feb 2004 04:27:04 -0000 1.484 +++ /usr/ports/Mk/bsd.port.mk 12 Feb 2004 23:41:16 -0000 @@ -3119,7 +3119,7 @@ exit 1; \ fi ; \ if [ -f ${MD5_FILE} -a "x${NO_CHECKSUM}" = "x" ]; then \ - if ! ${GREP} -q "^MD5 ($$pattern)" ${MD5_FILE}; then \ + if ! ${GREP} -q "^MD5 ($$pattern)" ${MD5_FILE} ${MASTERDIR}/Makefile ; then \ ${ECHO_MSG} ">> $${DIR:+$$DIR/}$$file is not in ${MD5_FILE}."; \ ${ECHO_MSG} ">> Either ${MD5_FILE} is out of date, or"; \ ${ECHO_MSG} ">> $${DIR:+$$DIR/}$$file is spelled incorrectly."; \ @@ -3147,7 +3147,7 @@ for site in `eval $$SORTED_MASTER_SITES_CMD_TMP ${_RANDOMIZE_SITES}`; do \ ${ECHO_MSG} ">> Attempting to fetch from $${site}."; \ DIR=${DIST_SUBDIR}; \ - CKSIZE=`${GREP} "^SIZE ($${DIR:+$$DIR/}$$file)" ${MD5_FILE} | ${AWK} '{print $$4}'`; \ + CKSIZE=`${GREP} "^SIZE ($${DIR:+$$DIR/}$$file)" ${MD5_FILE} ${MASTERDIR}/Makefile | ${SED} "s:^# ::g" | ${AWK} '{print $$4}'`; \ case $${file} in \ */*) ${MKDIR} $${file%/*}; \ args="-o $${file} $${site}$${file}";; \ @@ -3201,7 +3201,7 @@ ${ECHO_MSG} ">> Attempting to fetch from $${site}."; \ DIR=${DIST_SUBDIR}; \ pattern="$${DIR:+$$DIR/}`${ECHO_CMD} $$file | ${SED} -e 's/\./\\\\./g'`"; \ - CKSIZE=`${GREP} "^SIZE ($$pattern)" ${MD5_FILE} | ${AWK} '{print $$4}'`; \ + CKSIZE=`${GREP} -w "SIZE ($$pattern)" ${MD5_FILE} ${MASTERDIR}/Makefile | ${AWK} '{print $$4}'`; \ case $${file} in \ */*) ${MKDIR} $${file%/*}; \ args="-o $${file} $${site}$${file}";; \ @@ -4139,7 +4139,7 @@ fi ; \ for site in `eval $$SORTED_MASTER_SITES_CMD_TMP ${_RANDOMIZE_SITES}`; do \ DIR=${DIST_SUBDIR}; \ - CKSIZE=`${GREP} "^SIZE ($${DIR:+$$DIR/}$$file)" ${MD5_FILE} | ${AWK} '{print $$4}'`; \ + CKSIZE=`${GREP} "^SIZE ($${DIR:+$$DIR/}$$file)" ${MD5_FILE} ${MASTERDIR}/Makefile | ${AWK} '{print $$4}'`; \ case $${file} in \ */*) args="-o $${file} $${site}$${file}";; \ *) args=$${site}$${file};; \ @@ -4171,7 +4171,7 @@ fi ; \ for site in `eval $$SORTED_PATCH_SITES_CMD_TMP ${_RANDOMIZE_SITES}`; do \ DIR=${DIST_SUBDIR}; \ - CKSIZE=`${GREP} "^SIZE ($${DIR:+$$DIR/}$$file)" ${MD5_FILE} | ${AWK} '{print $$4}'`; \ + CKSIZE=`${GREP} "^SIZE ($${DIR:+$$DIR/}$$file)" ${MD5_FILE} ${MASTERDIR}/Makefile | ${AWK} '{print $$4}'`; \ case $${file} in \ */*) args="-o $${file} $${site}$${file}";; \ *) args=$${site}$${file};; \ @@ -4202,38 +4202,51 @@ .if !target(makesum) makesum: @cd ${.CURDIR} && ${MAKE} ${__softMAKEFLAGS} fetch NO_CHECKSUM=yes - @if [ -f ${MD5_FILE} ]; then ${CAT} /dev/null > ${MD5_FILE}; fi + @${GREP} -v "^# SIZE (" ${MASTERDIR}/Makefile | ${GREP} -v "^# MD5 (" > \ + ${MASTERDIR}/Makefile.makesum @(cd ${DISTDIR}; \ for file in ${_CKSUMFILES}; do \ - ${MD5} $$file >> ${MD5_FILE}; \ + ${ECHO_CMD} "recording MD5 for" $$file; \ + ${MD5} $$file | ${SED} -e "s:^:\# :" >> \ + ${MASTERDIR}/Makefile.makesum; \ if [ -z "${NO_SIZE}" ]; then \ - ${ECHO_CMD} "SIZE ($$file) = "`${LS} -ALln $$file | ${AWK} '{print $$5}'` >> ${MD5_FILE}; \ + ${ECHO_CMD} "recording size for" $$file; \ + ${ECHO_CMD} "SIZE ($$file) = "`${LS} -ALln $$file | \ + ${AWK} '{print $$5}'` | ${SED} -e "s:^:\# :" >> \ + ${MASTERDIR}/Makefile.makesum; \ fi; \ done) @for file in ${_IGNOREFILES}; do \ - ${ECHO_CMD} "MD5 ($$file) = IGNORE" >> ${MD5_FILE}; \ + ${ECHO_CMD} "MD5 ($$file) = IGNORE" | ${SED} -e "s:^:\# :" >> \ + ${MASTERDIR}/Makefile.makesum; \ done + @${MV} ${MASTERDIR}/Makefile.makesum ${MASTERDIR}/Makefile .endif - .if !target(checksum) checksum: fetch - @if [ -f ${MD5_FILE} ]; then \ - (cd ${DISTDIR}; OK=""; \ + @(cd ${DISTDIR}; OK=""; \ for file in ${_CKSUMFILES}; do \ pattern="`${ECHO_CMD} $$file | ${SED} -e 's/\./\\\\./g'`"; \ CKSUM=`${MD5} < $$file`; \ - CKSUM2=`${GREP} "^MD5 ($$pattern)" ${MD5_FILE} | ${AWK} '{print $$4}'`; \ - if [ -z "$$CKSUM2" ]; then \ + CKSUM2=`${GREP} "MD5 ($$pattern)" ${MASTERDIR}/Makefile | \ + ${SED} "s/^# //g" | ${AWK} '{print $$4}'`; \ + CKSUM3=`${GREP} -s "MD5 ($$pattern)" ${MD5_FILE} | \ + ${AWK} '{print $$4}'`; \ + if [ -z "$$CKSUM2" -a -z "$$CKSUM3" ]; then \ ${ECHO_MSG} ">> No checksum recorded for $$file."; \ OK="false"; \ elif [ "$$CKSUM2" = "IGNORE" ]; then \ - ${ECHO_MSG} ">> Checksum for $$file is set to IGNORE in distinfo file even though"; \ + ${ECHO_MSG} ">> Checksum for $$file is set to IGNORE even though"; \ + ${ECHO_MSG} " the file is not in the "'$$'"{IGNOREFILES} list."; \ + OK="false"; \ + elif [ "$$CKSUM3" = "IGNORE" ]; then \ + ${ECHO_MSG} ">> Checksum for $$file is set to IGNORE even though"; \ ${ECHO_MSG} " the file is not in the "'$$'"{IGNOREFILES} list."; \ OK="false"; \ else \ ckmatch=${FALSE}; \ - for cksum2 in $$CKSUM2; do \ + for cksum2 in $$CKSUM2 $$CKSUM3; do \ if [ "$$cksum2" = "$$CKSUM" ]; then \ ckmatch=${TRUE}; \ break; \ @@ -4250,7 +4263,7 @@ done; \ for file in ${_IGNOREFILES}; do \ pattern="`${ECHO_CMD} $$file | ${SED} -e 's/\./\\\\./g'`"; \ - CKSUM2=`${GREP} "($$pattern)" ${MD5_FILE} | ${AWK} '{if(NR<2)print $$4}'`; \ + CKSUM2=`${GREP} "($$pattern)" ${MD5_FILE} ${MASTERDIR}/Makefile | ${AWK} '{if(NR<2)print $$4}'`; \ if [ "$$CKSUM2" = "" ]; then \ ${ECHO_MSG} ">> No checksum recorded for $$file, file is in "'$$'"{IGNOREFILES} list."; \ OK="false"; \ @@ -4281,7 +4294,7 @@ exit 1; \ fi); \ elif [ -n "${_CKSUMFILES:M*}" ]; then \ - ${ECHO_MSG} ">> No checksum file (${MD5_FILE})."; \ + ${ECHO_MSG} ; \ fi .endif >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040212235609.E725E16A4CF>