Note: I just use
ports-mgmt/portmaster now
Sync ports tree
csup ports-supfile
Update INDEXes
portsdb -Uu pkgdb -u
Get a list of out-of-date ports
pkg_version -vl '<' | cut -d' ' -f1
Pull dependency information for each out-of-date port (Children must be rebuilt/reinstalled as well)
pkg_info -Rq
Do this recursively, keeping track of the depth. Once you hit bottom on all the ports and their descendants, squash the depgraph, placing deeper dependencies later. I.e.:
A -B -C --D E -B -D =becomes= A E B C D ==
bdeptree() {
port="${1##/usr/ports/}"
printf "%${2}s%s\n" "" "${port}"
( cd /usr/ports/${port}
( make build-depends-list
[ "${2:-0}" -gt 0 ] && make run-depends-list
) | sort -u | while read port
do
bdeptree "${port}" $(( ${2:-0} + 1 ))
done
)
}
rdeptree() {
port="${1##/usr/ports/}"
printf "%${2}s%s\n" "" "${port}"
( cd /usr/ports/${port}
make run-depends-list | sort -u | while read port
do
rdeptree "${port}" $(( ${2:-0} + 1 ))
done
)
}
BASH script is at CheckPorts.sh
Once you have a list of ports to install, and their order, you can use a convenience function in sh to build a package
makepkg() {
rm *.tbz
make all deinstall install package clean && mv -v *.tbz /build/pkg/
}
