#!/bin/sh
# Set initial variables:
CWD=`pwd`
if [ "$TMP" = "" ]; then
  TMP=/tmp
fi

PKG=$TMP/package-tcpip2

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/_tcpip2.tar.gz

# Find the size of a file:
filesize() {
 SIZE=`ls -l -d -G $1 | cut -b23-32`
 echo -n $SIZE
}

echo "+==============+"
echo "| autofs-3.1.4 |"
echo "+==============+"
cd $TMP
tar xyvf $CWD/autofs-3.1.4.tar.bz2
cd autofs-3.1.4
mkdir -p $PKG/usr/doc/autofs-3.1.4
cp -a COPYING COPYRIGHT NEWS README README.options TODO \
  multiserver_mount.patch samples $PKG/usr/doc/autofs-3.1.4
chown -R root.root $PKG/usr/doc/autofs-3.1.4
./configure --prefix=/usr i386-slackware-linux
make -j 2
cd daemon
cat automount > $PKG/usr/sbin/automount
chown root.bin $PKG/usr/sbin/automount
chmod 755 $PKG/usr/sbin/automount
cd ../modules
mkdir -p $PKG/usr/lib/autofs
for file in *.so ; do
  cat $file > $PKG/usr/lib/autofs/$file
done
cd ../man
for file in *.5 ; do
  cat $file | gzip -9c > $PKG/usr/man/man5/$file.gz
done
for file in *.8 ; do
  cat $file | gzip -9c > $PKG/usr/man/man8/$file.gz
done

echo "+===============+"
echo "| bootp-DD2.4.3 |"
echo "+===============+"
cd $TMP
tar xzvf $CWD/bootp-DD2.4.3.tar.gz
cd bootp-DD2.4.3
mkdir -p $PKG/usr/doc/bootp-DD2.4.3
cp -a Announce Changes Changes.Dynamic Installation Problems README \
  README.Dynamic ToDo ToDo.Dynamic bootptab.Dynamic bootptab.cmu \
  bootptab.mcs $PKG/usr/doc/bootp-DD2.4.3
chown -R root.root $PKG/usr/doc/bootp-DD2.4.3
chmod 644 $PKG/usr/doc/bootp-DD2.4.3/*
zcat $CWD/bootp-DD2.4.3.diff.gz | patch -p1 --backup
make -j 2
strip bootpd bootpef bootpgw bootptest
for file in bootpd bootpef bootpgw bootptest ; do
  cat $file > $PKG/usr/sbin/$file
done
gzip -9c bootptab.5 > $PKG/usr/man/man5/bootptab.5.gz
for file in bootpd.8 bootpef.8 bootptest.8 ; do
  gzip -9c $file > $PKG/usr/man/man8/$file.gz
done

echo "+==========+"
echo "| dhcp-2.0 |"
echo "+==========+"
cd $TMP
tar xzvf $CWD/dhcp-2.0.tar.gz
cd dhcp-2.0
./configure linux-2.2
make -j 2
DOCDIR=$PKG/usr/doc/dhcp-2.0
mkdir -p $DOCDIR
cp -a CHANGES README RELNOTES TODO $DOCDIR
mkdir -p $DOCDIR/examples
cp -a client/dhclient.conf server/dhcpd.conf \
  $DOCDIR/examples
chown -R root.root $DOCDIR
cat << EOF > $PKG/etc-incoming/dhcpd.conf
# dhcpd.conf
#
# Configuration file for ISC dhcpd (see 'man dhcpd.conf')
#
EOF
cat << EOF > $PKG/etc-incoming/dhclient.conf
# dhclient.conf
#
# Configuration file for ISC dhclient (see 'man dhclient.conf')
#
EOF
cat client/scripts/linux > $PKG/etc-incoming/dhclient-script
chmod 700 $PKG/etc-incoming/dhclient-script
strip server/dhcpd client/dhclient relay/dhcrelay
cat server/dhcpd > $PKG/usr/sbin/dhcpd
cat relay/dhcrelay > $PKG/usr/sbin/dhcrelay
cat client/dhclient > $PKG/sbin/dhclient
mkdir -p $PKG/usr/man/man5
mkdir -p $PKG/usr/man/man8
for dir in client server ; do
  cd $dir
  for file in *.5 ; do
    cat $file | sed -e "s#ETCDIR#/etc#g" -e "s#DBDIR#/var/db#g" \
      -e "s#RUNDIR#/var/run#g" | gzip -9c > $PKG/usr/man/man5/$file.gz
  done
  for file in *.8 ; do
    cat $file | sed -e "s#ETCDIR#/etc#g" -e "s#DBDIR#/var/db#g" \
      -e "s#RUNDIR#/var/run#g" | gzip -9c > $PKG/usr/man/man8/$file.gz
  done
  cd ..
done
cat relay/dhcrelay.8 | sed -e "s#ETCDIR#/etc#g" -e "s#DBDIR#/var/db#g" \
  -e "s#RUNDIR#/var/run#g" | gzip -9c > $PKG/usr/man/man8/dhcrelay.8.gz

echo "+===================+"
echo "| dhcpcd-1.3.18-pl7 |"
echo "+===================+"
cd $TMP
tar xzvf $CWD/dhcpcd-1.3.18-pl7.tar.gz
cd dhcpcd-1.3.18-pl7
## I don't know why, but the versions of this we compile ourselves aren't
## working.  Maybe the included binary is better...
# We'll have to try again with the new version, right? :)
make clean
make
cat dhcpcd > $PKG/sbin/dhcpcd
cat dhcpcd.8 | gzip -9c > $PKG/usr/man/man8/dhcpcd.8.gz
cat << EOF > $PKG/etc/dhcpc/dhcpcd-eth0.exe
#!/bin/sh
echo "(dhcpcd)  IP address changed to \$1" | logger
EOF
chmod 750 $PKG/etc/dhcpc/dhcpcd-eth0.exe
mkdir -p $PKG/usr/doc/dhcpcd-1.3.18-pl7
cp -a pcmcia $PKG/usr/doc/dhcpcd-1.3.18-pl7
cp -a Changes README dhcpcd*.lsm $PKG/usr/doc/dhcpcd-1.3.18-pl7
chown -R root.root $PKG/usr/doc/dhcpcd-1.3.18-pl7

echo "+===============+"
echo "| netwatch.0.9g |"
echo "+===============+"
cd $TMP
tar xzvf $CWD/netwatch.0.9g.tar.gz
cd netwatch.0.9g
./configure --prefix=/usr i386-slackware-linux
make -j 2
strip netresolv netwatch
cat netresolv > $PKG/usr/sbin/netresolv
chown root.bin $PKG/usr/sbin/netresolv
chmod 755 $PKG/usr/sbin/netresolv
cat netwatch > $PKG/usr/sbin/netwatch
chown root.bin $PKG/usr/sbin/netwatch
chmod 755 $PKG/usr/sbin/netwatch
cat netwatch.1 | gzip -9c > $PKG/usr/man/man1/netwatch.1.gz
mkdir -p $PKG/usr/doc/netwatch.0.9g
cp -a BUGS CHANGES README README.performance TODO netwatch.0.9g.lsm \
  netwatch.alpha.patches $PKG/usr/doc/netwatch.0.9g
chown root.root $PKG/usr/doc/netwatch.0.9g/*
chmod 644 $PKG/usr/doc/netwatch.0.9g/*

echo "+=================+"
echo "| sliplogin-2.1.1 |"
echo "+=================+"
cd $TMP
tar xzvf $CWD/sliplogin-2.1.1.tar.gz
cd sliplogin-2.1.1
zcat $CWD/sliplogin-2.1.1.diff.gz | patch -p1 --backup
make -j 2
strip sliplogin
cat sliplogin > $PKG/usr/sbin/sliplogin
cat sliplogin.8 | gzip -9c > $PKG/usr/man/man8/sliplogin.8.gz
mkdir -p $PKG/etc-incoming/slip
cp -a slip.login slip.hosts slip.route slip.passwd $PKG/etc-incoming/slip
chown root.root $PKG/etc-incoming/slip/*
chmod 640 $PKG/etc-incoming/slip/*
mkdir -p $PKG/usr/doc/sliplogin-2.1.1
cp -a CHANGES README* TODO TROUBLE_SHOOTING $PKG/usr/doc/sliplogin-2.1.1
chown root.root $PKG/usr/doc/sliplogin-2.1.1/*
chmod 644 $PKG/usr/doc/sliplogin-2.1.1/*

echo "+======================+"
echo "| ipfwadm-2.3.0.tar.gz |"
echo "+======================+"
cd $TMP
tar xzvf $CWD/ipfwadm-2.3.0.tar.gz
cd ipfwadm-2.3.0
mkdir -p $PKG/usr/doc/ipfwadm-2.3.0
cp -a COPYING ChangeLog README ipfwadm.lsm $PKG/usr/doc/ipfwadm-2.3.0
chmod 644 $PKG/usr/doc/ipfwadm-2.3.0/*
chown root.root $PKG/usr/doc/ipfwadm-2.3.0/*
# These don't build under glibc.  It's getting phased out anyway in the near
# future unless a Linux 2.2.x version is developed.
#make
#strip ipfwadm
cat ipfwadm > $PKG/sbin/ipfwadm-2.3.0
cat ipfwadm.8 | gzip -9c > $PKG/usr/man/man8/ipfwadm.8.gz
cat ipfw.4 | gzip -9c > $PKG/usr/man/man4/ipfw.4.gz

echo "+=======================+"
echo "| ipchains-1.3.9.tar.gz |"
echo "+=======================+"
cd $TMP
tar xzvf $CWD/ipchains-1.3.9.tar.gz
cd ipchains-1.3.9
make -j 2
strip ipchains
cat ipchains > $PKG/sbin/ipchains
cat ipchains.8 | gzip -9c > $PKG/usr/man/man8/ipchains.8.gz
cat ipfw.4 | gzip -9c > $PKG/usr/man/man4/ipfw.4.gz
mkdir -p $PKG/usr/doc/ipchains-1.3.9
cp -a COPYING HOWTO.txt README $PKG/usr/doc/ipchains-1.3.9
chmod 644 $PKG/usr/doc/ipchains-1.3.9/*
chown root.root $PKG/usr/doc/ipchains-1.3.9/*

echo "+===============================+"
echo "| ipchains-scripts-1.1.2.tar.gz |"
echo "+===============================+"
cd $TMP
tar xzvf $CWD/ipchains-scripts-1.1.2.tar.gz
cd ipchains-scripts-1.1.2
zcat $CWD/ipchains-scripts-1.1.2.diff.gz | patch -p1 --backup
for file in ipchains-restore ipchains-save ipfwadm-wrapper ; do
  cat $file > $PKG/sbin/$file
  chmod 755 $PKG/sbin/$file
  chown root.bin $PKG/sbin/$file
  cat $file.8 | gzip -9c > $PKG/usr/man/man8/$file.8.gz
done

echo "+========================+"
echo "| ipmasqadm-0.4.2.tar.gz |"
echo "+========================+"
cd $TMP
tar xzvf $CWD/ipmasqadm-0.4.2.tar.gz
cd ipmasqadm-0.4.2
make KSRC=/usr/src/linux/
cp modules/*.so $PKG/usr/lib/ipmasqadm
strip ipmasqadm/ipmasqadm
cat ipmasqadm/ipmasqadm > $PKG/usr/sbin/ipmasqadm
cat man/ipmasqadm.8 | gzip -9c > $PKG/usr/man/man8/ipmasqadm.8.gz

echo "+==============+"
echo "| yp-tools-2.4 |"
echo "+==============+"
cd $TMP
# Make sure we have a working etc/nsswitch.conf:
zcat $CWD/nsswitch.conf.gz > $PKG/etc-incoming/nsswitch.conf
# Add etc/nsswitch.conf-nis as a full NIS+ example config file:
zcat $CWD/nsswitch.conf-nis.gz > $PKG/etc-incoming/nsswitch.conf-nis
tar xyvf $CWD/yp-tools-2.4.tar.bz2
cd yp-tools-2.4
mkdir -p $PKG/usr/doc/yp-tools-2.4
cp -a ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL NEWS README THANKS TODO \
  $PKG/usr/doc/yp-tools-2.4
chown root.root $PKG/usr/doc/yp-tools-2.4/*
chmod 644 $PKG/usr/doc/yp-tools-2.4/*
./configure --prefix=/usr --disable-domainname i386-slackware-linux
make CFLAGS=-O2 -j 2
cat etc/nicknames > $PKG/var/yp/nicknames
cat po/de.gmo > $PKG/usr/share/locale/de/LC_MESSAGES/yp-tools.mo
cd src
strip ypcat ypchfn ypchsh ypmatch yppasswd yppoll ypset ypwhich
cat ypcat > $PKG/usr/bin/ypcat
cat ypmatch > $PKG/usr/bin/ypmatch
cat yppasswd > $PKG/usr/bin/yppasswd
cat ypwhich > $PKG/usr/bin/ypwhich
cat yppoll > $PKG/usr/sbin/yppoll
cat ypset > $PKG/usr/sbin/ypset
cd ../man
cat nicknames.5 | gzip -9c > $PKG/usr/man/man5/nicknames.5.gz
for file in *.1 ; do
  cat $file | gzip -9c > $PKG/usr/man/man1/$file.gz
done
for file in *.8 ; do
  cat $file | gzip -9c > $PKG/usr/man/man8/$file.gz
done

echo "+============+"
echo "| ypbind-3.3 |"
echo "+============+"
cd $TMP
tar xzvf $CWD/ypbind-3.3.tar.gz
cd ypbind-3.3
zcat $CWD/ypbind-3.3-glibc5.diff.gz | patch -p1 --backup
./configure --prefix=/usr \
            i386-slackware-linux
make -j 2
cp yp.conf.example $PKG/etc/yp.conf.example
mkdir -p $PKG/usr/doc/ypbind-3.3
cp -a COPYING INSTALL README TODO yp.conf.example $PKG/usr/doc/ypbind-3.3
chown root.root $PKG/usr/doc/ypbind-3.3/*
chmod 644 $PKG/usr/doc/ypbind-3.3/*
cat ypbind > $PKG/usr/sbin/ypbind
cat ypbind.8 | gzip -9c > $PKG/usr/man/man8/ypbind.8.gz

echo "+=============+"
echo "| ypmake-0.11 |"
echo "+=============+"
cd $TMP
tar xyvf $CWD/ypmake-0.11.tar.bz2
cd ypmake-0.11
mkdir -p $PKG/usr/doc/ypmake-0.11
cp -a CHANGES README TODO $PKG/usr/doc/ypmake-0.11
chmod 644 $PKG/usr/doc/ypmake-0.11/*
chown root.root $PKG/usr/doc/ypmake-0.11/*
./configure
make
install -o root -g bin -m 755 ypmake $PKG/usr/sbin
install -o root -g root -m 644 aliases arrays automount config ethers group \
  gshadow hosts netgroup netid networks passwd protocols publickey rpc \
  services shadow ypservers $PKG/usr/lib/yp/ypmake
install -o root -g root -m 644 ypmake.conf.sample $PKG/var/yp
mkdir -p $PKG/usr/man/man5
mkdir -p $PKG/usr/man/man8
cat ypmake.conf.man | gzip -9c > $PKG/usr/man/man5/ypmake.conf.5.gz
cat ypmake.man | gzip -9c > $PKG/usr/man/man8/ypmake.8.gz

echo "+===============+"
echo "| ypserv-1.3.11 |"
echo "+===============+"
cd $TMP
tar xyvf $CWD/ypserv-1.3.11.tar.bz2
cd ypserv-1.3.11
mkdir -p $PKG/usr/doc/ypserv-1.3.11
cp -a BUGS COPYING ChangeLog INSTALL NEWS README README.secure \
    TODO $PKG/usr/doc/ypserv-1.3.11
chmod 644 $PKG/usr/doc/ypserv-1.3.11/*
chown root.root $PKG/usr/doc/ypserv-1.3.11/*
# --with-ndbm=yes 
./configure --enable-tcp-wrapper \
            --enable-fqdn \
            --enable-yppasswd \
            i386-slackware-linux
make -j 2
strip create_printcap makedbm match_printcap mknetid pwupdate \
  revnetgroup yphelper ypinit ypxfr ypxfr_1perday ypxfr_1perhour \
  ypxfr_2perday
for file in create_printcap makedbm match_printcap mknetid pwupdate \
  revnetgroup yphelper ypinit ypxfr ypxfr_1perday ypxfr_1perhour \
  ypxfr_2perday ; do
  cat $file > $PKG/usr/lib/yp/$file
done
for file in ypserv rpc.yppasswdd rpc.ypxfrd yppush ; do
  cat $file > $PKG/usr/sbin/$file
done
cat ypMakefile > $PKG/var/yp/Makefile
cat etc/securenets > $PKG/var/yp/securenets
echo "# This file is part of the YP server package -- see 'man netgroup'" \
 > $PKG/etc-incoming/netgroup
cat etc/netgroup >> $PKG/etc-incoming/netgroup
for file in netgroup.5 ypserv.conf.5 ; do
  gzip -9c $file > $PKG/usr/man/man5/$file.gz
done
for file in makedbm.8 mknetid.8 pwupdate.8 revnetgroup.8 rpc.yppasswdd.8 \
  rpc.ypxfrd.8 ypinit.8 yppasswdd.8 yppush.8 ypserv.8 ypxfr.8 ypxfrd.8 ; do
  gzip -9c $file > $PKG/usr/man/man8/$file.gz
done

echo "+=============+"
echo "| ncftp-2.4.3 |"
echo "+=============+"
cd $TMP
tar xzvf $CWD/ncftp-2.4.3.tar.gz
cd ncftp-2.4.3
mkdir -p $PKG/usr/doc/ncftp-2.4.3
cp -a CHANGELOG COPYING README $PKG/usr/doc/ncftp-2.4.3
chown root.root $PKG/usr/doc/ncftp-2.4.3/*
chmod 644 $PKG/usr/doc/ncftp-2.4.3/*
zcat $CWD/ncftp-2.4.3.diff.gz | patch -p0 --backup
./configure --prefix=/usr --enable-readline i386-slackware-linux
make CFLAGS=-O2 LDFLAGS=-s
strip ncftp
cat ncftp > $PKG/usr/bin/ncftp2
cat ncftp.1 | gzip -9c > $PKG/usr/man/man1/ncftp2.1.gz

echo "+=============+"
echo "| ncftp-3.0.1 |"
echo "+=============+"
cd $TMP
tar xzvf $CWD/ncftp-3.0.1-src.tar.gz
cd ncftp-3.0.1
mkdir -p $PKG/usr/doc/ncftp-3.0.1
cp -a CHANGELOG FIREWALL-PROXY-README LICENSE.txt READLINE-README README WHATSNEW-3.0 \
  $PKG/usr/doc/ncftp-3.0.1
chown root.root $PKG/usr/doc/ncftp-3.0.1/*
chmod 644 $PKG/usr/doc/ncftp-3.0.1/*
CFLAGS=-O2 ./configure --prefix=/usr i386-slackware-linux
make
cd bin
cat ncftp > $PKG/usr/bin/ncftp
cat ncftpbatch > $PKG/usr/bin/ncftpbatch
cat ncftpbookmarks > $PKG/usr/bin/ncftpbookmarks
cat ncftpget > $PKG/usr/bin/ncftpget
cat ncftpls > $PKG/usr/bin/ncftpls
cat ncftpput > $PKG/usr/bin/ncftpput
cd ../doc/man
cat ncftp.1 | gzip -9c > $PKG/usr/man/man1/ncftp.1.gz
cat ncftpbatch.1 | gzip -9c > $PKG/usr/man/man1/ncftpbatch.1.gz
cat ncftpget.1 | gzip -9c > $PKG/usr/man/man1/ncftpget.1.gz
cat ncftpls.1 | gzip -9c > $PKG/usr/man/man1/ncftpls.1.gz
cat ncftpput.1 | gzip -9c > $PKG/usr/man/man1/ncftpput.1.gz

echo "+=============+"
echo "| ytalk-3.1.1 |"
echo "+=============+"
cd $TMP
tar xzvf $CWD/ytalk-3.1.1.tar.gz
cd ytalk-3.1.1
mkdir -p $PKG/usr/doc/ytalk-3.1.1
cp -a BUGS ChangeLog INSTALL README README.old ytalk-3.1.1.lsm $PKG/usr/doc/ytalk-3.1.1
chmod 644 $PKG/usr/doc/ytalk-3.1.1/*
chown root.root $PKG/usr/doc/ytalk-3.1.1/*
./configure --prefix=/usr --with-x=no i386-slackware-linux
make
strip ytalk
cat ytalk > $PKG/usr/bin/ytalk
cat ytalk.1 | gzip -9c > $PKG/usr/man/man1/ytalk.1.gz
cat ytalkrc > $PKG/usr/etc/ytalkrc

echo "+================+"
echo "| ttysnoop-0.12c |"
echo "+================+"
cd $TMP
tar xzvf $CWD/ttysnoop_0.12c.orig.tar.gz
cd ttysnoop-0.12c.orig
zcat $CWD/ttysnoop_0.12c-6.diff.gz | patch -p1 --backup
mkdir -p $PKG/usr/doc/ttysnoop-0.12c
cp -a README $PKG/usr/doc/ttysnoop-0.12c
chmod 644 $PKG/usr/doc/ttysnoop-0.12c/*
chown root.root $PKG/usr/doc/ttysnoop-0.12c/*
make
strip ttysnoop ttysnoops
cat ttysnoops > $PKG/usr/sbin/ttysnoops
cat ttysnoop > $PKG/usr/sbin/ttysnoop
cat snooptab.dist > $PKG/etc/snooptab
cat ttysnoop.8 | gzip -9c > $PKG/usr/man/man8/ttysnoop.8.gz
# We build a special version of in.telnetd for ttysnoop:
cd $TMP
tar xzvf $CWD/netkit-telnet-0.14.tar.gz
cd netkit-telnet-0.14
zcat $CWD/netkit-telnet-0.14-ttysnoop.diff.gz | patch -p1 --verbose --backup
zcat $CWD/netkit-telnet-0.14.configure.diff.gz | patch -p0 --backup
./configure --prefix=/usr
make
cd telnetd
strip telnetd
cat telnetd > $PKG/usr/sbin/in.telnetsnoopd

# Build the package:
cd $PKG
tar czvf $TMP/tcpip2.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
 for dir in autofs-3.1.4 bootp-DD2.4.3 ipfwadm-2.3.0 \
  dhcpcd-1.3.18-pl7 \
  ipchains-1.3.9.tar.gz ipchains-scripts-1.1.2 \
  ncftp-2.4.3 package-tcpip2 \
  sliplogin-2.1.0 \
  ttysnoop-0.12c.orig \
  ypserv-1.3.11 yp-tools-2.4 ypbind-3.3 ypmake-0.11 \
  ytalk-3.1.1 netwatch.0.9g dhcp-2.0 ipmasqadm-0.4.2 ; do
  rm -rf $TMP/$dir
 done
 rm -rf $PKG
fi
