#!/bin/bash

# e2fsprogs.SlackBuild
# by Stuart Winter <stuart@armedslack.org> for the Slackware porting Project.
# Heavily based on the original Slackware build script.
# 31-May-2004

# Record toolchain & other info for the build log:
slackbuildinfo

# Paths to skeleton port's source & real Slackware source tree:
export CWD=$SLACKSOURCE/$PKGSERIES/$PKGNAM
export PORTCWD=$PWD

# Temporary build locations:
export TMPBUILD=$TMP/build-$PKGNAM
export PKG=$TMP/package-$PKGNAM
mkpkgdirs # Delete and re-create temporary directories

# Determine the CFLAGS for the known architectures:
case $ARCH in
   arm)     SLKCFLAGS="-march=armv4 -mtune=xscale" ;;
   powerpc) SLKCFLAGS="" ;;
   sparc)   SLKCFLAGS="" ;;
   *)       SLKCFLAGS="" ;;
esac

# Extract source:
tar xvvf $CWD/$PKGNAM-$VERSION.tar.*
cd $PKGNAM-$VERSION
slackhousekeeping

# Disable --uuidd builds the same functionality into libuuid.*.  It's better that way.
CFLAGS="$SLKCFLAGS" \
./configure \
   --prefix= \
   --bindir=/usr/bin \
   --includedir=/usr/include \
   --datadir=/usr/share \
   --mandir=/usr/man \
   --infodir=/usr/info \
   --docdir=/usr/doc/$PKGNAM-$VERSION \
   --enable-elf-shlibs \
   --enable-dynamic-e2fsck \
   --disable-uuidd \
   --build=$ARCH-slackware-linux || failconfig

# Build:
make $NUMJOBS || exit 1

# Install into package:
make install DESTDIR=$PKG
make install-libs DESTDIR=$PKG

# I guess Ted would rather not have this included, so we won't.
# ( cd misc
#   make findsuper
#   cat findsuper > $PKG/sbin/findsuper
#   chmod 0755 $PKG/sbin/findsuper )

find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
  | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null

# Don't clobber an existing config file
mv $PKG/etc/mke2fs.conf $PKG/etc/mke2fs.conf.new

# Fix up package:
mkdir -p $PKG/usr/lib
mv $PKG/lib/pkgconfig $PKG/lib/*.so $PKG/lib/*.a $PKG/usr/lib
( cd $PKG/usr/lib
  for i in *.so ; do
    ln -sf /lib/$(readlink $i) $i ;
  done
)
( cd $PKG/sbin
  rm -f \
    mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.ext4dev \
    fsck.ext2 fsck.ext3 fsck.ext4dev e2label findfs
  ln -sf mke2fs mkfs.ext2
  ln -sf mke2fs mkfs.ext3
  ln -sf mke2fs mkfs.ext4
  ln -sf mke2fs mkfs.ext4dev
  ln -sf tune2fs e2label
  ln -sf tune2fs findfs
  cat << EOF > fsck.ext2
#!/bin/sh
exec /sbin/e2fsck -C 0 \$*
EOF
  chmod 0755 fsck.ext2
  # Why won't symlinks work here?  --RW
  # Because $0 will always be "fsck.ext2" in that case.  --PJV
  cp -a fsck.ext2 fsck.ext3
  cp -a fsck.ext2 fsck.ext4
  cp -a fsck.ext2 fsck.ext4dev
)
( cd $PKG/usr/man/man3
  rm -f uuid_generate_random.3 uuid_generate_time.3
  ln -sf uuid_generate.3 uuid_generate_random.3
  ln -sf uuid_generate.3 uuid_generate_time.3
)

( cd $PKG/usr/man/man8
  rm -f fsck.ext2.8 fsck.ext3.8 mkfs.ext2.8 mkfs.ext3.8 mkfs.ext4.8 mkfs.ext4dev.8
  ln -sf e2fsck.8 fsck.ext2.8
  ln -sf e2fsck.8 fsck.ext3.8
  ln -sf e2fsck.8 fsck.ext4.8
  ln -sf e2fsck.8 fsck.ext4dev.8
  ln -sf mke2fs.8 mkfs.ext2.8
  ln -sf mke2fs.8 mkfs.ext3.8
  ln -sf mke2fs.8 mkfs.ext4.8
  ln -sf mke2fs.8 mkfs.ext4dev.8
)

# Copy docs:
mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a COPYING* INSTALL INSTALL.elfbin README* RELEASE-NOTES SHLIBS \
  $PKG/usr/doc/$PKGNAM-$VERSION

# If necessary, start the fakeroot server so we can set file/dir ownerships:
start_fakeroot

# Apply generic Slackware packaging policies:
cd $PKG
slackstripall   # strip all .a archives and all ELFs
slackgzpages -i # compress man & info pages and delete usr/info/dir
slackslack      # chown -R root:root, chmod -R og-w, slackchown, slack644docs
slackdesc       # install slack-desc and doinst.sh
slackmp         # run makepkg -l y -c n

# Perform any final checks on the package:
cd $PKG
slackhlinks     # search for any hard links
