NetBSD/distrib/sets/makeflist
jwise f2cc32c633 Compatible upgrade to set list behavior -- any (whitespace separated) fields
after the first in each line of a set list are ignored.  This introduces
no change in current set list behavior, but will need to be revisited if
we wish to distribute files with spaces in their names -- in this case we can
move to tab separated fields or some other behavior.

Current set lists work exactly as before, but in the future set lists may
have additional fields for use in a system packaging script.

I will post a detailed work plan for the system package system which uses
this to tech-pkg and tech-install in the next day or so.
2000-01-23 20:31:17 +00:00

104 lines
2.4 KiB
Bash
Executable File

#!/bin/sh
#
# $NetBSD: makeflist,v 1.20 2000/01/23 20:31:17 jwise Exp $
#
# Print out the files in some or all lists.
# Usage: makeflist [-b] [-x] [-a arch] [-m machine] [-s setsdir] [setname ...]
#
# set defaults
: ${MAKE=make}
machine=${MACHINE:-`printf 'xxx:\n\techo ${MACHINE}' | $MAKE -s -f-`}
arch=${MACHINE_ARCH:-`printf 'xxx:\n\techo ${MACHINE_ARCH}' | $MAKE -s -f-`}
setd=`pwd`
nlists="base comp etc games man misc text"
xlists="xbase xcomp xcontrib xfont xserver"
lists=$nlists
# handle args
while : ; do
case $1 in
-d*)
nlists="$nlists secr"
lists=$nlists
;;
-i*)
nlists="$nlists cryptint"
lists=$nlists
;;
-b*)
lists="$xlists $nlists"
;;
-x*)
lists=$xlists
;;
-a*)
arch=$2; shift
;;
-m*)
machine=$2; shift
;;
-s*)
setd=$2; shift
;;
-*)
cat 1>&2 <<USAGE
Usage: $0 [-b] [-x] [-a arch] [-m machine] [-s setsdir] [setname ...]
-b make netbsd + x11 lists
-d do domestic ("secr") sets
-i do international crypto ("cryptint") sets
-x only make x11 lists
-a arch set arch (e.g, m68k, mips, powerpc) [$arch]
-m machine set machine (e.g, amiga, i386, macppc) [$machine]
-s setsdir directory to find sets [$setd]
[setname ...] sets to build [$lists]
USAGE
exit 1
;;
*)
break
;;
esac
shift
done
if [ -n "$1" ]; then
lists="$@"
fi
# Convert mipse[lb] to mips after processing command line arguments.
arch=`echo $arch | sed s,^mipse.,mips,`
# Compute toolchain used on target cpu.
if [ "$arch" = "mips" -o "$machine" = "alpha" -o "$arch" = "powerpc" -o "$arch" = "sparc" -o "$arch" = "i386" ]; then
shlib=elf
else
shlib=aout
fi
for setname in $lists; do
awk -- '{print $1}' $setd/lists/$setname/mi
if [ "$machine" != "$cpu" -a -f $setd/lists/$setname/ad.${arch} ]; then
awk -- '{print $1}' $setd/lists/$setname/ad.${arch}
fi
if [ -f $setd/lists/$setname/md.${machine} ]; then
awk -- '{print $1}' $setd/lists/$setname/md.${machine}
fi
if [ "$shlib" != "" ]; then
if [ -f $setd/lists/$setname/shl.mi ]; then
awk -- '{print $1}' $setd/lists/$setname/shl.mi
fi
if [ -f $setd/lists/$setname/shl.${shlib} ]; then
awk -- '{print $1}' $setd/lists/$setname/shl.${shlib}
fi
fi
# Split man/md_share into: this machine, other machine
if [ $setname = man ]; then
grep ${machine} $setd/lists/man/md_share
fi
if [ $setname = misc ]; then
grep -v ${machine} $setd/lists/man/md_share
fi
done | egrep -v '^#' | sort -u