Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 18 Nov 2003 06:28:56 +0300
From:      Sergey Matveychuk <sem@ciam.ru>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   ports/59392: bsd.port.mk: add filesize field in distinfo
Message-ID:  <E1ALwXw-0000DH-7d@Current.sem-home.ciam.ru>
Resent-Message-ID: <200311180330.hAI3UCjH081000@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         59392
>Category:       ports
>Synopsis:       bsd.port.mk: add filesize field in distinfo
>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:   Mon Nov 17 19:30:11 PST 2003
>Closed-Date:
>Last-Modified:
>Originator:     Sergey Matveychuk
>Release:        FreeBSD 5.1-CURRENT i386
>Organization:
>Environment:
System: FreeBSD Current.sem-home.ciam.ru 5.1-CURRENT FreeBSD 5.1-CURRENT #1: Sun Oct 19 08:20:34 MSD 2003 root@current-test.sem-home.ciam.ru:/usr/obj/usr/src/sys/CURRENT i386


	
>Description:
	
	There are two ideas for the change:
	1) Users could know what size of files he need download.
	   It's most useful for modem users (like me) because the difference
	   is significant - tens kilobytes or tens megabytes.
	2) When developers change a file without changing its name
	   ports system try to reget file and append it. It's useless.
	   So if file size <= than expected and checksum mismatch
	   we need to remove the file and fetch it again.
	
	The patch is backward compatible, so we can move gradually.
	Comments are welcome.
>How-To-Repeat:
	
>Fix:

	


--- bsd.port.mk.1.473	Mon Nov 10 10:13:30 2003
+++ bsd.port.mk	Tue Nov 18 06:06:02 2003
@@ -873,6 +873,7 @@
 SED?=		/usr/bin/sed
 SETENV?=	/usr/bin/env
 SH?=		/bin/sh
+STAT?=		/usr/bin/stat
 STRIP_CMD?=	/usr/bin/strip
 SU_CMD?=	/usr/bin/su root -c
 TAIL?=		/usr/bin/tail
@@ -3839,7 +3840,8 @@
 	@if [ -f ${MD5_FILE} ]; then ${CAT} /dev/null > ${MD5_FILE}; fi
 	@(cd ${DISTDIR}; \
 	 for file in ${_CKSUMFILES}; do \
-		${MD5} $$file >> ${MD5_FILE}; \
+		(${MD5} $$file; ${STAT} -f%z $$file) | \
+					${SED} '1N;s/\n/ /' >> ${MD5_FILE}; \
 	 done)
 	@for file in ${_IGNOREFILES}; do \
 		${ECHO_CMD} "MD5 ($$file) = IGNORE" >> ${MD5_FILE}; \
@@ -3858,6 +3860,7 @@
 		  for file in ${_CKSUMFILES}; do \
 			CKSUM=`${MD5} < $$file`; \
 			CKSUM2=`${GREP} "^MD5 ($$file)" ${MD5_FILE} | ${AWK} '{print $$4}'`; \
+			SIZE=`${GREP} "^MD5 ($$file)" ${MD5_FILE} | ${AWK} '{print $$5}'`; \
 			if [ "$$CKSUM2" = "" ]; then \
 				${ECHO_MSG} ">> No checksum recorded for $$file."; \
 				OK="false"; \
@@ -3869,6 +3872,12 @@
 				${ECHO_MSG} ">> Checksum OK for $$file."; \
 			else \
 				${ECHO_MSG} ">> Checksum mismatch for $$file."; \
+				if [ "x$${SIZE}" != "x" ]; then \
+					if [ $${SIZE} -le `${STAT} -f%z $$file` ]; then \
+							${ECHO_MSG} "   File is old or broken with download. Removed to fetch again."; \
+							${RM} -f $$file; \
+					fi; \
+				fi; \
 				refetchlist="$$refetchlist$$file "; \
 				OK="false"; \
 			fi; \
>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E1ALwXw-0000DH-7d>