[66414] trunk/base/src

jmr at macports.org jmr at macports.org
Sun Apr 11 23:06:05 PDT 2010


Revision: 66414
          http://trac.macports.org/changeset/66414
Author:   jmr at macports.org
Date:     2010-04-11 23:06:02 -0700 (Sun, 11 Apr 2010)
Log Message:
-----------
add --no-exec option that prevents running of stored pre/post procs for uninstall, deactivate and activate

Modified Paths:
--------------
    trunk/base/src/port/port-help.tcl
    trunk/base/src/port/port.tcl
    trunk/base/src/registry2.0/portimage.tcl
    trunk/base/src/registry2.0/portuninstall.tcl

Modified: trunk/base/src/port/port-help.tcl
===================================================================
--- trunk/base/src/port/port-help.tcl	2010-04-12 04:54:38 UTC (rev 66413)
+++ trunk/base/src/port/port-help.tcl	2010-04-12 06:06:02 UTC (rev 66414)
@@ -9,6 +9,8 @@
 
 set porthelp(activate) {
 Activate the given ports
+
+--no-exec   Do not execute any stored pre- or post-activate procedures
 }
 
 set porthelp(archive) {
@@ -64,6 +66,8 @@
 
 set porthelp(deactivate) {
 Deactivates the given ports
+
+--no-exec   Do not execute any stored pre- or post-deactivate procedures
 }
 
 set porthelp(dependents) {
@@ -310,6 +314,8 @@
 
 set porthelp(uninstall) {
 Uninstall the given ports
+
+--no-exec   Do not execute any stored pre- or post-uninstall procedures
 }
 
 set porthelp(unload) $porthelp(load)

Modified: trunk/base/src/port/port.tcl
===================================================================
--- trunk/base/src/port/port.tcl	2010-04-12 04:54:38 UTC (rev 66413)
+++ trunk/base/src/port/port.tcl	2010-04-12 06:06:02 UTC (rev 66414)
@@ -2227,7 +2227,11 @@
     }
     foreachport $portlist {
         set composite_version [composite_version $portversion [array get variations]]
-        if {${macports::registry.format} == "receipt_sqlite" && ![catch {set ilist [registry::installed $portname $composite_version]}] && [llength $ilist] == 1} {
+        if {${macports::registry.format} == "receipt_sqlite"
+            && ![info exists options(ports_activate_no-exec)]
+            && ![catch {set ilist [registry::installed $portname $composite_version]}]
+            && [llength $ilist] == 1} {
+
             set i [lindex $ilist 0]
             set regref [registry::entry open $portname [lindex $i 1] [lindex $i 2] [lindex $i 3] [lindex $i 5]]
             if {[registry::run_target $regref activate [array get options]]} {
@@ -2257,7 +2261,10 @@
     }
     foreachport $portlist {
         set composite_version [composite_version $portversion [array get variations]]
-        if {${macports::registry.format} == "receipt_sqlite" && ![catch {set ilist [registry::active $portname]}]} {
+        if {${macports::registry.format} == "receipt_sqlite"
+            && ![info exists options(ports_deactivate_no-exec)]
+            && ![catch {set ilist [registry::active $portname]}]} {
+
             set i [lindex $ilist 0]
             set iversion [lindex $i 1]
             set irevision [lindex $i 2]
@@ -2790,7 +2797,11 @@
             continue
         }
         set composite_version [composite_version $portversion [array get variations]]
-        if {${macports::registry.format} == "receipt_sqlite" && ![catch {set ilist [registry::installed $portname $composite_version]}] && [llength $ilist] == 1} {
+        if {${macports::registry.format} == "receipt_sqlite"
+            && ![info exists options(ports_uninstall_no-exec)]
+            && ![catch {set ilist [registry::installed $portname $composite_version]}]
+            && [llength $ilist] == 1} {
+
             set i [lindex $ilist 0]
             set iactive [lindex $i 4]
             set regref [registry::entry open $portname [lindex $i 1] [lindex $i 2] [lindex $i 3] [lindex $i 5]]
@@ -3824,7 +3835,9 @@
                  long_description maintainer maintainers name platform
                  platforms portdir regex revision variant variants version}
     selfupdate  {nosync}
-    uninstall   {follow-dependents follow-dependencies}
+    activate    {no-exec}
+    deactivate  {no-exec}
+    uninstall   {follow-dependents follow-dependencies no-exec}
     variants    {index}
     clean       {all archive dist work logs}
     mirror      {new}

Modified: trunk/base/src/registry2.0/portimage.tcl
===================================================================
--- trunk/base/src/registry2.0/portimage.tcl	2010-04-12 04:54:38 UTC (rev 66413)
+++ trunk/base/src/registry2.0/portimage.tcl	2010-04-12 06:06:02 UTC (rev 66414)
@@ -66,6 +66,7 @@
 
 variable force 0
 variable use_reg2 0
+variable noexec 0
 
 # Activate a "Port Image"
 proc activate {name v optionslist} {
@@ -73,10 +74,14 @@
     array set options $optionslist
     variable force
     variable use_reg2
+    variable noexec
 
     if {[info exists options(ports_force)] && [string is true -strict $options(ports_force)] } {
         set force 1
     }
+    if {[info exists options(ports_activate_no-exec)]} {
+        set noexec $options(ports_activate_no-exec)
+    }
     if {[string equal ${macports::registry.format} "receipt_sqlite"]} {
         set use_reg2 1
         if {![info exists registry_open]} {
@@ -115,7 +120,7 @@
             }
         }
         foreach a $todeactivate {
-            if {![registry::run_target $a deactivate [list ports_nodepcheck 1]]} {
+            if {$noexec || ![registry::run_target $a deactivate [list ports_nodepcheck 1]]} {
                 deactivate $name "[$a version]_[$a revision][$a variants]" [list ports_nodepcheck 1]
             }
         }
@@ -409,6 +414,7 @@
 proc _activate_contents {port {imagefiles {}} {imagedir {}}} {
     variable force
     variable use_reg2
+    variable noexec
     global macports::prefix
 
     set files [list]
@@ -504,7 +510,7 @@
 
             # deactivate ports replaced_by this one
             foreach owner [array names todeactivate] {
-                if {![registry::run_target $owner deactivate [list ports_nodepcheck 1]]} {
+                if {$noexec || ![registry::run_target $owner deactivate [list ports_nodepcheck 1]]} {
                     deactivate [$owner name] "" [list ports_nodepcheck 1]
                 }
             }
@@ -543,9 +549,9 @@
             }
             # reactivate deactivated ports
             foreach entry [array names todeactivate] {
-                if {[$entry state] == "imaged" && ![registry::run_target $entry activate ""]} {
+                if {[$entry state] == "imaged" && ($noexec || ![registry::run_target $entry activate ""])} {
                     set pvers "[$entry version]_[$entry revision][$entry variants]"
-                    activate [$entry name] $pvers ""
+                    activate [$entry name] $pvers [list ports_activate_no-exec $noexec]
                 }
             }
             throw

Modified: trunk/base/src/registry2.0/portuninstall.tcl
===================================================================
--- trunk/base/src/registry2.0/portuninstall.tcl	2010-04-12 04:54:38 UTC (rev 66413)
+++ trunk/base/src/registry2.0/portuninstall.tcl	2010-04-12 06:06:02 UTC (rev 66414)
@@ -52,6 +52,10 @@
     if {[info exists options(ports_force)] && [string is true -strict $options(ports_force)]} {
         set uninstall.force yes
     }
+    # if no-exec is set for uninstall, set for deactivate too
+    if {[info exists options(ports_uninstall_no-exec)]} {
+        set options(ports_deactivate_no-exec) $options(ports_uninstall_no-exec)
+    }
     # check which registry API to use
     set use_reg2 [string equal ${macports::registry.format} "receipt_sqlite"]
 
@@ -126,7 +130,7 @@
             foreach depport [$port dependents] {
                 # make sure it's still installed, since a previous dep uninstall may have removed it
                 if {[registry::entry exists $depport] && ([$depport state] == "imaged" || [$depport state] == "installed")} {
-                    if {![registry::run_target $depport uninstall $optionslist]} {
+                    if {[info exists options(ports_uninstall_no-exec)] || ![registry::run_target $depport uninstall $optionslist]} {
                         set depname [$depport name]
                         set depver "[$depport version]_[$depport revision][$depport variants]"
                         registry_uninstall::uninstall $depname $depver $optionslist
@@ -142,8 +146,8 @@
             if {[info exists options(ports_dryrun)] && [string is true -strict $options(ports_dryrun)]} {
                 ui_msg "For $portname @${v}: skipping deactivate (dry run)"
             } else {
-                if {![registry::run_target $port deactivate $optionslist]} {
-                    portimage::deactivate $portname $v $optionslist
+                if {[info exists options(ports_uninstall_no-exec)] || ![registry::run_target $port deactivate $optionslist]} {
+                    portimage::deactivate $portname $v [array get options]
                 }
             }
         }
@@ -381,7 +385,7 @@
                         set ivariants [lindex $i 3]
                         if {[llength [registry::list_dependents $dep $iversion $irevision $ivariants]] == 0} {
                             set regref [registry::open_entry $dep $iversion $irevision $ivariants [lindex $i 5]]
-                            if {![registry::property_retrieve $regref requested] && (!$use_reg2 || ![registry::run_target $regref uninstall $optionslist])} {
+                            if {![registry::property_retrieve $regref requested] && (!$use_reg2 || [info exists options(ports_uninstall_no-exec)] || ![registry::run_target $regref uninstall $optionslist])} {
                                 set depver "${iversion}_${irevision}${ivariants}"
                                 registry_uninstall::uninstall $dep $depver $optionslist
                             }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20100411/12c7190c/attachment.html>


More information about the macports-changes mailing list