[61108] trunk/dports/_resources/port1.0/group/muniversal-1.0.tcl

ryandesign at macports.org ryandesign at macports.org
Tue Dec 1 19:34:14 PST 2009


Revision: 61108
          http://trac.macports.org/changeset/61108
Author:   ryandesign at macports.org
Date:     2009-12-01 19:34:12 -0800 (Tue, 01 Dec 2009)
Log Message:
-----------
muniversal-1.0.tcl: compare contents of compressed files, not the compressed files themselves; see #22650

Modified Paths:
--------------
    trunk/dports/_resources/port1.0/group/muniversal-1.0.tcl

Modified: trunk/dports/_resources/port1.0/group/muniversal-1.0.tcl
===================================================================
--- trunk/dports/_resources/port1.0/group/muniversal-1.0.tcl	2009-12-02 03:18:19 UTC (rev 61107)
+++ trunk/dports/_resources/port1.0/group/muniversal-1.0.tcl	2009-12-02 03:34:12 UTC (rev 61108)
@@ -503,14 +503,42 @@
                                             switch -glob ${fl} {
                                                 *.jar {
                                                     # jar files can be different becasue of timestamp
-                                                    ui_debug "universal: merge: ${prefixDir}/${fl} is different in ${base1} and ${base2}; assume timestamp difference"
+                                                    ui_debug "universal: merge: ${prefixDir}/${fl} differs in ${base1} and ${base2}; assume timestamp difference"
                                                     copy ${dir1}/${fl} ${dir}
                                                 }
                                                 *.elc {
                                                     # elc files can be different because they record when and where they were built.
-                                                    ui_debug "universal: merge: ${prefixDir}/${fl} is different in ${base1} and ${base2}; assume trivial difference"
+                                                    ui_debug "universal: merge: ${prefixDir}/${fl} differs in ${base1} and ${base2}; assume trivial difference"
                                                     copy ${dir1}/${fl} ${dir}
                                                 }
+                                                *.gz -
+                                                *.bz2 {
+                                                    # compressed files can differ due to entropy
+                                                    switch -glob ${fl} {
+                                                        *.gz {
+                                                            set cat /usr/bin/gzcat
+                                                        }
+                                                        *.bz2 {
+                                                            set cat /usr/bin/bzcat
+                                                        }
+                                                    }
+                                                    set tempdir [mkdtemp "/tmp/muniversal.XXXXXXXX"]
+                                                    set tempfile1 "${tempdir}/${arch1}-[file rootname ${fl}]"
+                                                    set tempfile2 "${tempdir}/${arch2}-[file rootname ${fl}]"
+                                                    system "${cat} ${dir1}/${fl} > ${tempfile1}"
+                                                    system "${cat} ${dir2}/${fl} > ${tempfile2}"
+                                                    set identical "no"
+                                                    if { ! [catch {system "/usr/bin/cmp -s ${tempfile1} ${tempfile2}"}] } {
+                                                        # files are identical
+                                                        ui_debug "universal: merge: ${prefixDir}/${fl} differs in ${base1} and ${base2} but the contents are the same"
+                                                        set identical "yes"
+                                                        copy ${dir1}/${fl} ${dir}
+                                                    }
+                                                    delete ${tempfile1} ${tempfile2} ${tempdir}
+                                                    if {${identical}=="no"} {
+                                                        return -code error "${prefixDir}/${fl} differs in ${base1} and ${base2} and cannot be merged"
+                                                    }
+                                                }
                                                 default {
                                                     return -code error "${prefixDir}/${fl} differs in ${base1} and ${base2} and cannot be merged"
                                                 }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20091201/951a94ae/attachment.html>


More information about the macports-changes mailing list