ports/62271: [PATCH] bsd.port.mk: calculate size of needed distribution files
Oliver Eikemeier
eikemeier at fillmore-labs.com
Mon Feb 2 16:20:32 UTC 2004
>Number: 62271
>Category: ports
>Synopsis: [PATCH] bsd.port.mk: calculate size of needed distribution 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: Mon Feb 02 08:20:13 PST 2004
>Closed-Date:
>Last-Modified:
>Originator: Oliver Eikemeier
>Release: FreeBSD 4.9-STABLE i386
>Organization:
Fillmore Labs - http://www.fillmore-labs.com
>Environment:
System: FreeBSD nuuk.fillmore-labs.com 4.9-STABLE
>Description:
Just a quick hack to calculate the total size of distribution files a
port and its dependencies need to fetch.
Improvements welcome:
- should it be print-missing-size-recursive?
- maybe a shorter summary is appropriate?
>How-To-Repeat:
# cd /usr/ports/x11/gnome2 ; make print-missing-size
To install gnome2-2.4.1 and its dependencies, you have to fetch 4 file(s) with a total size of 10.00 MBytes and 119 file (s) with unknown size.
(You mileage may vary, depending on the files you already have in /usr/ports/distfiles)
>Fix:
--- Mk/bsd.port.mk.orig Sun Jan 25 19:44:54 2004
+++ Mk/bsd.port.mk Mon Feb 2 17:04:53 2004
@@ -4011,6 +4049,56 @@
.if defined(DIST_SUBDIR)
@${ECHO_CMD} "${RMDIR} ${_DISTDIR} 2>/dev/null || ${TRUE}"
.endif
+.endif
+
+# Prints out the total size of files missing in ${DISTDIR}
+
+.if !target(print-missing-size)
+print-missing-size:
+ @for dir in ${.CURDIR} $$(${ALL-DEPENDS-LIST}); do \
+ (cd $$dir; ${MAKE} print-missing-files); \
+ done | ${SORT} -u +1 | ${AWK} ' \
+ BEGIN {t=0; f=0; u=0} \
+ {if ($$1 > 0) {t+=$$1; f+=1} else {u+=1}} \
+ END { \
+ if (t >= 10^9) \
+ s=sprintf("%.2f GBytes", t/10^9); \
+ else if (t >= 10^6) \
+ s=sprintf("%.2f MBytes", t/10^6); \
+ else if (t >= 10^3) \
+ s=sprintf("%.2f KBytes", t/10^3); \
+ else \
+ s=t " Bytes"; \
+ msg="To install ${PKGNAME} and its dependencies, you have to fetch " \
+ f " file(s) with a total size of " s; \
+ if (u) msg=msg " and " u " file(s) with unknown size."; \
+ print msg \
+ } \
+ '
+.endif
+
+.if !target(print-missing-files)
+print-missing-files:
+ @if [ -f ${MD5_FILE} ]; then \
+ for file in ${_CKSUMFILES}; do \
+ if [ -f "${DISTDIR}/$$file" ]; then \
+ continue; \
+ fi; \
+ pattern="`${ECHO_CMD} $$file | ${SED} -e 's/\./\\\\./g'`"; \
+ CKSIZE=`${GREP} "^SIZE ($$pattern)" ${MD5_FILE} | ${AWK} '{print $$4}'`; \
+ if [ -z "$$CKSIZE" ]; then \
+ ${ECHO_CMD} "0 ${DISTDIR}/$$file"; \
+ else \
+ ${ECHO_CMD} "$$CKSIZE ${DISTDIR}/$$file"; \
+ fi; \
+ done; \
+ for file in ${_IGNOREFILES}; do \
+ if [ -f "${DISTDIR}/$$file" ]; then \
+ continue; \
+ fi; \
+ ${ECHO_CMD} "0 ${DISTDIR}/$$file"; \
+ done; \
+ fi
.endif
# Prints out a list of files to fetch (useful to do a batch fetch)
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list