Home | History | Annotate | Line # | Download | only in sets
makeplist revision 1.9
      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