[69192] contrib
ryandesign at macports.org
ryandesign at macports.org
Mon Jun 28 01:41:38 PDT 2010
Revision: 69192
http://trac.macports.org/changeset/69192
Author: ryandesign at macports.org
Date: 2010-06-28 01:41:33 -0700 (Mon, 28 Jun 2010)
Log Message:
-----------
port-depgraph: create by copying port-rdeps and removing the ASCII output parts
Added Paths:
-----------
contrib/port-depgraph/
contrib/port-depgraph/port-depgraph
Removed Paths:
-------------
contrib/port-depgraph/port-rdeps
Copied: contrib/port-depgraph/port-depgraph (from rev 69191, contrib/port-rdeps/port-rdeps)
===================================================================
--- contrib/port-depgraph/port-depgraph (rev 0)
+++ contrib/port-depgraph/port-depgraph 2010-06-28 08:41:33 UTC (rev 69192)
@@ -0,0 +1,178 @@
+#!/usr/bin/tclsh
+#
+# Run a recursive dependency listing against a given port, outputing
+# a Graphviz graph description. To create a graphical representation
+# of that graph, run for example:
+# $ port-depgraph apache2 | dot -Tpng -o apache2.png
+
+
+set MY_VERSION 0.1
+
+
+array set portsSeen {}
+
+
+proc printUsage {} {
+ puts "Usage: $::argv0 \[-dhrvV\] \[-t macports-tcl-path\] port-name \[variants...\]"
+ puts " -h This help"
+ puts " -t Give a different location for the base MacPorts Tcl"
+ puts " file (defaults to /Library/Tcl)"
+ puts " -v verbose output, includes dependency labels"
+ puts " -V show version and MacPorts version being used"
+ puts ""
+ puts "port-name is the name of a port to show dependencies"
+ puts "variants is the list of variants to enable/disable: +one -two..."
+ puts ""
+ puts "Dependency types are represented as follows:"
+ puts " depends_run is dashed"
+ puts " depends_build is dotted"
+ puts " depends_lib is solid"
+}
+
+
+proc dependenciesForPort {portName variantInfo} {
+ set dependencyList [list]
+ set portSearchResult [mportlookup $portName]
+ if {[llength $portSearchResult] < 1} {
+ puts "Warning: port \"$portName\" not found"
+ return [list]
+ }
+ array set portInfo [lindex $portSearchResult 1]
+ set mport [mportopen $portInfo(porturl) {} $variantInfo]
+ array unset portInfo
+ array set portInfo [mportinfo $mport]
+ mportclose $mport
+ array set dependencyDictionary {depends_build build depends_lib lib depends_run run}
+ foreach dependencyType [array names dependencyDictionary] {
+ if {[info exists portInfo($dependencyType)] && [string length $portInfo($dependencyType)] > 0} {
+ foreach dependency $portInfo($dependencyType) {
+ set afterColon [expr {[string last ":" $dependency] + 1}]
+ lappend dependencyList [list $dependencyDictionary($dependencyType) [string range $dependency 0 [expr [string first ":" $dependency] - 1]] [string range $dependency $afterColon end]]
+ }
+ }
+ }
+
+ return $dependencyList
+}
+
+
+proc print_dependencies {dependencyArray portName verbose} {
+ upvar $dependencyArray portDependencies
+ global portsSeen
+ if {[info exists portsSeen($portName)]} {
+ return
+ }
+ set portsSeen($portName) 1
+ foreach aList $portDependencies($portName) {
+ set aType [lindex $aList 0]
+ set aBy [lindex $aList 1]
+ set aPort [lindex $aList 2]
+
+ set style "solid"
+ if {$aType == "run"} {
+ set style "dashed"
+ } elseif {$aType == "build"} {
+ set style "dotted"
+ }
+
+ set color "black"
+ if {$aBy != "port"} {
+ set color "#708090"
+ }
+
+ if {!$verbose} {
+ puts [format {"%s" -> "%s" [ style=%s ] } $portName $aPort $style]
+ } else {
+ puts [format {"%s" -> "%s" [ label="%s",style="%s",color="%s" ]} $portName $aPort $aBy $style $color]
+ }
+
+ print_dependencies portDependencies $aPort $verbose
+ }
+}
+
+
+proc find_all_dependencies {portName variantInfo verbose} {
+ array set portDependencies {}
+ set portList [list $portName]
+ while {[llength $portList] > 0} {
+ set aPort [lindex $portList 0]
+ set portDependencies($aPort) [dependenciesForPort $aPort $variantInfo]
+ set portList [lreplace $portList 0 0]
+ foreach possiblyNewPort $portDependencies($aPort) {
+ if {![info exists portDependencies([lindex $possiblyNewPort 2])]} {
+ lappend portList [lindex $possiblyNewPort 2]
+ }
+ }
+ }
+
+ puts "strict digraph \"$portName\" \{"
+
+ print_dependencies portDependencies $portName $verbose
+
+ puts "\}"
+}
+
+
+# Begin
+
+set macportsTclPath /Library/Tcl
+set verbose 0
+set showVersion 0
+
+while {[string index [lindex $::argv 0] 0] == "-" } {
+ switch [string range [lindex $::argv 0] 1 end] {
+ h {
+ printUsage
+ exit 0
+ }
+ t {
+ if {[llength $::argv] < 2} {
+ puts "-t needs a path"
+ printUsage
+ exit 1
+ }
+ set macportsTclPath [lindex $::argv 1]
+ set ::argv [lrange $::argv 1 end]
+ }
+ v {
+ set verbose 1
+ }
+ V {
+ set showVersion 1
+ }
+ default {
+ puts "Unknown option [lindex $::argv 0]"
+ printUsage
+ exit 1
+ }
+ }
+ set ::argv [lrange $::argv 1 end]
+}
+
+source ${macportsTclPath}/macports1.0/macports_fastload.tcl
+package require macports
+mportinit
+
+if {$showVersion} {
+ puts "Version $MY_VERSION"
+ puts "MacPorts version [macports::version]"
+ exit 0
+}
+
+if {[llength $::argv] == 0} {
+ puts "Error: missing port-name"
+ printUsage
+ exit 1
+}
+set portName [lindex $::argv 0]
+set ::argv [lrange $::argv 1 end]
+
+array set variantInfo {}
+foreach variantSetting $::argv {
+ set flag [string index $variantSetting 0]
+ set variantName [string range $variantSetting 1 end]
+ set variantInfo($variantName) $flag
+}
+
+find_all_dependencies $portName [array get variantInfo] $verbose
+
Deleted: contrib/port-depgraph/port-rdeps
===================================================================
--- contrib/port-rdeps/port-rdeps 2010-06-28 06:54:45 UTC (rev 69191)
+++ contrib/port-depgraph/port-rdeps 2010-06-28 08:41:33 UTC (rev 69192)
@@ -1,212 +0,0 @@
-#!/usr/bin/tclsh
-#
-# Run a recursive dependency listing against a given port, outputing
-# either a basic text display of the result, or dot language so a graph
-# can be created.
-# The dot functionality can be used by doing:
-# $ port-rdeps -d apache2 | dot -Tpng -o apache2.png
-#
-# Todo:
-# Does not differentiate, in output, between bin/lib/run type dependencies
-# Once "good enough", integrate into port
-#
-# http://trac.macports.org/ticket/11892
-
-
-set MY_VERSION 1.0
-
-
-array set portsSeen {}
-
-
-proc printUsage {} {
- puts "Usage: $::argv0 \[-dhrvV\] \[-t macports-tcl-path\] port-name \[variants...\]"
- puts " -d Output dot-format instead of plain ASCII"
- puts " -h This help"
- puts " -r Reduce ASCII output, showing a given port only once"
- puts " -t Give a different location for the base MacPorts Tcl"
- puts " file (defaults to /Library/Tcl)"
- puts " -v verbose output, includes dependency labels"
- puts " -V show version and MacPorts version being used"
- puts ""
- puts "port-name is the name of a port to show dependencies"
- puts "variants is the list of variants to enable/disable: +one -two..."
- puts ""
- puts "For dot output, dependency types are represented as follows:"
- puts " depends_run is dashed"
- puts " depends_build is dotted"
- puts " depends_lib is solid"
-}
-
-
-proc dependenciesForPort {portName variantInfo} {
- set dependencyList [list]
- set portSearchResult [mportlookup $portName]
- if {[llength $portSearchResult] < 1} {
- puts "Warning: port \"$portName\" not found"
- return [list]
- }
- array set portInfo [lindex $portSearchResult 1]
- set mport [mportopen $portInfo(porturl) {} $variantInfo]
- array unset portInfo
- array set portInfo [mportinfo $mport]
- mportclose $mport
- array set dependencyDictionary {depends_build build depends_lib lib depends_run run}
- foreach dependencyType [array names dependencyDictionary] {
- if {[info exists portInfo($dependencyType)] && [string length $portInfo($dependencyType)] > 0} {
- foreach dependency $portInfo($dependencyType) {
- set afterColon [expr {[string last ":" $dependency] + 1}]
- lappend dependencyList [list $dependencyDictionary($dependencyType) [string range $dependency 0 [expr [string first ":" $dependency] - 1]] [string range $dependency $afterColon end]]
- }
- }
- }
-
- return $dependencyList
-}
-
-
-proc print_dependencies {dependencyArray portName outputAscii reduceAscii verbose} {
- upvar $dependencyArray portDependencies
- global portsSeen
- if {$outputAscii} {
- set spaces [string repeat " " [expr {$outputAscii * 2}]]
- set outputAscii [expr {$outputAscii + 1}]
- } elseif {[info exists portsSeen($portName)]} {
- return
- }
- set portsSeen($portName) 1
- foreach aList $portDependencies($portName) {
- set aType [lindex $aList 0]
- set aBy [lindex $aList 1]
- set aPort [lindex $aList 2]
-
- if {$outputAscii && $reduceAscii && [info exists portsSeen($aPort)]} {
- continue
- }
-
- set style "solid"
- if {$aType == "run"} {
- set style "dashed"
- } elseif {$aType == "build"} {
- set style "dotted"
- }
-
- set color "black"
- if {$aBy != "port"} {
- set color "#708090"
- }
-
- if {$outputAscii && !$verbose} {
- puts "${spaces}${aPort}"
- } elseif {$outputAscii && $verbose} {
- puts "${spaces}${aPort} (depends_${aType}, ${aBy})"
- } elseif {!$outputAscii && !$verbose} {
- puts [format {"%s" -> "%s" [ style=%s ] } $portName $aPort $style]
- } elseif {!$outputAscii && $verbose} {
- puts [format {"%s" -> "%s" [ label="%s",style="%s",color="%s" ]} $portName $aPort $aBy $style $color]
- }
-
- print_dependencies portDependencies $aPort $outputAscii $reduceAscii $verbose
- }
-}
-
-
-proc find_all_dependencies {portName variantInfo outputAscii reduceAscii verbose} {
- array set portDependencies {}
- set portList [list $portName]
- while {[llength $portList] > 0} {
- set aPort [lindex $portList 0]
- set portDependencies($aPort) [dependenciesForPort $aPort $variantInfo]
- set portList [lreplace $portList 0 0]
- foreach possiblyNewPort $portDependencies($aPort) {
- if {![info exists portDependencies([lindex $possiblyNewPort 2])]} {
- lappend portList [lindex $possiblyNewPort 2]
- }
- }
- }
-
- if {$outputAscii} {
- puts "Dependencies of $portName:"
- } else {
- puts "strict digraph \"$portName\" \{"
- }
-
- print_dependencies portDependencies $portName $outputAscii $reduceAscii $verbose
-
- if {!$outputAscii} {
- puts "\}"
- }
-}
-
-
-# Begin
-
-set asciiOutput 1
-set reduceAsciiOutput 0
-set macportsTclPath /Library/Tcl
-set verbose 0
-set showVersion 0
-
-while {[string index [lindex $::argv 0] 0] == "-" } {
- switch [string range [lindex $::argv 0] 1 end] {
- d {
- set asciiOutput 0
- }
- h {
- printUsage
- exit 0
- }
- r {
- set reduceAsciiOutput 1
- }
- t {
- if {[llength $::argv] < 2} {
- puts "-t needs a path"
- printUsage
- exit 1
- }
- set macportsTclPath [lindex $::argv 1]
- set ::argv [lrange $::argv 1 end]
- }
- v {
- set verbose 1
- }
- V {
- set showVersion 1
- }
- default {
- puts "Unknown option [lindex $::argv 0]"
- printUsage
- exit 1
- }
- }
- set ::argv [lrange $::argv 1 end]
-}
-
-source ${macportsTclPath}/macports1.0/macports_fastload.tcl
-package require macports
-mportinit
-
-if {$showVersion} {
- puts "Version $MY_VERSION"
- puts "MacPorts version [macports::version]"
- exit 0
-}
-
-if {[llength $::argv] == 0} {
- puts "Error: missing port-name"
- printUsage
- exit 1
-}
-set portName [lindex $::argv 0]
-set ::argv [lrange $::argv 1 end]
-
-array set variantInfo {}
-foreach variantSetting $::argv {
- set flag [string index $variantSetting 0]
- set variantName [string range $variantSetting 1 end]
- set variantInfo($variantName) $flag
-}
-
-find_all_dependencies $portName [array get variantInfo] $asciiOutput $reduceAsciiOutput $verbose
-
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20100628/f90c8bce/attachment.html>
More information about the macports-changes
mailing list