Index: port1.0/portinstall.tcl
===================================================================
--- port1.0/portinstall.tcl	(revision 43019)
+++ port1.0/portinstall.tcl	(working copy)
@@ -128,7 +128,7 @@
 }
 
 proc install_main {args} {
-	global portname portversion portpath categories description long_description homepage depends_run installPlist package-install uninstall workdir worksrcdir pregrefix UI_PREFIX destroot portrevision maintainers ports_force portvariants targets depends_lib PortInfo epoch
+	global portname portversion portpath categories description long_description homepage depends_run installPlist package-install uninstall workdir worksrcdir pregrefix UI_PREFIX destroot portrevision maintainers ports_force portvariants targets depends_lib PortInfo epoch poison_version poison_revision
 
 	# Begin the registry entry
    	set regref [registry_new $portname $portversion $portrevision $portvariants $epoch]
@@ -154,6 +154,12 @@
 		registry_prop_store $regref depends_run $depends_run
 		registry_register_deps $depends_run $portname
     }
+	if {[info exists poison_version]} {
+		registry_prop_store $regref poison_version $poison_version
+    }
+	if {[info exists poison_revision]} {
+		registry_prop_store $regref poison_revision $poison_revision
+    }
 	if {[info exists depends_lib]} {
 		registry_prop_store $regref depends_lib $depends_lib
 		registry_register_deps $depends_lib $portname
Index: port1.0/portmain.tcl
===================================================================
--- port1.0/portmain.tcl	(revision 43019)
+++ port1.0/portmain.tcl	(working copy)
@@ -43,11 +43,12 @@
 # define options
 options prefix name version revision epoch categories maintainers
 options long_description description homepage
+options poison_version poison_revision
 options worksrcdir filesdir distname portdbpath libpath distpath sources_conf os.platform os.version os.major os.arch os.endian platforms default_variants install.user install.group macosx_deployment_target
 options universal_variant os.universal_supported
 
 # Export options via PortInfo
-options_export name version revision epoch categories maintainers platforms description long_description homepage
+options_export name version revision epoch categories maintainers platforms description long_description homepage poison_version poison_revision
 
 # Assign option procedure to default_variants
 option_proc default_variants handle_default_variants
@@ -66,6 +67,8 @@
 default filesdir files
 default revision 0
 default epoch 0
+default poison_version 0
+default poison_revision 0
 default distname {${portname}-${portversion}}
 default worksrcdir {$distname}
 default filespath {[file join $portpath $filesdir]}
Index: macports1.0/macports.tcl
===================================================================
--- macports1.0/macports.tcl	(revision 43019)
+++ macports1.0/macports.tcl	(working copy)
@@ -2252,6 +2252,31 @@
         }
     }
 
+    if {![info exists portinfo(poison_version)]} {
+        ui_error "Invalid port entry for $portname, missing poison_version"
+        return 1
+    }
+    if {![info exists portinfo(poison_revision)]} {
+        ui_error "Invalid port entry for $portname, missing poison_revision"
+        return 1
+    }
+    set poison_version $portinfo(poison_version)
+    set poison_revision $portinfo(poison_revision)
+    if { [rpm-vercomp $poison_version $version_installed] > 0
+                    || ([rpm-vercomp $poison_version $version_installed] == 0
+                        && [rpm-vercomp $poison_revision $revision_installed] > 0) } {
+        ui_debug "${portname} ${poison_version}_${poison_revision} was a significant change"
+        ui_debug "    and ${portname} ${poison_version}_${poison_revision} > ${portname} ${version_installed}_${revision_installed}"
+        if {![info exists options(ports_do_dependents)]} {
+            ui_debug "    upgrading dependents even without -R option"
+        }
+        if {![info exists options(ports_force)]} {
+            ui_debug "    forcing upgrade even without -f option"
+        }
+        set options(ports_do_dependents) 1
+        set options(ports_force) 1
+    }
+
     # Check if we have to do dependents
     if {[info exists options(ports_do_dependents)]} {
         # We do dependents ..

