#!/bin/bash

# source package is here : http://www.kernel.org/pub/linux/utils/kernel/hotplug/
# Packager : JP <jp.guillemin@free.fr>

soft='udev'
softversion='095'
packageversion='1z28'

arch='i486'
cpu='i686'

buildir=$(pwd)
srcpkg="$buildir/$soft-$softversion.tar.bz2"
src="$buildir/$soft-$softversion"
package="$soft-$softversion-$arch-$packageversion"
dest="$buildir/$package"

cd $buildir
rm -rf $src
tar -xvf $srcpkg
rm -f $dest.tgz
rm -rf $dest
mkdir -p $dest
chown -R root:root .
export CFLAGS="-O2 -march=$arch -mtune=$cpu"

cd $src
find . -perm 777 -exec chmod 755 {} \;
find . -perm 775 -exec chmod 755 {} \;
find . -perm 555 -exec chmod 755 {} \;
find . -perm 664 -exec chmod 644 {} \;
find . -perm 444 -exec chmod 644 {} \;
find . -perm 440 -exec chmod 644 {} \;

make EXTRAS="extras/firmware extras/scsi_id extras/volume_id \
extras/ata_id extras/usb_id extras/edd_id extras/dasd_id extras/cdrom_id \
extras/floppy extras/path_id" udevdir=/dev DESTDIR=$dest

make EXTRAS="extras/firmware extras/scsi_id extras/volume_id \
extras/ata_id extras/usb_id extras/edd_id extras/dasd_id extras/cdrom_id \
extras/floppy extras/path_id" udevdir=/dev install DESTDIR=$dest

rmdir $dest/udev 2> /dev/null
chown -R root.root $dest/sbin $dest/usr/bin
mv $dest/usr/share/man $dest/usr
rmdir $dest/usr/share

rm -r $dest/etc/udev
mkdir -p $dest/etc/udev/rules.d \
	 $dest/lib/firmware \
         $dest/etc/rc.d

cat $buildir/config/udev.conf > $dest/etc/udev/udev.conf
cp $buildir/config/rules.d/* $dest/etc/udev/rules.d/
cat $buildir/config/rc.d/rc.udev > $dest/etc/rc.d/rc.udev
mkdir -p $dest/etc/modprobe.d
cat $buildir/config/modprobe.d/blacklist > $dest/etc/modprobe.d/blacklist.new
tar -xvzf $buildir/udev-script-devices.tar.gz -C $dest/
chmod 755 $dest/etc/rc.d/rc.udev



# STRIP TEASE ###################
( cd $dest
  find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
  find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
)
( cd $dest/usr/man
  find . -name "*.?" | xargs gzip -9
)

# Documentation directory ######
cd $src
mkdir -p $dest/usr/doc/$soft-$softversion
cp -a \
  COPYING FAQ README TODO RELEASE-NOTES \
  docs \
  $dest/usr/doc/$soft-$softversion


# Install directory (slack-desc and co)
mkdir -p $dest/install
cat << "EODESC" > $dest/install/slack-desc
udev: udev (dynamic device directory system)
udev:
udev: udev provides a dynamic device directory containing only the files
udev: for the devices which are actually present.  It creates or removes
udev: device node files usually located in the /dev directory.
udev:
udev:
udev:
udev:
udev:
udev:
EODESC


cat << "EODOINST" > $dest/install/doinst.sh
#!/bin/sh
config() {
  NEW="$1"
  OLD="`dirname $NEW`/`basename $NEW .new`"
  # If there's no config file by that name, mv it over:
  if [ ! -r $OLD ]; then
    mv $NEW $OLD
  elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy
    rm $NEW
  fi
  # Otherwise, we leave the .new copy for the admin to consider...
}
config etc/modprobe.d/blacklist.new

EODOINST



# I go home ;)
mkdir -p $dest/usr/src/$soft-$softversion
( cd $buildir
cp -a build-$soft.sh $dest/usr/src/$soft-$softversion/
)

cd $dest
makepkg -l y -c n $dest.tgz

