Skip to content

Instantly share code, notes, and snippets.

@jmroot
Created November 2, 2025 20:32
Show Gist options
  • Select an option

  • Save jmroot/f7ec18f982b3a1fed1f823f78b9affe0 to your computer and use it in GitHub Desktop.

Select an option

Save jmroot/f7ec18f982b3a1fed1f823f78b9affe0 to your computer and use it in GitHub Desktop.
Diff port dependencies
#! /usr/bin/env port-tclsh
package require macports
package require registry2
mportinit
set portname [lindex $argv 0]
set regref [lindex [registry::entry installed $portname] 0]
set requested_variants [$regref requested_variants]
set requested_variations [macports::_variants_to_variations $requested_variants]
set installed_mport [mportopen_installed [$regref name] [$regref version] [$regref revision] [$regref variants] {}]
set installed_portinfo [mportinfo $installed_mport]
lassign [mportlookup $portname] portname cur_portinfo
set cur_mport [mportopen [dict get $cur_portinfo porturl] [dict create subport $portname] $requested_variations]
set cur_portinfo [mportinfo $cur_mport]
puts "Port name: $portname\n"
puts "Installed variants: [dict get $installed_portinfo canonical_active_variants]"
puts "New variants: [dict get $cur_portinfo canonical_active_variants]\n"
foreach deptype $macports::all_dep_types {
set installed_deps [expr {[dict exists $installed_portinfo $deptype] ? [dict get $installed_portinfo $deptype] : {}}]
set cur_deps [expr {[dict exists $cur_portinfo $deptype] ? [dict get $cur_portinfo $deptype] : {}}]
if {$installed_deps ne $cur_deps} {
puts "Installed ${deptype}: $installed_deps"
puts "New ${deptype}: $cur_deps"
foreach dep $cur_deps {
if {$dep ni $installed_deps} {
puts "Added to ${deptype}: $dep"
}
}
foreach dep $installed_deps {
if {$dep ni $cur_deps} {
puts "Removed from ${deptype}: $dep"
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment