#!/bin/sh
# Set initial variables:
CWD=`pwd`
if [ "$TMP" = "" ]; then
  TMP=/tmp
fi
PKG=$TMP/package-util
SRC=/devel/manpagesrc
INFO=/devel/info-pages/usr/info
TEX=/devel/texinfo-docs

if [ ! -d $TMP ]; then
  mkdir -p $TMP # location to build the source
fi
if [ ! -d $PKG ]; then
  mkdir -p $PKG # place for the package to be built
fi

# Explode the package framework:
cd $PKG
explodepkg $CWD/_util.tar.gz

# Function to handle manpage source:
man2gz () { # $1 is source page name, $2 is target name for preformatted
            # output (full path && name) and $3 is the same, but for the
            # source.
  mkdir -p `dirname $2`
  groff -Tascii -mandoc $1 | gzip -9c > $2
  if [ ! "$3" = "" ]; then
    mkdir -p `dirname $3`
    cat $1 > $3 
  fi 
}

echo "+=================+"
echo "| util-linux-2.2 |"
echo "+=================+"
cd $TMP
tar xzvf $CWD/util-linux-2.2.tar.gz
cd util-linux-2.2
( cd disk-utils ; zcat $CWD/fdisk.diff.gz | patch )
( cd bsd ; zcat $CWD/pathnames.h.diff.gz | patch )
( cd login-utils ; zcat $CWD/setpwnam.c.diff.gz | patch )
make
cat sys-utils/arch > $PKG/bin/arch
cat sys-utils/dmesg > $PKG/bin/dmesg
cat misc-utils/getoptprog > $PKG/bin/getoptprog
cat misc-utils/md5sum > $PKG/usr/bin/md5sum
cat misc-utils/mcookie > $PKG/usr/bin/mcookie
cat misc-utils/hostname > $PKG/bin/hostname
#cat kill > $PKG/bin/kill
cat login-utils/login > $PKG/bin/login
cat text-utils/more > $PKG/bin/more
cat mount/mount > $PKG/bin/mount
cat mount/umount > $PKG/bin/umount
#cat selection/selection > $PKG/usr/bin/selection
#cat selection/test-mouse > $PKG/usr/bin/test-mouse
cat sys-utils/setserial > $PKG/bin/setserial
#cat setterm > $PKG/bin/setterm
cat sys-utils/sln > $PKG/bin/sln
cat sys-utils/sync > $PKG/bin/sync
cat login-utils/agetty > $PKG/sbin/agetty
cat login-utils/chfn > $PKG/usr/bin/chfn
#cat bdflush > $PKG/sbin/bdflush
cat sys-utils/clock > $PKG/sbin/clock
cat disk-utils/fdisk > $PKG/sbin/fdisk
#cat fsck > $PKG/sbin/fsck
cat disk-utils/fsck.minix > $PKG/sbin/fsck.minix
cat sys-utils/readprofile > $PKG/usr/bin/readprofile
cat sys-utils/kbdrate > $PKG/sbin/kbdrate
cat disk-utils/mkfs.minix > $PKG/sbin/mkfs.minix
cat disk-utils/mkfs > $PKG/sbin/mkfs
cat disk-utils/mkswap > $PKG/sbin/mkswap
cat sys-utils/rdev > $PKG/sbin/rdev
cat mount/swapon > $PKG/sbin/swapon
cat games/banner > $PKG/usr/bin/banner
#cat cal > $PKG/usr/bin/cal
cat login-utils/chsh > $PKG/usr/bin/chsh
#cat clear > $PKG/usr/bin/clear
cat text-utils/col > $PKG/usr/bin/col
cat text-utils/colcrt > $PKG/usr/bin/colcrt
cat text-utils/colrm > $PKG/usr/bin/colrm
cat text-utils/column > $PKG/usr/bin/column
cat games/ddate > $PKG/usr/bin/ddate
#cat dsplit > $PKG/usr/bin/dsplit
cat disk-utils/fdformat > $PKG/usr/bin/fdformat
cat text-utils/hexdump > $PKG/usr/bin/hexdump
#cat hostid > $PKG/usr/bin/hostid
cat sys-utils/ipcrm > $PKG/usr/bin/ipcrm
cat sys-utils/ipcs > $PKG/usr/bin/ipcs
cat login-utils/last > $PKG/usr/bin/last
#cat logger > $PKG/usr/bin/logger
#cat look > $PKG/usr/bin/look
cat sys-utils/lpcntl > $PKG/usr/bin/lpcntl
cat login-utils/mesg > $PKG/usr/bin/mesg
#cat namei > $PKG/usr/bin/namei
cat login-utils/newgrp > $PKG/usr/bin/newgrp
cat login-utils/passwd > $PKG/usr/bin/passwd
cat login-utils/vipw > $PKG/usr/sbin/vipw
cat sys-utils/renice > $PKG/usr/bin/renice
#cat reset > $PKG/usr/bin/reset
cat text-utils/rev > $PKG/usr/bin/rev
#cat script > $PKG/usr/bin/script
cat disk-utils/setfdprm > $PKG/usr/bin/setfdprm
cat sys-utils/setsid > $PKG/usr/bin/setsid
cat text-utils/strings > $PKG/usr/bin/strings
#cat tsort > $PKG/usr/bin/tsort
cat sys-utils/tunelp > $PKG/usr/bin/tunelp
cat text-utils/ul > $PKG/usr/bin/ul
cat login-utils/wall > $PKG/usr/bin/wall
#cat whereis > $PKG/usr/bin/whereis
#cat write > $PKG/usr/bin/write
cat time/zic > $PKG/usr/bin/zic
cat time/zdump > $PKG/usr/bin/zdump
cat time/yearistype > $PKG/usr/bin/yearistype
cat disk-utils/cfdisk > $PKG/usr/sbin/cfdisk
cat sys-utils/chroot > $PKG/usr/sbin/chroot
cat sys-utils/ctrlaltdel > $PKG/usr/sbin/ctrlaltdel
cat disk-utils/frag > $PKG/usr/sbin/frag
cat sys-utils/ipc.info | gzip -9c > $INFO/ipc.info.gz
cp sys-utils/ipc.texi $TEX/ipc.texi
( cd $SRC/usr/man/man8 ; ln -sf swapon.8 swapoff.8 )
( cd $SRC/usr/man/man8 ; ln -sf mount.8 umount.8 )
( cd $SRC/usr/man/man8 ; ln -sf rdev.8 swapdev.8 )
( cd $SRC/usr/man/man8 ; ln -sf rdev.8 ramsize.8 )
( cd $SRC/usr/man/man8 ; ln -sf rdev.8 vidmode.8 )
( cd $SRC/usr/man/man1 ; ln -sf hostname.1 dnsdomainname.1 )
man2gz login-utils/chfn.1 $PKG/usr/man/preformat/cat1/chfn.1.gz $SRC/usr/man/man1/chfn.1
man2gz login-utils/chsh.1 $PKG/usr/man/preformat/cat1/chsh.1.gz $SRC/usr/man/man1/chsh.1
man2gz login-utils/last.1 $PKG/usr/man/preformat/cat1/last.1.gz $SRC/usr/man/man1/last.1
man2gz login-utils/login.1 $PKG/usr/man/preformat/cat1/login.1.gz $SRC/usr/man/man1/login.1
man2gz login-utils/mesg.1 $PKG/usr/man/preformat/cat1/mesg.1.gz $SRC/usr/man/man1/mesg.1
man2gz login-utils/newgrp.1 $PKG/usr/man/preformat/cat1/newgrp.1.gz $SRC/usr/man/man1/newgrp.1
man2gz login-utils/passwd.1 $PKG/usr/man/preformat/cat1/passwd.1.gz $SRC/usr/man/man1/passwd.1
man2gz login-utils/wall.1 $PKG/usr/man/preformat/cat1/wall.1.gz $SRC/usr/man/man1/wall.1
man2gz misc-utils/cal.1 $PKG/usr/man/preformat/cat1/cal.1.gz $SRC/usr/man/man1/cal.1
man2gz misc-utils/clear.1 $PKG/usr/man/preformat/cat1/clear.1.gz $SRC/usr/man/man1/clear.1
#man2gz misc-utils/dnsdomainname.1 $PKG/usr/man/preformat/cat1/dnsdomainname.1.gz $SRC/usr/man/man1/dnsdomainname.1
man2gz misc-utils/domainname.1 $PKG/usr/man/preformat/cat1/domainname.1.gz $SRC/usr/man/man1/domainname.1
man2gz misc-utils/dsplit.1 $PKG/usr/man/preformat/cat1/dsplit.1.gz $SRC/usr/man/man1/dsplit.1
man2gz misc-utils/getoptprog.1 $PKG/usr/man/preformat/cat1/getoptprog.1.gz $SRC/usr/man/man1/getoptprog.1
man2gz misc-utils/md5sum.1 $PKG/usr/man/preformat/cat1/md5sum.1.gz $SRC/usr/man/man1/md5sum.1
man2gz misc-utils/mcookie.1 $PKG/usr/man/preformat/cat1/mcookie.1.gz $SRC/usr/man/man1/mcookie.1
man2gz misc-utils/hostid.1 $PKG/usr/man/preformat/cat1/hostid.1.gz $SRC/usr/man/man1/hostid.1
man2gz misc-utils/hostname.1 $PKG/usr/man/preformat/cat1/hostname.1.gz $SRC/usr/man/man1/hostname.1
man2gz misc-utils/kill.1 $PKG/usr/man/preformat/cat1/kill.1.gz $SRC/usr/man/man1/kill.1
man2gz misc-utils/logger.1 $PKG/usr/man/preformat/cat1/logger.1.gz $SRC/usr/man/man1/logger.1
man2gz misc-utils/look.1 $PKG/usr/man/preformat/cat1/look.1.gz $SRC/usr/man/man1/look.1
man2gz misc-utils/mcookie.1 $PKG/usr/man/preformat/cat1/mcookie.1.gz $SRC/usr/man/man1/mcookie.1
man2gz misc-utils/md5sum.1 $PKG/usr/man/preformat/cat1/md5sum.1.gz $SRC/usr/man/man1/md5sum.1
man2gz misc-utils/namei.1 $PKG/usr/man/preformat/cat1/namei.1.gz $SRC/usr/man/man1/namei.1
man2gz misc-utils/reset.1 $PKG/usr/man/preformat/cat1/reset.1.gz $SRC/usr/man/man1/reset.1
man2gz misc-utils/script.1 $PKG/usr/man/preformat/cat1/script.1.gz $SRC/usr/man/man1/script.1
man2gz misc-utils/setterm.1 $PKG/usr/man/preformat/cat1/setterm.1.gz $SRC/usr/man/man1/setterm.1
man2gz misc-utils/tsort.1 $PKG/usr/man/preformat/cat1/tsort.1.gz $SRC/usr/man/man1/tsort.1
man2gz misc-utils/whereis.1 $PKG/usr/man/preformat/cat1/whereis.1.gz $SRC/usr/man/man1/whereis.1
man2gz misc-utils/write.1 $PKG/usr/man/preformat/cat1/write.1.gz $SRC/usr/man/man1/write.1
#man2gz selection/selection.1 $PKG/usr/man/preformat/cat1/selection.1.gz $SRC/usr/man/man1/selection.1
man2gz sys-utils/arch.1 $PKG/usr/man/preformat/cat1/arch.1.gz $SRC/usr/man/man1/arch.1
man2gz sys-utils/readprofile.1 $PKG/usr/man/preformat/cat1/readprofile.1.gz $SRC/usr/man/man1/readprofile.1
man2gz text-utils/col.1 $PKG/usr/man/preformat/cat1/col.1.gz $SRC/usr/man/man1/col.1
man2gz text-utils/colcrt.1 $PKG/usr/man/preformat/cat1/colcrt.1.gz $SRC/usr/man/man1/colcrt.1
man2gz text-utils/colrm.1 $PKG/usr/man/preformat/cat1/colrm.1.gz $SRC/usr/man/man1/colrm.1
man2gz text-utils/column.1 $PKG/usr/man/preformat/cat1/column.1.gz $SRC/usr/man/man1/column.1
man2gz text-utils/hexdump.1 $PKG/usr/man/preformat/cat1/hexdump.1.gz $SRC/usr/man/man1/hexdump.1
man2gz text-utils/more.1 $PKG/usr/man/preformat/cat1/more.1.gz $SRC/usr/man/man1/more.1
man2gz text-utils/od.1 $PKG/usr/man/preformat/cat1/od.1.gz $SRC/usr/man/man1/od.1
man2gz text-utils/rev.1 $PKG/usr/man/preformat/cat1/rev.1.gz $SRC/usr/man/man1/rev.1
man2gz text-utils/strings.1 $PKG/usr/man/preformat/cat1/strings.1.gz $SRC/usr/man/man1/strings.1
man2gz text-utils/ul.1 $PKG/usr/man/preformat/cat1/ul.1.gz $SRC/usr/man/man1/ul.1
man2gz time/date.1 $PKG/usr/man/preformat/cat1/date.1.gz $SRC/usr/man/man1/date.1
man2gz bsd/getopt.3 $PKG/usr/man/preformat/cat3/getopt.3.gz $SRC/usr/man/man3/getopt.3
man2gz time/newctime.3 $PKG/usr/man/preformat/cat3/newctime.3.gz $SRC/usr/man/man3/newctime.3
man2gz time/newtzset.3 $PKG/usr/man/preformat/cat3/newtzset.3.gz $SRC/usr/man/man3/newtzset.3
man2gz time/time2posix.3 $PKG/usr/man/preformat/cat3/time2posix.3.gz $SRC/usr/man/man3/time2posix.3
#man2gz makedev-1.4.1/MAKEDEV.cfg.5 $PKG/usr/man/preformat/cat5/MAKEDEV.cfg.5.gz $SRC/usr/man/man5/MAKEDEV.cfg.5
man2gz mount/fstab.5 $PKG/usr/man/preformat/cat5/fstab.5.gz $SRC/usr/man/man5/fstab.5
man2gz mount/nfs.5 $PKG/usr/man/preformat/cat5/nfs.5.gz $SRC/usr/man/man5/nfs.5
man2gz syslogd/syslog.conf.5 $PKG/usr/man/preformat/cat5/syslog.conf.5.gz $SRC/usr/man/man5/syslog.conf.5
man2gz time/tzfile.5 $PKG/usr/man/preformat/cat5/tzfile.5.gz $SRC/usr/man/man5/tzfile.5
man2gz games/banner.6 $PKG/usr/man/preformat/cat6/banner.6.gz $SRC/usr/man/man6/banner.6
man2gz games/ddate.6 $PKG/usr/man/preformat/cat6/ddate.6.gz $SRC/usr/man/man6/ddate.6
man2gz disk-utils/cfdisk.8 $PKG/usr/man/preformat/cat8/cfdisk.8.gz $SRC/usr/man/man8/cfdisk.8
man2gz disk-utils/fdformat.8 $PKG/usr/man/preformat/cat8/fdformat.8.gz $SRC/usr/man/man8/fdformat.8
man2gz disk-utils/fdisk.8 $PKG/usr/man/preformat/cat8/fdisk.8.gz $SRC/usr/man/man8/fdisk.8
man2gz disk-utils/frag.8 $PKG/usr/man/preformat/cat8/frag.8.gz $SRC/usr/man/man8/frag.8
man2gz disk-utils/fsck.minix.8 $PKG/usr/man/preformat/cat8/fsck.minix.8.gz $SRC/usr/man/man8/fsck.minix.8
man2gz disk-utils/mkfs.minix.8 $PKG/usr/man/preformat/cat8/mkfs.minix.8.gz $SRC/usr/man/man8/mkfs.minix.8
man2gz disk-utils/mkswap.8 $PKG/usr/man/preformat/cat8/mkswap.8.gz $SRC/usr/man/man8/mkswap.8
man2gz disk-utils/setfdprm.8 $PKG/usr/man/preformat/cat8/setfdprm.8.gz $SRC/usr/man/man8/setfdprm.8
man2gz login-utils/agetty.8 $PKG/usr/man/preformat/cat8/agetty.8.gz $SRC/usr/man/man8/agetty.8
#man2gz login-utils/fastboot.8 $PKG/usr/man/preformat/cat8/fastboot.8.gz $SRC/usr/man/man8/fastboot.8
#man2gz login-utils/fasthalt.8 $PKG/usr/man/preformat/cat8/fasthalt.8.gz $SRC/usr/man/man8/fasthalt.8
#man2gz login-utils/halt.8 $PKG/usr/man/preformat/cat8/halt.8.gz $SRC/usr/man/man8/halt.8
#man2gz login-utils/reboot.8 $PKG/usr/man/preformat/cat8/reboot.8.gz $SRC/usr/man/man8/reboot.8
#man2gz login-utils/shutdown.8 $PKG/usr/man/preformat/cat8/shutdown.8.gz $SRC/usr/man/man8/shutdown.8
man2gz login-utils/simpleinit.8 $PKG/usr/man/preformat/cat8/simpleinit.8.gz $SRC/usr/man/man8/simpleinit.8
man2gz login-utils/vipw.8 $PKG/usr/man/preformat/cat8/vipw.8.gz $SRC/usr/man/man8/vipw.8
man2gz mount/mount.8 $PKG/usr/man/preformat/cat8/mount.8.gz $SRC/usr/man/man8/mount.8
#man2gz mount/swapoff.8 $PKG/usr/man/preformat/cat8/swapoff.8.gz $SRC/usr/man/man8/swapoff.8
man2gz mount/swapon.8 $PKG/usr/man/preformat/cat8/swapon.8.gz $SRC/usr/man/man8/swapon.8
#man2gz mount/umount.8 $PKG/usr/man/preformat/cat8/umount.8.gz $SRC/usr/man/man8/umount.8
man2gz sys-utils/MAKEDEV.8 $PKG/usr/man/preformat/cat8/MAKEDEV.8.gz $SRC/usr/man/man8/MAKEDEV.8
man2gz sys-utils/chroot.8 $PKG/usr/man/preformat/cat8/chroot.8.gz $SRC/usr/man/man8/chroot.8
man2gz sys-utils/clock.8 $PKG/usr/man/preformat/cat8/clock.8.gz $SRC/usr/man/man8/clock.8
man2gz sys-utils/ctrlaltdel.8 $PKG/usr/man/preformat/cat8/ctrlaltdel.8.gz $SRC/usr/man/man8/ctrlaltdel.8
man2gz sys-utils/dmesg.8 $PKG/usr/man/preformat/cat8/dmesg.8.gz $SRC/usr/man/man8/dmesg.8
man2gz sys-utils/ipcrm.8 $PKG/usr/man/preformat/cat8/ipcrm.8.gz $SRC/usr/man/man8/ipcrm.8
man2gz sys-utils/ipcs.8 $PKG/usr/man/preformat/cat8/ipcs.8.gz $SRC/usr/man/man8/ipcs.8
man2gz sys-utils/kbdrate.8 $PKG/usr/man/preformat/cat8/kbdrate.8.gz $SRC/usr/man/man8/kbdrate.8
man2gz sys-utils/lpcntl.8 $PKG/usr/man/preformat/cat8/lpcntl.8.gz $SRC/usr/man/man8/lpcntl.8
#man2gz sys-utils/ramsize.8 $PKG/usr/man/preformat/cat8/ramsize.8.gz $SRC/usr/man/man8/ramsize.8
man2gz sys-utils/rdev.8 $PKG/usr/man/preformat/cat8/rdev.8.gz $SRC/usr/man/man8/rdev.8
man2gz sys-utils/renice.8 $PKG/usr/man/preformat/cat8/renice.8.gz $SRC/usr/man/man8/renice.8
#man2gz sys-utils/rootflags.8 $PKG/usr/man/preformat/cat8/rootflags.8.gz $SRC/usr/man/man8/rootflags.8
man2gz sys-utils/setserial.8 $PKG/usr/man/preformat/cat8/setserial.8.gz $SRC/usr/man/man8/setserial.8
man2gz sys-utils/setsid.8 $PKG/usr/man/preformat/cat8/setsid.8.gz $SRC/usr/man/man8/setsid.8
#man2gz sys-utils/swapdev.8 $PKG/usr/man/preformat/cat8/swapdev.8.gz $SRC/usr/man/man8/swapdev.8
man2gz sys-utils/sync.8 $PKG/usr/man/preformat/cat8/sync.8.gz $SRC/usr/man/man8/sync.8
man2gz sys-utils/tunelp.8 $PKG/usr/man/preformat/cat8/tunelp.8.gz $SRC/usr/man/man8/tunelp.8
man2gz sys-utils/update_state.8 $PKG/usr/man/preformat/cat8/update_state.8.gz $SRC/usr/man/man8/update_state.8
#man2gz sys-utils/vidmode.8 $PKG/usr/man/preformat/cat8/vidmode.8.gz $SRC/usr/man/man8/vidmode.8
man2gz syslogd/syslogd.8 $PKG/usr/man/preformat/cat8/syslogd.8.gz $SRC/usr/man/man8/syslogd.8
man2gz time/zdump.8 $PKG/usr/man/preformat/cat8/zdump.8.gz $SRC/usr/man/man8/zdump.8
man2gz time/zic.8 $PKG/usr/man/preformat/cat8/zic.8.gz $SRC/usr/man/man8/zic.8

echo "+=============+"
echo "| bdflush-1.5 |"
echo "+=============+"
cd $TMP
tar xzvf $CWD/bdflush-1.5.tar.gz
cd bdflush-1.5
cc -s -Wall -O2 -o bdflush bdflush.c
cat bdflush > $PKG/sbin/bdflush
man2gz bdflush.8 $PKG/usr/man/preformat/cat8/bdflush.8.gz $SRC/usr/man/man8/bdflush.8

# The util-linux-2.2 mount is horribly buggy. :^(
echo "+=======================+"
echo "| mount-util-linux-1.10 |"
echo "+=======================+"
cd $TMP
tar xzvf $CWD/mount-util-linux-1.10.tar.gz
cd mount
make
cat mount > $PKG/bin/mount
cat umount > $PKG/bin/umount

# Build the package:
cd $PKG
tar czvf $TMP/util.tgz .

# Clean up the extra stuff:
if [ "$1" = "--cleanup" ]; then
  rm -rf $TMP/util-linux-2.2
  rm -rf $TMP/bdflush-1.5
  rm -rf $TMP/mount
  rm -rf $PKG
fi
