I've built crux without any optional packages and am now trying to add several contributed packages and am figuring out which of the opt packages I need. Running with the -r option, adds every Pkgfile found below the current directory, which seems fairly useless. I see two choices. First is to have a small wrapper script, like this:
cd /etc/ports
for PORT in \
opt/libxml2 contrib/lighttpd \
opt/php \
opt/libjpeg opt/libpng opt/libgd opt/freetype contrib/php-gd
do
cd ${PORT}; pkgmk -d -i; cd ../..
done
The other idea (admittedly more SVR4-like) is to create a directory tree of the pkgs I want to install, perhaps with symlinks back tot he /usr/ports directories. This suffers from the fact that pkgmk -r doesn't seem to follow directory symlinks, so I'd have to create the tree with use lndir, assuming crux had lndir by default. :(
I've also tried enhancing the above script to scan each Pkgfile for a "Depends on" line and installing those packages first, but I've discovered that the line is usually missing or inaccurate. :(