#!/bin/bash # Slackware build script for hexinator # Written by B. Watson (urchlay@slackware.uk) # Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details. # 20211224 bkw: BUILD=2, fix for -current (add old openssl lib). # 20200326 bkw: update for v1.12 for 64-bit, stay at 1.10 for 32-bit. # 20200317 bkw: update for v1.10, switched from RPM to .deb. Yes, there # is a v1.11 available, but there are good reasons for not packaging it, # from our POV: # 1) v1.11 dropped support for 32-bit. # 2) The 64-bit .deb for v1.11 is missing one of the shared libraries that # should be packaged with it, so it doesn't *work*. Reported to # upstream, possibly will be fixed soon. cd $(dirname $0) ; CWD=$(pwd) PRGNAM=hexinator VERSION=${VERSION:-1.12} BUILD=${BUILD:-2} TAG=${TAG:-_SBo} PKGTYPE=${PKGTYPE:-tgz} if [ -z "$ARCH" ]; then case "$( uname -m )" in i?86) ARCH=i586 ;; arm*) ARCH=arm ;; *) ARCH=$( uname -m ) ;; esac fi if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE" exit 0 fi TMP=${TMP:-/tmp/SBo} PKG=$TMP/package-$PRGNAM OUTPUT=${OUTPUT:-/tmp} case "$ARCH" in i?86) DEBARCH=i386 ;; x86_64) DEBARCH=amd64 ;; *) echo "!!! Unsupported ARCH '$ARCH'. Only i586|i686|x86_64 allowed." 1>&2 exit 1 ;; esac set -e # 1.10 is the last version with 32-bit support. Doing it this way # allows 32-bit users to set VERSION in the environment, if they # want to build 1.08 or 1.09. if [ "$DEBARCH" = "i386" ]; then VERMINOR="$( echo $VERSION | cut -d. -f2 )" if [ "$VERMINOR" -gt 9 ]; then NEWVER=1.10 echo "*** Packaging $NEWVER as $VERSION lacks 32-bit support" VERSION=$NEWVER fi fi # No 'source' dir, extract directly to $PKG rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT cd $TMP mkdir -p $PKG cd $PKG ar p $CWD/$PRGNAM-${VERSION}_$DEBARCH.deb data.tar.xz | tar xvfJ - # png icons don't need to be +x chmod -x usr/share/icons/*/*/*/* chown -R root:root . find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+ # No docs in the .deb, include our own README. mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION cat $CWD/README > $PKG/usr/doc/$PRGNAM-$VERSION/README cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild # 20211224 bkw: upstream's QtNetwork library was built with # openssl-1.0.x. It won't work with openssl-1.1.x, and hexinator # won't work with Slackware's qt5. Since PV dropped openssl10-solibs, # we have to include the shared lib in this package. Before you # start freaking out about how insecure and unmaintained this old # openssl is, remember that it's *only* used by hexinator (lives in # /opt/hexinator), and that hexinator only uses it to talk to its own # vendor's server. So long as you trust the vendor, it's OK. And if # you don't, you wouldn't run their precompiled binary anyway, right? SSL10VER="${SSL10VER:-1.0.2u}" SSL10BLD="${SSL10BLD:-2}" SSL10ARCH="x86_64" [ "$ARCH" != "x86_64" ] && SSL10ARCH=i586 mkdir tmp cd tmp tar xvf $CWD/openssl10-solibs-$SSL10VER-$SSL10ARCH-$SSL10BLD.txz mv ./lib*/lib{ssl,crypto}*.so.* $PKG/opt/$PRGNAM/lib cd - rm -rf tmp # The hexinator binary was built with rpath support, so it can find its # own libraries. The libs need some attention before hexinator can find # them (presumably dpkg would automagically do this when the package gets # installed). It's a qt5 app that ships with its own private set of qt5 # libs. We *don't* want it using any other qt5 libs that may happen to # exist (like the ones in /usr/lib64 from the qt5 SlackBuild). The # ldconfig step here prevents that. chmod 755 $PKG/opt/$PRGNAM/lib/* ldconfig -n -N $PKG/opt/$PRGNAM/lib for i in ssl crypto; do ln -s lib$i.so.1 $PKG/opt/$PRGNAM/lib/lib$i.so done # Convenience symlink, for us command line freaks. mkdir -p $PKG/usr/bin ln -s /opt/$PRGNAM/bin/$PRGNAM $PKG/usr/bin/$PRGNAM 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-$ARCH-$BUILD$TAG.$PKGTYPE