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