#!/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.55 |"
echo "+================+"
cd $TMP
tar xyvf $CWD/net-tools-1.55.tar.bz2
cd net-tools-1.55
zcat $CWD/net-tools-1.55.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.17 |"
echo "+================+"
cd $TMP
tar xzvf $CWD/setserial-2.17.tar.gz
cd setserial-2.17
zcat $CWD/setserial-rc.serial.diff.gz | patch -E
./configure --prefix=/usr
make
strip setserial
cat setserial > $PKG/sbin/setserial
cat rc.serial > $PKG/etc/rc.d/rc.serial
cat serial.conf > $PKG/etc/serial.conf
cat setserial.8 | gzip -9c > $PKG/usr/man/man8/setserial.8.gz

echo "+============+"
echo "| bsdstrings |"
echo "+============+"
cd $TMP
tar xzvf $CWD/bsdstrings.tar.gz
cd bsdstrings
make
strip strings
cat strings > $PKG/usr/bin/strings
cat strings.1 | gzip -9c > $PKG/usr/man/man1/strings.1.gz

echo "+==================+"
echo "| util-linux-2.10l |"
echo "+==================+"
cd $TMP
tar xyvf $CWD/util-linux-2.10l.tar.bz2
cd util-linux-2.10l
zcat $CWD/util-linux-2.10l.MCONFIG.diff.gz | patch -E --backup -p1
zcat $CWD/util-linux-2.10l.fdisk.diff.gz | patch -E --backup -p1
./configure
make
cat sys-utils/arch > $PKG/bin/arch
cat sys-utils/dmesg > $PKG/bin/dmesg
cat getopt-1.0.3b/getopt > $PKG/bin/getopt
cat misc-utils/mcookie > $PKG/usr/bin/mcookie
cat misc-utils/rename > $PKG/usr/bin/rename
#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 clock/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 kbd/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 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 misc-utils/chkdupexe > $PKG/usr/bin/chkdupexe
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
mkdir -p $PKG/usr/lib/getopt
( cd getopt-1.0.3b
  cat parse.bash > $PKG/usr/lib/getopt/parse.bash
  cat parse.tcsh > $PKG/usr/lib/getopt/parse.tcsh
  cat test.bash > $PKG/usr/lib/getopt/test.bash
  cat test.tcsh > $PKG/usr/lib/getopt/test.tcsh )
for message in cs de fr it ja nl pt_BR ; do
  mkdir -p $PKG/usr/share/locale/$message/LC_MESSAGES
  cat po/$message.gmo > $PKG/usr/share/locale/$message/LC_MESSAGES/util-linux.mo
done
gzip -9c getopt-1.0.3b/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/rename.1 \
misc-utils/reset.1 text-utils/rev.1 misc-utils/script.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 \
misc-utils/chkdupexe.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 \
clock/hwclock.8 sys-utils/rdev.8 \
sys-utils/cytune.8 fdisk/fdisk.8 disk-utils/fsck.minix.8 \
kbd/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.10l
cp -a HISTORY INSTALL README.clock clock/README* \
 disk-utils/README* fdisk/README* login-utils/README* misc-utils/README* \
 kbd/README* mount/README* \
 text-utils/README* $PKG/usr/doc/util-linux-2.10l
cp -a getopt-1.0.3b/README $PKG/usr/doc/util-linux-2.9i/README.getopt-1.0.3b
chown root.root $PKG/usr/doc/util-linux-2.10l/*
chmod 644 $PKG/usr/doc/util-linux-2.10l/*

echo "+==============+"
echo "| updated-2.11 |"
echo "+==============+"
cd $TMP
tar xzvf $CWD/updated-2.11.tar.gz
cd updated-2.11
mkdir -p $PKG/usr/doc/updated-2.11
cp -a update.lsm $PKG/usr/doc/updated-2.11
chmod 644 $PKG/usr/doc/updated-2.11/update.lsm
chown root.root $PKG/usr/doc/updated-2.11/update.lsm
make
strip update
cat update > $PKG/sbin/update
cat update.8 | gzip -9c > $PKG/usr/man/man8/update.8.gz

echo "+=============+"
echo "| ziptool-1.3 |"
echo "+=============+"
cd $TMP
tar xzvf $CWD/ziptool-1.3.tar.gz
cd ziptool-1.3
make
strip ziptool
cat ziptool > $PKG/sbin/ziptool
mkdir -p $PKG/usr/doc/ziptool-1.3
cp -a README $PKG/usr/doc/ziptool-1.3
chown root.root $PKG/usr/doc/ziptool-1.3/*
chmod 644 $PKG/usr/doc/ziptool-1.3/*
cat ziptool.1.gz > $PKG/usr/man/man1/ziptool.1.gz

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/bsdstrings
  rm -rf $TMP/util-linux-2.10l
  rm -rf $TMP/net-tools-1.55
  rm -rf $TMP/update-1.2
  rm -rf $TMP/setserial-2.17
  rm -rf $TMP/ziptool-1.3
  rm -rf $PKG
fi