Ticket #806: pkg_detection.diff

File pkg_detection.diff, 2.2 KB (added by robert@…, 21 years ago)

ATTACHMENT: pkg detection patch

  • src/darwinports1.0/darwinports.tcl

    diff -b -u -w -r1.96 darwinports.tcl
    old new  
    660660        if {[string length $x]} {
    661661            set matchfile [lindex $x 0]
    662662        } else {
     663                # check Installer.app receipts also ...
     664                set x [glob -nocomplain [file join /Library/Receipts ${portname}-*]]
     665                if {[string length $x]} {
     666                        set matchfile [lindex $x 0]
     667                } else {
    663668            set matchfile ""
    664669        }
     670        }
    665671    } else {
    666672        set matchfile [file join ${darwinports::registry.path} ${portname}-${portversion}]
    667673    }
     
    676682    }
    677683    if {[file exists ${matchfile}.bz2]} {
    678684        return ${matchfile}.bz2
     685    }
     686        # check Installer.app receipts also ...
     687        set matchfile [file join /Library/Receipts ${portname}-${portversion}]
     688    if {[file exists ${matchfile}.pkg]} {
     689                return ${matchfile}.pkg
    679690    }
    680691    return ""
    681692}
  • src/port1.0/portcontents.tcl

    diff -b -u -w -r1.8 portcontents.tcl
    old new  
    4747        if {[regexp .bz2$ $rfile]} {
    4848            set fd [open "|bunzip2 -c $rfile" r]
    4949        } else {
     50                if {[regexp .pkg$ $rfile]} {
     51                        ui_warn "Port registered with Installer.app, listing BOM instead"
     52                ui_msg "[format [msgcat::mc "Contents of %s-%s BOM"] ${portname} ${portversion}]"
     53                        if {![catch {exec lsbom -f -s [file join $rfile Contents/Archive.bom]} bom_output]} {
     54                                foreach f [split $bom_output \n] {
     55                                        ui_msg "\t$f"
     56                                }
     57                        } else {
     58                                return -code error "[format [msgcat::mc "Could not list BOM for %s-%s"] ${portname} ${portversion}]"
     59                        }
     60                        return
     61                } else {
    5062            set fd [open $rfile r]
     63                }
    5164        }
    5265        set entry [read $fd]
    5366        close $fd
  • 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 {