#!/usr/bin/ksh
#ident	"@(#)proto:desktop/buildscripts/dssetup	1.7"

workdir=$1
imagedir=$2
getpkginfo=$3
shift 3

. $getpkginfo

has_locale()
{
	x=`GREP "^$1	" | cut -f5`
	if [ "X$x" = "Xyes" ]
	then
		return 0
	else
		return 1
	fi
}

#
# make sure loadmods are up to date for those being placed into .extra.d
#
for i in bfs sfs ufs dow vxfs
do
	if [ $ROOT/$MACH/etc/conf/pack.d/$i/Driver.o -nt \
			 $ROOT/$MACH/etc/conf/modnew.d/$i ]
	then
		print -u2 "WARNING: loadable module $i may be out of date" 
	fi
done

cd $PROTO/ds_tools
rm -rf root
mkdir -p \
	root/diskset \
	root/etc/conf/mod.d \
	root/etc/fs/bfs \
	root/etc/fs/s5 \
	root/etc/fs/sfs \
	root/etc/fs/ufs \
	root/etc/fs/vxfs \
	root/usr/sbin
cd $PROTO/ds_tools/root
while read source dest
do
	[ $source != "#" ] || continue
	ln -s $source $dest
	echo $dest >> cpio.list
done <<-!!
	# There is no labelit for bfs.  We don't need etc/conf/mod.d/s5
	# because the boot floppy kernel has s5 statically linked in.
	$ROOT/$MACH/etc/fs/s5/labelit		diskset/labelit.s5
	$ROOT/$MACH/etc/fs/sfs/labelit		diskset/labelit.sfs
	$ROOT/$MACH/etc/fs/ufs/labelit		diskset/labelit.ufs
	$ROOT/$MACH/usr/lib/fs/vxfs/labelit	diskset/labelit.vxfs
	$ROOT/$MACH/etc/fs/bfs/mkfs.dy		diskset/mkfs.bfs
	$ROOT/$MACH/etc/fs/s5/mkfs.dy		diskset/mkfs.s5
	$ROOT/$MACH/etc/fs/sfs/mkfs.dy		diskset/mkfs.sfs
	$ROOT/$MACH/etc/fs/ufs/mkfs.dy		diskset/mkfs.ufs
	$ROOT/$MACH/etc/fs/vxfs/mkfs.dy		diskset/mkfs.vxfs
	$ROOT/$MACH/etc/conf/modnew.d/bfs	etc/conf/mod.d/bfs
	$ROOT/$MACH/etc/conf/modnew.d/dow	etc/conf/mod.d/dow
	$ROOT/$MACH/etc/conf/modnew.d/sfs	etc/conf/mod.d/sfs
	$ROOT/$MACH/etc/conf/modnew.d/ufs	etc/conf/mod.d/ufs
	$ROOT/$MACH/etc/conf/modnew.d/vxfs	etc/conf/mod.d/vxfs
	$ROOT/$MACH/etc/fs/bfs/fsck.dy		etc/fs/bfs/fsck
	$ROOT/$MACH/etc/fs/s5/fsck.dy		etc/fs/s5/fsck
	$ROOT/$MACH/etc/fs/sfs/fsck.dy		etc/fs/sfs/fsck
	$ROOT/$MACH/etc/fs/ufs/fsck.dy		etc/fs/ufs/fsck
	$ROOT/$MACH/etc/fs/vxfs/fsck.dy		etc/fs/vxfs/fsck
	$PROTO/desktop/files/pkg.LIST		etc/pkg.LIST
	$ROOT/$MACH/usr/sbin/disksetup		usr/sbin/disksetup
!!

# For tape and diskette installation, the files in .extra.d need to
# be copied from the datastream into ramdisk or memfs before they can
# be run.  For CD-ROM installation, the files in .extra.d can be run
# directly from the CD without copying them.
#
# Intentionally not following symbolic links here.
# cpioout (called in dsmpaps) follows the symbolic links.

rm -rf $workdir/.extra.d 
mkdir -p  $workdir/.extra.d
find * -print | cpio -pdu $workdir/.extra.d

for i 
do
	[ -d $workdir/$i ] || mkdir -p $workdir/$i
	cd $workdir/$i
	if has_locale $i
	then
		IMAGE=${i}_${LOCALE}.IMAGE
	else
		IMAGE=${i}.IMAGE
	fi
	cpio -iumDZ pkginfo pkgmap setinfo < $imagedir/$IMAGE 2>/dev/null
done
