#!/usr/bin/env tclsh
# try to find out what a package requires
# takes one arg: name of pkg (eg x11/kde3)
# set this to your pkgsrc directory
#cd /mnt/B/hclsmith/pkgsrc/pkgsrc
cd /usr/pkgsrc
if {[catch {set env(TMP)} tmp] && [catch {set env(TEMP)} tmp]} { set tmp /tmp }
set targ ZZfoo[pid]
set tf $tmp/$targ
set f [open $tf w]
puts $f ".include \"./Makefile\""
puts $f "$targ:"
puts $f "\t@echo '\$(DEPENDS)'"
close $f
set stk $argv
while {[llength $stk]} {
set pkg [lindex $stk 0]
set stk [lrange $stk 1 end]
if {[info exists Z($pkg)]} { continue }
set Z($pkg) {}
puts stderr "$pkg ..."
cd $pkg
set raw [exec make -f $tf $targ]
#puts stderr $raw
foreach i [split $raw] {
set i [string range $i [expr {3+[string last ../ $i]}] end]
if {-1==[string last / $i]} {
set i [string range $pkg 0 [string last / $pkg]]$i
}
lappend stk $i
lappend Z($pkg) $i
}
cd ../..
}
file delete $tf
# tsort output
foreach i [array names Z] {
foreach j $Z($i) {
puts $i\t$j
}
}
#eof