#!/bin/sh build () { pkg=$1 cd pkgsrc/$pkg get_pkg="" for file in `grep ^\.include\ \"\\. Makefile buildlink3.mk options.mk 2> /dev/null|cut -d \" -f 2|sort -u`; do if [ \! -f $file ]; then get_pkg="`echo $file | \ sed -e 's/^\.\.\/\.\.\///' -e 's/[^\/]*$//'` ${get_pkg}" fi done for dir in `grep ^DEPENDS Makefile options.mk buildlink3.mk 2> /dev/null|cut -d : -f 3`; do if [ \! -d $dir ]; then get_pkg="${get_pkg} `echo ${dir}| sed -e 's/^\.\.\/\.\.\///'`" fi done #grep TOOLS_DEPENDS.gmake? replace.mk |cut -d : -f 2 for dir in `grep ^USE_TOOLS Makefile|awk '{print $2}'`; do dir2=`grep TOOLS_DEPENDS.${dir}? $PKG_DIR/pkgsrc/mk/tools/replace.mk|cut -d : -f 2|sed -e 's/^\.\.\/\.\.\///'` if [ \! -d $dir2 ]; then get_pkg="${dir2} ${get_pkg}" fi done cd $PKG_DIR for get_repo in $get_pkg; do if [ \! -d pkgsrc/$get_repo ]; then echo $get_repo CVS_RSH=ssh cvs -Q -d anoncvs@anoncvs.NetBSD.org:/cvsroot co pkgsrc/$get_repo master_list="${master_list} ${get_repo}" build $get_repo fi done } PKG_DIR=`mktemp -d /tmp/pkgsrc-mini.XXX` #PKG_DIR=/tmp/pkgsrc-mini pkg=$@ tarfile=`mktemp $HOME/pkgsrc-mini-out.tar.gz.XXX` master_list=$@ cd $PKG_DIR for repo in mk pkgtools/pkg_install pkgtools/digest $pkg ; do [ \! -d pkgsrc/$repo ] && CVS_RSH=ssh cvs -Q -d anoncvs@anoncvs.NetBSD.org:/cvsroot co pkgsrc/$repo done for p in $pkg; do build $p done for repo in $master_list; do cd $PKG_DIR/pkgsrc/$repo make fetch done cd $PKG_DIR tar czvf $tarfile pkgsrc echo $master_list echo $tarfile rm -rf $PKG_DIR