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