cleanup: correct check for inactive deps

The dependencies registry key will return all installed versions of
ports that a port depends on, and of course at most one can be active.
Only deactivate if there is no active version of the dep.
This commit is contained in:
Joshua Root
2024-02-16 11:11:55 +11:00
parent 69e0bdfff5
commit 3c8f133adf
+8 -1
View File
@@ -160,9 +160,16 @@ foreach port [registry::entry imaged] {
# Deactivate anything with inactive dependencies
# (can happen with non-port: deps)
# https://trac.macports.org/ticket/68662
# Track if each port has any version active
# (ports may have multiple installed variants, e.g. universal)
set has_active [dict create]
foreach port [registry::entry installed] {
foreach dep [$port dependencies] {
if {[$dep state] ne "installed"} {
if {![dict exists $has_active [$dep name]]} {
dict set has_active [$dep name] [expr {[registry::entry installed [$dep name]] ne ""}]
}
if {![dict get $has_active [$dep name]]} {
ui_msg "Deactivating [$port name] because its dependency [$dep name] is not active"
deactivate_with_dependents $port
break