#!/bin/sh
# Set initial variables:
CWD=`pwd`
if [ "$TMP" = "" ]; then
  TMP=/tmp
fi
PKG=$TMP/package-util
SRC=/devel/manpagesrc
INFO=$PKG/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.5 |"
echo "+=================+"
cd $TMP
tar xzvf $CWD/util-linux-2.5.tar.gz
cd util-linux-2.5
# This seems to fix compiles on 2.0.x :^)
mv login-utils/last.c.orig login-utils/last.c
#( cd disk-utils ; zcat $CWD/fdisk.diff.gz | patch )
( cd bsd ; zcat $CWD/pathnames.h.diff.gz | patch )
zcat $CWD/MCONFIG.diff.gz | patch
make
cat sys-utils/arch > $PKG/bin/arch
cat sys-utils/dmesg > $PKG/bin/dmesg
cat misc-utils/getoptprog > $PKG/bin/getopt
cat misc-utils/mcookie > $PKG/usr/bin/mcookie
cat misc-utils/hostname > $PKG/bin/hostname
cat misc-utils/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
( cd historic/selection ; make )
cat historic/selection/selection > $PKG/usr/bin/selection
cat historic/selection/test-mouse > $PKG/usr/bin/test-mouse
cat sys-utils/setserial > $PKG/bin/setserial
cat misc-utils/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 misc-utils/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 misc-utils/ddate > $PKG/usr/bin/ddate
cat misc-utils/dsplit > $PKG/usr/bin/dsplit
cat disk-utils/fdformat > $PKG/usr/bin/fdformat
cat text-utils/hexdump > $PKG/usr/bin/hexdump
cat misc-utils/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 misc-utils/logger > $PKG/usr/bin/logger
cat misc-utils/look > $PKG/usr/bin/look
cat login-utils/mesg > $PKG/usr/bin/mesg
cat misc-utils/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 misc-utils/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 misc-utils/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 misc-utils/whereis > $PKG/usr/bin/whereis
cat misc-utils/write > $PKG/usr/bin/write
cat disk-utils/cfdisk > $PKG/usr/sbin/cfdisk
cat sys-utils/chroot > $PKG/usr/sbin/chroot
cat sys-utils/ctrlaltdel > $PKG/usr/sbin/ctrlaltdel
mkdir -p $INFO
cat sys-utils/ipc.info | gzip -9c > $INFO/ipc.info.gz
cp sys-utils/ipc.texi $TEX/ipc.texi
gzip -9c misc-utils/getoptprog.1 > $PKG/usr/man/man1/getopt.1.gz
echo '.so man1/getopt.1' | gzip -9c > $PKG/usr/man/man1/getoptprog.1.gz
for file in sys-utils/arch.1 misc-utils/kill.1 login-utils/login.1 \
text-utils/more.1 misc-utils/setterm.1 misc-utils/hostname.1 \
login-utils/chsh.1 misc-utils/clear.1 text-utils/col.1 text-utils/colcrt.1 \
text-utils/colrm.1 text-utils/column.1 text-utils/hexdump.1 \
login-utils/last.1 misc-utils/logger.1 misc-utils/look.1 historic/mesg.1 \
login-utils/mesg.1 login-utils/newgrp.1 login-utils/passwd.1 \
misc-utils/reset.1 text-utils/rev.1 misc-utils/script.1 text-utils/strings.1 \
misc-utils/tsort.1 text-utils/ul.1 login-utils/wall.1 misc-utils/whereis.1 \
misc-utils/write.1 misc-utils/namei.1 misc-utils/hostid.1 misc-utils/ddate.1 \
misc-utils/dsplit.1 login-utils/chfn.1 sys-utils/readprofile.1 \
misc-utils/mcookie.1 historic/selection/selection.1 misc-utils/cal.1 \
misc-utils/dnsdomainname.1 ; do
  gzip -9c $file > $PKG/usr/man/man1/`basename $file`.gz
done
gzip -9c games/banner.6 > $PKG/usr/man/man6/banner.6.gz
for file in sys-utils/dmesg.8 mount/mount.8 sys-utils/setserial.8 \
sys-utils/sync.8 mount/umount.8 login-utils/agetty.8 sys-utils/clock.8 \
sys-utils/rdev.8 disk-utils/fdisk.8 disk-utils/fsck.minix.8 \
sys-utils/kbdrate.8 disk-utils/mkfs.minix.8 disk-utils/mkswap.8 \
historic/mkswap.8 mount/swapon.8 disk-utils/mkfs.8 disk-utils/fdformat.8 \
sys-utils/ipcrm.8 sys-utils/ipcs.8 sys-utils/renice.8 disk-utils/setfdprm.8 \
sys-utils/setsid.8 sys-utils/tunelp.8 sys-utils/chroot.8 \
sys-utils/ctrlaltdel.8 disk-utils/cfdisk.8 login-utils/vipw.8 \
sys-utils/ramsize.8 sys-utils/swapdev.8 mount/swapoff.8 sys-utils/vidmode.8 \
sys-utils/rootflags.8 ; do
  gzip -9c $file > $PKG/usr/man/man8/`basename $file`.gz
done

echo "+=============+"
echo "| updated-1.2 |"
echo "+=============+"
cd $TMP
tar xzvf $CWD/updated-1.2.tar.gz
cd update-1.2
make
strip update
cat update > $PKG/sbin/update
cat update.8 | gzip -9c > $PKG/usr/man/man8/update.8.gz

echo "+============+"
echo "| mount-2.5m |"
echo "+============+"
cd $TMP
tar xzvf $CWD/mount-2.5m.tar.gz
cd mount-2.5m
make
strip mount umount losetup swapon
cat mount > $PKG/bin/mount
cat umount > $PKG/bin/umount
cat losetup > $PKG/sbin/losetup
cat swapon > $PKG/sbin/swapon
for page in fstab.5 nfs.5 ; do
  cat $page | gzip -9c > $PKG/usr/man/man5/$page.gz
done
for page in losetup.8 mount.8 swapoff.8 swapon.8 umount.8 ; do
  cat $page | gzip -9c > $PKG/usr/man/man8/$page.gz
done

strip $PKG/bin/* $PKG/usr/bin/* $PKG/usr/sbin/*

# 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.5
  rm -rf $TMP/update-1.2
  rm -rf $TMP/mount-2.5m
  rm -rf $PKG
fi