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