[32723] trunk/base/src/port1.0/portdistcheck.tcl

afb at macports.org afb at macports.org
Sat Jan 12 03:49:44 PST 2008


Revision: 32723
          http://trac.macosforge.org/projects/macports/changeset/32723
Author:   afb at macports.org
Date:     2008-01-12 03:49:42 -0800 (Sat, 12 Jan 2008)

Log Message:
-----------
add new port command: port distcheck distcheck.check=filesize

Modified Paths:
--------------
    trunk/base/src/port1.0/portdistcheck.tcl

Modified: trunk/base/src/port1.0/portdistcheck.tcl
===================================================================
--- trunk/base/src/port1.0/portdistcheck.tcl	2008-01-12 11:43:40 UTC (rev 32722)
+++ trunk/base/src/port1.0/portdistcheck.tcl	2008-01-12 11:49:42 UTC (rev 32723)
@@ -63,6 +63,7 @@
 		# portfetch 1.0::checkfiles sets fetch_urls list.
 		global fetch_urls
 		checkfiles
+		set totalsize 0
 		
 		# Check all the files.
 		foreach {url_var distfile} $fetch_urls {
@@ -89,10 +90,46 @@
 				if {$count == 0} {
 					ui_error "no mirror had $distfile for $portname"
 				}
+			} elseif {${distcheck.check} == "filesize"} {
+				set count 0
+				foreach site [set $url_var] {
+					ui_debug [format [msgcat::mc "Checking %s from %s"] $distfile $site]
+					set file_url [portfetch::assemble_url $site $distfile]
+					if {[catch {set urlsize [curl getsize $file_url]} error]} {
+						ui_warn "couldn't fetch $file_url for $portname ($error)"
+					} else {
+						incr count
+						if {$urlsize > 0} {
+							ui_info "port $portname: $distfile $urlsize bytes"
+							incr totalsize $urlsize
+							break
+						}
+					}
+				}
+				if {$count == 0} {
+					ui_error "no mirror had $distfile for $portname"
+				}
 			} else {
 				ui_error "unknown distcheck.check ${distcheck.check}"
 				break
 			}
 		}
+		
+		if {${distcheck.check} == "filesize" && $totalsize > 0} {
+			if {$totalsize < 1024} {
+				set size $totalsize
+				set humansize "${size}"
+			} elseif {$totalsize < 1024*1024} {
+				set size [expr $totalsize / 1024.0]
+				set humansize [format "%.1fK" $size]
+			} elseif {$totalsize < 1024*1024*1024} {
+				set size [expr $totalsize / (1024.0*1024.0)]
+				set humansize [format "%.1fM" $size]
+			} else {
+				set size [expr $totalsize / (1024.0*1024.0*1024.0)]
+				set humansize [format "%.1fG" $size]
+			}
+			ui_msg "$portname: $humansize"
+		}
 	}
 }

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macports-changes/attachments/20080112/f4d05d75/attachment.html


More information about the macports-changes mailing list