#!/bin/sh
#
# checksums-slackware.SlackBuild
# 2024-05-15
#

PRGNAM=checksums-slackware
VERSION=${VERSION:-15.0}
ARCH=noarch
BUILD=${BUILD:-1}
TAG=${TAG:-scr}
PKGTYPE=${PKGTYPE:-txz}

SLACKDVD=${SLACKDVD:-/mnt/cdrom}

MAINTAINER="Gernot Walzl"
EMAIL="gernot.walzl@gmx.at"

DESC="Checksums of files contained in official Slackware packages"

# EOF info


if [ -d "$SLACKDVD/slackware64" ]; then
  PRGNAM="${PRGNAM}64"
elif [ ! -d "$SLACKDVD/slackware" ]; then
  echo "ERROR: SLACKDVD=$SLACKDVD is not valid."
  echo "Please insert and mount a Slackware DVD or mount an ISO file:"
  echo "mount -o loop slackware-${VERSION}-install-dvd.iso /mnt/cdrom"
  exit 1
fi

# set initial variables
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}

# exit on error
set -e

# create checksums
rm -rf $PKG
mkdir -p $PKG/install
mkdir -p $PKG/usr/share/checksums
for PKGFILE in $(find "$SLACKDVD" -type f -name '*.t?z'); do
  PKGNAME=$(basename "$PKGFILE" | rev | cut -f2- -d. | rev)
  echo $PKGNAME
  mkdir -p "$TMP/$PKGNAME"
  cd "$TMP/$PKGNAME" || exit 1
  tar xf "$PKGFILE" --exclude 'install'
  find * -type f -print0 | sort -z | xargs -0 sha256sum \
    >> $PKG/usr/share/checksums/$PKGNAME.sha256
  rm -rf "$TMP/$PKGNAME"
done

# add some description to the package
if [ "$DESC" != "" ]; then
  echo "$DESC" | sed 's/^/'$PRGNAM': /g' > $PKG/install/slack-desc
fi

# build the package
cd $PKG
makepkg -l y -c n \
  $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE \
  || exit 1

# make everything clean
cd $CWD
rm -rf $PKG
