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