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
7rundir=${0%/*}
8. ${rundir}/sets.subr
9prefix=/
10
11usage()
12{
13	cat 1>&2 <<USAGE
14Usage: ${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
20USAGE
21	exit 1
22}
23
24# handle args
25while 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
44done
45shift $((${OPTIND} - 1))
46if [ $# -ne 2 ]; then
47	usage
48fi
49setname="$1"
50pkgname=$2
51
52filename=/tmp/makeplist.$$ 
53ffilename=/tmp/makeplist.files.$$ 
54dfilename=/tmp/makeplist.dirs.$$ 
55
56list_set_files $setname | \
57    env PLISTPKG=$pkgname awk '
58	$2 == ENVIRON["PLISTPKG"] {
59		sub("^\\./", "", $1);
60		print $1
61	}' | sort -u > $filename
62
63SELECTDIRS="-maxdepth 0 -type d"
64SELECTNONDIRS="-maxdepth 0 ! -type d"
65
66cd $prefix
67#
68# match the directories
69#
70xargs echo $SELECTDIRS < $filename | \
71while read ignore ignore ignore ignore args; do
72	[ -z "$args" ] && break 
73	find $args $SELECTDIRS
74done | awk '{ print "@dirrm " $1; }' > $dfilename
75
76#
77# match the non-directories
78#
79xargs echo $SELECTNONDIRS < $filename | \
80while read ignore ignore ignore ignore ignore args; do
81	[ -z "$args" ] && break 
82	find $args $SELECTNONDIRS
83done > $ffilename
84
85cd -
86
87echo "@cwd $prefix"
88if [ -s $ffilename ]; then
89	cat $ffilename
90fi
91if [ -s $dfilename ]; then
92        sort -r $dfilename
93fi
94
95rm -f $filename $ffilename $dfilename
96
97exit 0
98