#!/bin/bash
ulimit -s unlimited
shopt -s extglob

# pkgtools.SlackBuild
# by Stuart Winter <mozes@slackware.com> for the Slackware porting Project.
# Heavily based on the original Slackware build script.
# 06-Jun-2004

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

# Paths to skeleton port's source & real Slackware source tree:
slackset_var_cwds

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

######## Slackware pkgtools #############################################

# Install Slackware script manpages:
( cd $CWD/manpages
  mkdir -p $PKG/usr/man/man8
  for page in explodepkg.8 installpkg.8 makepkg.8 upgradepkg.8 pkgtool.8 pkgdiff.8 \
    removepkg.8 ; do
    cat $page | gzip -9c > $PKG/usr/man/man8/$page.gz
  done
)

# Install internationalized manpages from
# http://slint.fr/forSlackware/man_l10n/pkgtools/
( cd $PKG/usr/man
  tar xvvf $CWD/manpages-l10n.tar.!(*sign|*asc|*sig)
  for page in manpages-l10n/* ; do
    manpage=$(basename $page)
    mkdir -vpm755 ${manpage%%.*}/man8
    mv -fv $page ${manpage%%.*}/man8/${page#*.}.8
  done
  rmdir manpages-l10n
)
# Install Slackware scripts:
( cd $CWD/scripts
  mkdir -p $PKG/sbin
  # Don't include makebootdisk...  it's useless since a kernel won't fit on a
  # floppy disk, and nobody uses floppies any more anyway.
  for file in explodepkg installpkg makepkg pkgtool removepkg upgradepkg pkgdiff ; do
    install -oroot -groot -pm755 $CWD/scripts/$file $PKG/sbin
  done
  # These scripts are used during the installation:
  mkdir -pm700 $PKG/var/lib/pkgtools/setup/tmp
  for file in setup.* ; do
    install -pm755 -oroot -groot $file $PKG/var/lib/pkgtools/setup/
  done
  # Add a link for makebootstick -- don't because we don't ship it with ARM.
  # ( cd $PKG/sbin ; ln -sf ../var/lib/pkgtools/setup/setup.80.make-bootdisk makebootstick )
)

# Create the base directories (not really necessary, but doesn't hurt):
mkdir -p $PKG/var/lib/pkgtools/{packages,scripts,douninst.sh}
mkdir -p $PKG/var/log/pkgtools/{removed_packages,removed_scripts}

########################################################################

# This is x86 stuff:
rm -fv $PKG/sbin/makebootdisk
rm -fv $PKG/var/lib/pkgtools/setup/*.make-bootdisk
rm -fv $PKG/var/lib/pkgtools/setup/*.install-kernel

# Apply generic Slackware packaging policies:
cd $PKG
slackstripall   # strip all .a archives and all ELFs
slack_delete_lafiles # delete usr/lib{,64}/*.la
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
