#!/bin/bash

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

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

# Package meta-data:
export PACKAGE=lprng
export PKGSERIES=a
export ARCH=${ARCH:=$PORTARCH}
export VERSION=${VERSION:=3.8.27}
export BUILD=${BUILD:=1}

# Temporary build locations:
export TMPBUILD=$TMP/build-$PACKAGE
export PKG=$TMP/package-$PACKAGE
mkpkgdirs # Delete & re-create temporary directories then cd into $TMPBUILD

# Determine the CFLAGS for the known architectures:
case $PORTARCH in
   armv3)   ARCH_CFLAGS="-march=armv3 -mtune=xscale" ;;
   powerpc) ARCH_CFLAGS="" ;;
   sparc)   ARCH_CFLAGS="" ;;
   *) ARCH_CFLAGS="" ;;
esac

# Untar source:
tar xjvf $CWD/LPRng-$VERSION.tar.bz2
cd LPRng-$VERSION

# House keeping:
slackhousekeeping

# Configure:
CFLAGS="-O2 ${ARCH_CFLAGS}" \
CXXFLAGS="-O2 ${ARCH_CFLAGS}" \
./configure \
  --prefix=/usr \
  --enable-nls \
  --with-userid=lp \
  --with-groupid=lp \
  --enable-shared=yes \
  --enable-static=no \
  --with-lpd_conf_path=/etc/lpd.conf \
  --with-lpd_perms_path=/etc/lpd.perms \
  --sysconfdir=/etc || failconfig

# Make && install into local package dir:
make || failmake
make install DESTDIR=$PKG || failinstall

# Delete some junk:
rm -f $PKG/etc/lpd
rm -f $PKG/usr/man/man?/monitor*

# Install docs:
mkdir -p $PKG/usr/doc/LPRng-$VERSION
cp -a ABOUT-NLS.LPRng CONTRIBUTORS COOKBOOK COPYRIGHT \
  INSTALL LICENSE LINK MIRRORS README README.ports VERSION Y2KCompliance \
  $PKG/usr/doc/LPRng-$VERSION
printf "$( head -n1000 CHANGES )\n[..]\n" > $PKG/usr/doc/LPRng-$VERSION/CHANGES
cp -a PrintingCookbook/HTML $PKG/usr/doc/LPRng-$VERSION/PrintingCookbook
cp -a DOCS/*.jpg DOCS/LPRng-Reference.html $PKG/usr/doc/LPRng-$VERSION

# Create spool dir:
mkdir -pm700 $PKG/var/spool/lpd
chown lp.lp $PKG/var/spool/lpd

# Clean up after the buggy Makefile in po/:
mv $PKG$PKG/usr/share/locale $PKG/usr/share
rm -rf $PKG$PKG
rm -rf $PKG/tmp
cd $PKG

# Fix up etc config stuff:
( cd etc
  rm -r rc.d
  rm *.sample
  mv lpd.conf lpd.conf.new
  mv lpd.perms lpd.perms.new )
gzip -9 usr/man/man?/*

chmod 755 $PKG/usr/bin/* $PKG/usr/sbin/* $PKG/usr/libexec/filters/*


mv $PKG/etc/printcap $PKG/etc/printcap-lprng-sample
# Install init script:
mkdir -p $PKG/etc/rc.d
zcat $CWD/rc.lprng > $PKG/etc/rc.d/rc.lprng.new
# By default, the spooler will not run:
chmod 644 $PKG/etc/rc.d/rc.lprng.new
# Use symlinks to certain binaries so that CUPS and LPRng can coexist:
SUFFIX=lprng
for file in \
usr/bin/cancel \
usr/bin/lp \
usr/bin/lpq \
usr/bin/lpr \
usr/bin/lprm \
usr/bin/lpstat \
usr/sbin/lpc ; do
  ( cd $PKG
    mv ${file} ${file}-${SUFFIX}
    ( cd `dirname ${file}` ; ln -sf `basename ${file}`-${SUFFIX} `basename ${file}` )
  )
done

# Now fix the associated man pages:
mv $PKG/usr/man/man1/cancel.1.gz $PKG/usr/man/man1/cancel-${SUFFIX}.1.gz
mv $PKG/usr/man/man1/lp.1.gz $PKG/usr/man/man1/lp-${SUFFIX}.1.gz
mv $PKG/usr/man/man1/lpq.1.gz $PKG/usr/man/man1/lpq-${SUFFIX}.1.gz
mv $PKG/usr/man/man1/lpr.1.gz $PKG/usr/man/man1/lpr-${SUFFIX}.1.gz
mv $PKG/usr/man/man1/lprm.1.gz $PKG/usr/man/man1/lprm-${SUFFIX}.1.gz
mv $PKG/usr/man/man1/lpstat.1.gz $PKG/usr/man/man1/lpstat-${SUFFIX}.1.gz
mv $PKG/usr/man/man8/lpc.8.gz $PKG/usr/man/man8/lpc-${SUFFIX}.8.gz
( cd $PKG/usr/man/man1
  ln -sf cancel-${SUFFIX}.1.gz cancel.1.gz
  ln -sf lp-${SUFFIX}.1.gz lp.1.gz
  ln -sf lpq-${SUFFIX}.1.gz lpq.1.gz
  ln -sf lpr-${SUFFIX}.1.gz lpr.1.gz
  ln -sf lprm-${SUFFIX}.1.gz lprm.1.gz
  ln -sf lpstat-${SUFFIX}.1.gz lpstat.1.gz )
( cd $PKG/usr/man/man8
  ln -sf lpc-${SUFFIX}.8.gz lpc.8.gz )

# Enter the package's root:
cd $PKG

# Slackware policies:
slackstripall   # strip all .a archives and all ELFs
slackgzpages -i # compress man & info pages and delete usr/info/dir
slackslack      # set all files to root.root, chmod -R og-w, slackchown, slack644docs
slackdesc       # install slack-desc and doinst.sh

# Build the package:
if [ $PORTARCH = armv3 ]; then
   . $PORTCWD/arm/pkger
 else
   makepkg -l y -c n $PKGSTORE/$PKGSERIES/$PACKAGE-$VERSION-$ARCH-$BUILD.tgz
fi

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