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

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

echo "+================+"
echo "| net-tools-1.52 |"
echo "+================+"
cd $TMP
tar xzvf $CWD/net-tools-1.52.tar.gz
cd net-tools-1.52
zcat $CWD/net-tools-1.52.diff.gz | patch -p1
make
strip hostname
cat hostname > $PKG/bin/hostname
cd man/en_US
for page in hostname.1 dnsdomainname.1 nisdomainname.1 ypdomainname.1 \
domainname.1 ; do
  cat $page | gzip -9c > $PKG/usr/man/man1/$page.gz
done

echo "+================+"
echo "| setserial-2.14 |"
echo "+================+"
cd $TMP
tar xzvf $CWD/setserial-2.14.tar.gz
cd setserial-2.14
./configure --prefix=/usr
make
strip setserial
cat setserial > $PKG/sbin/setserial
#cat rc.serial > $PKG/etc/rc.d/rc.serial
zcat $CWD/rc.serial > $PKG/etc/rc.d/rc.serial
cat setserial.8 | gzip -9c > $PKG/usr/man/man8/setserial.8.gz

echo "+=================+"
echo "| util-linux-2.9i |"
echo "+=================+"
if gcc --version | fgrep egcs ; then
  echo "Historically, using egcs to compile this has caused some problems,"
  echo "like a segfault on 486s with clock.  These timing problems may be"
  echo "resolved in newer versions on egcs (1.0.3a was the one connected"
  echo "with these observations), but keep an eye out for these things."
  echo "hit [enter]"
  read junk;
fi
cd $TMP
tar xzvf $CWD/util-linux-2.9i.tar.gz
cd util-linux-2.9i
# This patch is needed to compile ipcs with libc5:
zcat $CWD/util-linux-libc5.diff.gz | patch
zcat $CWD/bsdgetopt.diff.gz | patch
zcat $CWD/MCONFIG.diff.gz | patch
# This prevents 'swapon' from complaining that root.disk brw-rw---- permissions
# are insecure, which they aren't:
zcat $CWD/swapon.nowarning.diff.gz | patch
# Add support to fdisk and cfdisk for the 1b hidden FAT32 partition type:
( cd fdisk ; zcat $CWD/fdisk.hiddenfat32.diff.gz | patch )
make
( cd attic ; cc -O -o strings strings.c getopt.c ; strip strings )
cat sys-utils/arch > $PKG/bin/arch
cat sys-utils/dmesg > $PKG/bin/dmesg
cat getopt-1.0.3a/getopt > $PKG/bin/getopt
cat misc-utils/mcookie > $PKG/usr/bin/mcookie
#cat misc-utils/hostname > $PKG/bin/hostname
# There's a better 'kill' in procps now.
#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
cat mount/losetup > $PKG/sbin/losetup
#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 sys-utils/hwclock > $PKG/sbin/hwclock
cat fdisk/fdisk > $PKG/sbin/fdisk
cat fdisk/sfdisk > $PKG/usr/sbin/sfdisk
#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 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/cytune > $PKG/usr/bin/cytune
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 misc-utils/reset.sh > $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 attic/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 fdisk/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 getopt-1.0.3a/getopt.1 > $PKG/usr/man/man1/getopt.1.gz
for file in sys-utils/arch.1 \
text-utils/more.1 misc-utils/setterm.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 \
login-utils/mesg.1 \
misc-utils/reset.1 text-utils/rev.1 misc-utils/script.1 attic/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/ddate.1 \
sys-utils/readprofile.1 \
misc-utils/mcookie.1 misc-utils/cal.1 ; do
  gzip -9c $file > $PKG/usr/man/man1/`basename $file`.gz
done
gzip -9c mount/fstab.5 > $PKG/usr/man/man5/fstab.5.gz
gzip -9c mount/nfs.5 > $PKG/usr/man/man5/nfs.5.gz
gzip -9c games/banner.6 > $PKG/usr/man/man6/banner.6.gz
for file in sys-utils/dmesg.8 mount/mount.8 \
mount/losetup.8 mount/umount.8 login-utils/agetty.8 \
sys-utils/hwclock.8 sys-utils/rdev.8 \
sys-utils/cytune.8 fdisk/fdisk.8 disk-utils/fsck.minix.8 \
sys-utils/kbdrate.8 disk-utils/mkfs.minix.8 disk-utils/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/ctrlaltdel.8 fdisk/cfdisk.8 fdisk/sfdisk.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
mkdir -p $PKG/usr/doc/util-linux-2.9i
cp -a ANNOUNCE COPYING.GPL COPYING.UCB HISTORY INSTALL LSM MAINTAINERS \
 disk-utils/README* fdisk/README* login-utils/README* misc-utils/README* \
 mount/README* sys-utils/README* \
 text-utils/README* $PKG/usr/doc/util-linux-2.9i
cp -a getopt-1.0.3a/README $PKG/usr/doc/util-linux-2.9i/README.getopt-1.0.3a
chown root.root $PKG/usr/doc/util-linux-2.9i/*
chmod 644 $PKG/usr/doc/util-linux-2.9i/*

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 "| clock-1.6 |"
echo "+===========+"
cd $TMP
tar xzvf $CWD/clock-1.6.tar.gz
cd clock-1.6
make
cat clock > $PKG/sbin/clock
cat clock.8 | gzip -9c > $PKG/usr/man/man8/clock.8.gz

# This no longer works with 2.2.x kernels:
#echo "+=============+"
#echo "| smbfs-2.0.2 |"
#echo "+=============+"
#cd $TMP
#tar xzvf $CWD/smbfs-2.0.2.tar.gz
#cd smbfs-2.0.2
#make
#strip util/smbmount util/smbumount
#cat util/smbmount > $PKG/bin/smbmount
#cat util/smbumount > $PKG/bin/smbumount
#cat man/smbmount.8 | gzip -9c > $PKG/usr/man/man8/smbmount.8.gz
#cat man/smbumount.8 | gzip -9c > $PKG/usr/man/man8/smbumount.8.gz

# The mount in util-2.9 seems up-to-date, so we won't seek a newer version.
#echo "+============+"
#echo "| mount-2.7l |"
#echo "+============+"
#cd $TMP
#tar xzvf $CWD/mount-2.7l.tar.gz
#cd mount-2.7l
#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

echo "+=============+"
echo "| jaztool-1.0 |"
echo "+=============+"
cd $TMP
tar xzvf $CWD/jaztool-1.0.tar.gz
cd jaztool-1.0
make
strip jaztool
chown root.bin jaztool
cp -a jaztool $PKG/sbin
mkdir -p $PKG/usr/doc/jaztool-1.0
cat README > $PKG/usr/doc/jaztool-1.0/README

echo "+=============+"
echo "| ziptool-1.0 |"
echo "+=============+"
cd $TMP
tar xzvf $CWD/ziptool-1.0.tar.gz
cd ziptool-1.0
make
strip ziptool
chown root.bin ziptool
cp -a ziptool $PKG/sbin
mkdir -p $PKG/usr/doc/ziptool-1.0
cat ziptool.txt > $PKG/usr/doc/ziptool-1.0/ziptool.txt

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

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

# Warn of zero-length files:
for file in `find . -type f -print` ; do
 if [ "`filesize $file`" = "0" ]; then
  echo "WARNING: zero length file $file"
 fi
 if [ "`filesize $file`" = "20" ]; then
  echo "WARNING: possible empty gzipped file $file"
 fi
done

# Clean up the extra stuff:
if [ "$1" = "--cleanup" ]; then
  rm -rf $TMP/util-linux-2.9i
  rm -rf $TMP/update-1.2
  rm -rf $TMP/clock-1.6
  rm -rf $TMP/jaztool-1.0
# mount in util-linux is newer
#  rm -rf $TMP/mount-2.7l
# Phased out.  Use the smbmount from Samba...
#  rm -rf $TMP/smbfs-2.0.2
  rm -rf $PKG
fi