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