#!/bin/bash
# Script to create SlackBuild scripts
# Written by JK Wood joshuakwood@gmail.com

PRGNAM=$1
VERSION=$2

if [ "$PRGNAM" = "" ]; then
  exit 1
elif [ "$VERSION" = "" ]; then
  exit 1
fi

if [ -e "$PRGNAM.SlackBuild" ] && [ "$3" != "-R" ]; then
  echo " There appears to be a SlackBuild by that name"
  echo " already in this directory. If you wish to"
  echo " overwrite it, use the -R flag after the"
  echo " program name and version."
fi

cat << EOF > $PRGNAM.SlackBuild
#!/bin/sh
# Slackbuild for $PRGNAM
# Written by JK Wood joshuakwood@gmail.com

PRGNAM=$PRGNAM
VERSION=$VERSION
ARCH=\${ARCH:-x86_64}
BUILD=\${BUILD:-1}
TAG=\${TAG:_SBo}
DISTRO=\${DISTRO:-slamd64}
CWD=\$(pwd)
TMP=\${TMP:-/tmp/SBo}
PKG=\$TMP/package-\$PRGNAM
OUTPUT=\${OUTPUT:-/tmp}

if [ "\$ARCH" = "i486" ]; then
  SLKCFLAGS="-O2 -march=i486 -mtune=i686"
elif [ "\$ARCH" = "i686" ]; then
  SLKCFLAGS="-O2 -march=i686 -mtune=i686"
elif [ "\$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2 -fPIC"
fi

PKGARCH=\${ARCH}_\${DISTRO}

rm -rf \$PKG
mkdir -p \$TMP \$PKG \$OUTPUT
cd \$TMP || exit 1
rm -rf \$PRGNAM-\$VERSION
tar -xzvf \$CWD/\$PRGNAM-\$VERSION.tar.gz || exit 1
cd \$PRGNAM-\$VERSION || exit 1
chown -R root:root .
find . \
 \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
 -exec chmod 755 {} \; -o \
 \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
 -exec chmod 644 {} \;
 
CFLAGS="\$SLKCFLAGS" \\
CXXFLAGS="\$SLKCFLAGS" \\
LDFLAGS="-L/lib64 -L/usr/lib64" \\
./configure \\
  --prefix=/usr \\
  --sysconfdir=/etc \\
  --localstatedir=/var \\
  --libdir=/usr/lib64 \\
  --mandir=/usr/man \\
  || exit 1
  
make || exit 1
make install DESTDIR=\$PKG || exit 1

(
  cd \$PKG/usr/man || exit 1
  find . -type f -exec gzip -9 {} \;
  for i in \$(find . -type l); do ln -s \$(readlink \$i).gz \$i.gz ; rm \$i ; done
)

( cd $PKG
  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
)

mkdir -p \$PKG/usr/doc/\$PRGNAM-\$VERSION
cp -a AUTHORS COPYING* INSTALL NEWS README* TODO doc/* \\
  \$PKG/usr/doc/\$PRGNAM-\$VERSION
cat \$CWD/\$PRGNAM.SlackBuild > \$PKG/usr/doc/\$PRGNAM-\$VERSION/\$PRGNAM.SlackBuild
find \$PKG/usr/doc -name "Makefile" -exec rm {} \;
find \$PKG/usr/doc -type f -exec chmod 644 {} \;

mkdir -p \$PKG/install
cat \$CWD/slack-desc > \$PKG/install/slack-desc
cat \$CWD/doinst.sh > \$PKG/install/doinst.sh

cd \$PKG
/sbin/makepkg -l y -c n \$OUTPUT/\$PRGNAM-\$VERSION-\$PKGARCH-\$BUILD\$TAG.tgz

EOF

cat << EOF > slack-desc
# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description.  Line
# up the first '|' above the ':' following the base package name, and the '|' on
# the right side marks the last column you can put a character in.  You must make
# exactly 11 lines for the formatting to be correct.  It's also customary to
# leave one space after the ':'.

    |-----handy-ruler------------------------------------------------------|
$PRGNAM: $PRGNAM ( program for )
$PRGNAM:
$PRGNAM:
$PRGNAM:
$PRGNAM:
$PRGNAM:
$PRGNAM:
$PRGNAM:
$PRGNAM:
$PRGNAM:
$PRGNAM: Packaged for Slackware by <joshuakwood@gmail.com>
EOF

/usr/bin/chown jk:users *
/usr/bin/chmod +x *.SlackBuild
