makeplist revision 1.8
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# set defaults
8for x in $(
9${MAKE:-make} -f- all <<EOF
10.include <bsd.own.mk>
11all:
12	@echo machine=\${MACHINE}
13	@echo machine_arch=\${MACHINE_ARCH}
14	@echo machine_cpu=\${MACHINE_CPU}
15	@echo object_fmt=\${OBJECT_FMT}
16	@echo toolchain_missing=\${TOOLCHAIN_MISSING}
17.if defined(USE_XF86_4) && (\${USE_XF86_4} != no)
18	@echo x11_version=4
19.else
20	@echo x11_version=3
21.endif
22
23EOF
24); do
25	eval $x
26done
27
28. ./sets.subr
29setd=`dirname $0`
30prefix=/
31
32usage() {
33exec 1>&2
34
35echo "Usage: $0 [-a arch] [-m machine] [-s setsdir] [-p prefix] setname pkgname"
36echo "	-a arch		set arch (e.g, m68k, mips, powerpc)	[$machine_arch]"
37echo "	-m machine	set machine (e.g, amiga, i386, macppc)	[$machine]"
38echo "	-s setsdir	directory to find sets			[$setd]"
39echo "	-p prefix	prefix for created plist		[$prefix]"
40echo "	setname pkgname	set and package to build plist for"
41
42exit 1
43}
44
45# handle args
46while : ; do
47	case $1 in
48	-a*)
49		machine_arch=$2; shift
50		;;
51	-m*)
52		machine=$2; shift
53		;;
54	-s*)
55		setd=$2; shift
56		;;
57	-p*)
58		prefix=$2; shift
59		;;
60	-*)
61		usage
62		;;
63	*)
64		break
65		;;
66	esac
67	shift
68done
69if [ -n "$1" ]; then
70	setname="$1"
71else
72	usage
73fi
74if [ -n "$2" ]; then
75	pkgname=$2
76else
77	usage
78fi
79
80# Determine lib type.
81if [ "$object_fmt" = "ELF" ]; then
82	shlib=elf
83else
84	shlib=aout
85fi
86stlib=$shlib
87
88# Turn off shlibs for some ports.
89if [ "$machine_cpu" = "sh3" -o "$machine_arch" = "m68000" ]; then
90	shlib=no
91fi
92lkm=yes
93# Turn off LKMs for some ports.
94if [ "$machine" = "evbppc" ]; then
95	lkm=no
96fi
97
98filename=/tmp/makeplist.$$ 
99ffilename=/tmp/makeplist.files.$$ 
100dfilename=/tmp/makeplist.dirs.$$ 
101
102list_set_files $setname | \
103env PLISTPKG=$pkgname awk -- '/^#/ { next } $2 == ENVIRON["PLISTPKG"] {sub("^\./", "", $1); print $1}' | sort -u > $filename
104
105SELECTDIRS="-maxdepth 0 -type d"
106SELECTNONDIRS="-maxdepth 0 ! -type d"
107
108cd $prefix
109#
110# match the directories
111#
112xargs echo $SELECTDIRS < $filename | \
113while read ignore ignore ignore ignore args; do
114	[ -z "$args" ] && break 
115	find $args $SELECTDIRS
116done | awk '{ print "@dirrm " $1; }' > $dfilename
117
118#
119# match the non-directories
120#
121xargs echo $SELECTNONDIRS < $filename | \
122while read ignore ignore ignore ignore ignore args; do
123	[ -z "$args" ] && break 
124	find $args $SELECTNONDIRS
125done > $ffilename
126
127cd -
128
129echo "@cwd $prefix"
130if [ -s $ffilename ]; then
131	cat $ffilename
132fi
133if [ -s $dfilename ]; then
134        sort -r $dfilename
135fi
136
137rm -f $filename $ffilename $dfilename
138
139exit 0
140
141