Home | History | Annotate | Line # | Download | only in sets
makeplist revision 1.15
      1 #!/bin/sh
      2 #
      3 # Print out the files in some or all lists.
      4 # Usage: makeplist [-a arch] [-m machine] [-s setsdir] [-p prefix] setname pkgname
      5 #
      6 
      7 rundir=${0%/*}
      8 . ${rundir}/sets.subr
      9 prefix=/
     10 
     11 usage()
     12 {
     13 	cat 1>&2 <<USAGE
     14 Usage: ${0##*/} [-a arch] [-m machine] [-s setsdir] [-p prefix] setname pkgname
     15 	-a arch		set arch (e.g, m68k, mips, powerpc)	[$MACHINE_ARCH]
     16 	-m machine	set machine (e.g, amiga, i386, macppc)	[$MACHINE]
     17 	-s setsdir	directory to find sets			[$setsdir]
     18 	-p prefix	prefix for created plist		[$prefix]
     19 	setname pkgname	set and package to build plist for
     20 USAGE
     21 	exit 1
     22 }
     23 
     24 # handle args
     25 while getopts a:m:p:s: ch; do
     26 	case ${ch} in
     27 	a)
     28 		MACHINE_ARCH=${OPTARG}
     29 		MACHINE_CPU=$(arch_to_cpu ${OPTARG})
     30 		;;
     31 	m)
     32 		MACHINE=${OPTARG}
     33 		;;
     34 	p)
     35 		prefix=${OPTARG}
     36 		;;
     37 	s)
     38 		setsdir=${OPTARG}
     39 		;;
     40 	*)
     41 		usage
     42 		;;
     43 	esac
     44 done
     45 shift $((${OPTIND} - 1))
     46 if [ $# -ne 2 ]; then
     47 	usage
     48 fi
     49 setname="$1"
     50 pkgname=$2
     51 
     52 filename=/tmp/makeplist.$$ 
     53 ffilename=/tmp/makeplist.files.$$ 
     54 dfilename=/tmp/makeplist.dirs.$$ 
     55 
     56 list_set_files $setname | \
     57     env PLISTPKG=$pkgname awk '
     58 	$2 == ENVIRON["PLISTPKG"] {
     59 		sub("^\\./", "", $1);
     60 		print $1
     61 	}' | sort -u > $filename
     62 
     63 SELECTDIRS="-maxdepth 0 -type d"
     64 SELECTNONDIRS="-maxdepth 0 ! -type d"
     65 
     66 cd $prefix
     67 #
     68 # match the directories
     69 #
     70 xargs echo $SELECTDIRS < $filename | \
     71 while read ignore ignore ignore ignore args; do
     72 	[ -z "$args" ] && break 
     73 	find $args $SELECTDIRS
     74 done | awk '{ print "@dirrm " $1; }' > $dfilename
     75 
     76 #
     77 # match the non-directories
     78 #
     79 xargs echo $SELECTNONDIRS < $filename | \
     80 while read ignore ignore ignore ignore ignore args; do
     81 	[ -z "$args" ] && break 
     82 	find $args $SELECTNONDIRS
     83 done > $ffilename
     84 
     85 cd -
     86 
     87 echo "@cwd $prefix"
     88 if [ -s $ffilename ]; then
     89 	cat $ffilename
     90 fi
     91 if [ -s $dfilename ]; then
     92         sort -r $dfilename
     93 fi
     94 
     95 rm -f $filename $ffilename $dfilename
     96 
     97 exit 0
     98