#!/bin/sh
# Set initial variables:
CWD=`pwd`
if [ "$TMP" = "" ]; then
  TMP=/tmp
fi
PKG=$TMP/package-modutils
rm -rf $PKG
mkdir -p $PKG

VERSION=2.4.25
ARCH=i486
BUILD=1

cd $TMP
rm -rf modutils-$VERSION
tar xjvf $CWD/modutils-$VERSION.tar.bz2
cd modutils-$VERSION
# insmod should use stderr for usage hints, not stdout:
zcat $CWD/insmod-hint-use-stderr.diff.gz | patch -p1 --verbose --backup -E --suffix=.orig
mkdir -p $PKG/usr/doc/modutils-$VERSION
cp -a COPYING CREDITS ChangeLog NEWS README TODO $PKG/usr/doc/modutils-$VERSION
cp -a depmod/create_syms $PKG/usr/doc/modutils-$VERSION
cp -a insmod/insmod_ksymoops_clean $PKG/usr/doc/modutils-$VERSION
# cp -a kerneld/README.* $PKG/usr/doc/modutils-$VERSION
chown -R root.root $PKG/usr/doc/modutils-$VERSION
CFLAGS="-O2 -march=i486 -mcpu=i686" \
./configure \
  --enable-zlib \
  i486-slackware-linux
make
cd man
mkdir -p $PKG/usr/man/man1
cat kernelversion.1 | gzip -9c > $PKG/usr/man/man1/kernelversion.1.gz
mkdir -p $PKG/usr/man/man5
cat modules.conf.5 | gzip -9c > $PKG/usr/man/man5/modules.conf.5.gz
mkdir -p $PKG/usr/man/man2
for manpage in *.2 ; do
  cat $manpage | gzip -9c > $PKG/usr/man/man2/$manpage.gz
done
mkdir -p $PKG/usr/man/man8
for manpage in `ls *.8 | grep -v kerneld` ; do
  cat $manpage | gzip -9c > $PKG/usr/man/man8/$manpage.gz
done
cd ..
mkdir -p $PKG/sbin
cat depmod/depmod > $PKG/sbin/depmod
cat genksyms/genksyms > $PKG/sbin/genksyms
cat insmod/insmod > $PKG/sbin/insmod
cat insmod/modinfo > $PKG/sbin/modinfo
cat insmod/kernelversion > $PKG/sbin/kernelversion
cat insmod/insmod_ksymoops_clean > $PKG/sbin/insmod_ksymoops_clean
chown -R root.bin $PKG/sbin
chmod 755 $PKG/sbin/*
( cd $PKG
  ( cd sbin ; rm -rf ksyms )
  ( cd sbin ; ln -sf insmod ksyms )
  ( cd sbin ; rm -rf lsmod )
  ( cd sbin ; ln -sf insmod lsmod )
  ( cd sbin ; rm -rf modprobe )
  ( cd sbin ; ln -sf insmod modprobe )
  ( cd sbin ; rm -rf rmmod )
  ( cd sbin ; ln -sf insmod rmmod )
  ( cd sbin ; rm -rf kallsyms )
  ( cd sbin ; ln -sf insmod kallsyms )
)

# Strip things:
( cd $PKG
  find . | xargs file | grep "ELF 32-bit LSB executable" | grep 80386 | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
  find . | xargs file | grep "ELF 32-bit LSB shared object" | grep 80386 | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
)

mkdir -p $PKG/etc/cron.hourly
zcat $CWD/kmod.gz > $PKG/etc/cron.hourly/kmod
chmod 755 $PKG/etc/cron.hourly/kmod
touch $PKG/etc/modules.conf.new
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh

# Build the package:
cd $PKG
makepkg -l y -c n $TMP/modutils-$VERSION-$ARCH-$BUILD.tgz

# Clean up the extra stuff:
if [ "$1" = "--cleanup" ]; then
  rm -rf $TMP/modutils-$VERSION
  rm -rf $PKG
fi