Ticket #806: pkg_detection.2.diff

File pkg_detection.2.diff, 2.4 KB (added by rshaw@…, 21 years ago)

ATTACHMENT: pkg detection patch

  • src/darwinports1.0/darwinports.tcl

    diff -b -u -w -r1.98 darwinports.tcl
    old new  
    669669        if {[string length $x]} {
    670670            set matchfile [lindex $x 0]
    671671        } else {
     672                # check Installer.app receipts also ...
     673                set x [glob -nocomplain [file join /Library/Receipts ${portname}-*]]
     674                if {[string length $x]} {
     675                        set matchfile [lindex $x 0]
     676                } else {
    672677            set matchfile ""
    673678        }
     679        }
    674680    } else {
    675681        set matchfile [file join ${darwinports::registry.path} ${portname}-${portversion}]
    676682    }
     
    685691    }
    686692    if {[file exists ${matchfile}.bz2]} {
    687693        return ${matchfile}.bz2
     694    }
     695        # check Installer.app receipts also ...
     696        set matchfile [file join /Library/Receipts ${portname}-${portversion}]
     697    if {[file exists ${matchfile}.pkg]} {
     698                return ${matchfile}.pkg
    688699    }
    689700    return ""
    690701}
  • src/port/port.tcl

    diff -b -u -w -r1.45 port.tcl
    old new  
    274274                set shortname [file rootname [file tail $rfile]]
    275275                set fd [open "|bzcat -q $rfile" r]
    276276            } else {
     277                                if {[file extension $rfile] == ".pkg"} {
     278                                        set shortname [file rootname [file tail $rfile]]
     279                                        puts "Port registered with Installer.app, listing BOM instead"
     280                                        puts "Contents of ${shortname} BOM"
     281                                        if {![catch {exec lsbom -f -s [file join $rfile Contents/Archive.bom]} bom_output]} {
     282                                                foreach f [split $bom_output \n] {
     283                                                        puts "\t[string trimleft $f .]"
     284                                                }
     285                                        } else {
     286                                                puts "Port failed: Could not list BOM for ${shortname}"
     287                                                exit 1
     288                                        }
     289                                        return
     290                                } else {
    277291                set shortname [file tail $rfile]
    278292                set fd [open $rfile r]
     293                                }
    279294            }
    280295            set entry [read $fd]
    281296            # kind of a corner case but I ran into it testing
  • src/port1.0/portuninstall.tcl

    diff -b -u -w -r1.29 portuninstall.tcl
    old new  
    6161
    6262    set rfile [registry_exists $portname $portversion]
    6363    if {[string length $rfile]} {
     64                if {[regexp .pkg$ $rfile]} {
     65                        return -code error [msgcat::mc "Uninstall failed: Port registered with Installer.app, must use Uninstaller.app to uninstall"]
     66                }
    6467        if {[regexp .bz2$ $rfile]} {
    6568            set fd [open "|bunzip2 -c $rfile" r]
    6669        } else {