summaryrefslogtreecommitdiffstats
path: root/academic/bibletime/bibletime.SlackBuild
blob: df21ddf077d511290b2b805587b40473b99c3a3b (plain)
#!/bin/sh

# A slackbuild script to build the BibleTime Sword frontend

# Copyright (c) 2007, Timothy Pollard
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
#   this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
#   notice, this list of conditions and the following disclaimer in the
#   documentation and/or other materials provided with the distribution.
#
#  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
#  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
#  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
#  EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
#  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
#  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
#  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
#  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

# Modified by Robert Delahunt [twinreverb[at]puresimplicity.net
# Modified 2018/19/20 by Tim Dickson (dickson.tim@googlemail.com)

PRGNAM=bibletime
VERSION=${VERSION:-3.0}
CMVERSION=${CMVERSION:-3.17.2}

#if you have a private cmake v 3.10 or newer, setting CMAKEBINDIR with the
#full directory of the cmake binary will cause this script to try it
#instead of building it's own private version

CHKCMAKE="no"
if [ "x${CMAKEBINDIR}" != "x" ]&&[ -d "${CMAKEBINDIR}" ]&&[ -x "${CMAKEBINDIR}/cmake" ]; then
  #we make sure either main version is >3 or subversion>=10. this should
  #cover all possibilities with slack14.2 or higher, although 15.0 should
  #have newer version of cmake anyway :-)
  CHKCMAKE=`${CMAKEBINDIR}/cmake --version|head -n1|awk '{print $NF}'|awk -F"." '($1>3)||($2>=10) {print "yes"}'`
fi
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}

if [ -z "$ARCH" ]; then
  case "$( uname -m )" in
    i?86) ARCH=i586 ;;
    arm*) ARCH=arm ;;
       *) ARCH=$( uname -m ) ;;
  esac
fi

CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}

if [ "$ARCH" = "i586" ]; then
   SLKCFLAGS="-O2 -march=i586 -mtune=i686"
   LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
   SLKCFLAGS="-O2 -march=i686 -mtune=i686"
   LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
   SLKCFLAGS="-O2 -fPIC"
   LIBDIRSUFFIX="64"
else
  SLKCFLAGS="-O2"
  LIBDIRSUFFIX=""
fi

set -e

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
tar -xJvf $CWD/$PRGNAM-$VERSION.tar.xz
cd $PRGNAM-$VERSION

#we need a private copy of a newer version of cmale (at least 3.10)
if [ "$CHKCMAKE" != "yes" ]; then
  tar xvf $CWD/cmake-$CMVERSION.tar.gz
fi

#sane permissions for everything
chown -R root:root .
find -L . \
 \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
  -o -perm 511 \) -exec chmod 755 {} \; -o \
 \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
 -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;

#first we do the private cmake stuff.
if [ "$CHKCMAKE" != "yes" ]; then
  cd CMake-$CMVERSION
  mkdir cmake-build
  cd cmake-build
  CFLAGS="$SLKCFLAGS" \
  CXXFLAGS="$SLKCFLAGS" \
  ../configure \
  --prefix=$TMP/$PRGNAM-$VERSION/tmpcmake \
  --docdir=/doc \
  --no-qt-gui \
  --system-curl \
  --system-expat \
  --no-system-jsoncpp \
  --system-zlib \
  --system-bzip2 \
  --system-libarchive
  #we don't care about the docs really as this is a temp install.
  make
  make install
  #hopefully that has installed our tmp cmake in the right place
  #in $TMP/$PRGNAM-$VERSION/tmpcmake/bin
  #lets make it available to the bibletime build
  OLDPATH=$PATH
  export PATH=$TMP/$PRGNAM-$VERSION/tmpcmake/bin:$PATH
  #move back to the right directory
  cd ../../
else
  #we passed a viable cmake alternative location, so use that.
  OLDPATH=$PATH
  export PATH=${CMAKEBINDIR}:$PATH
fi

#we need to patch the cmake file to skip tests as they fail at the moment
#hopefully they will be fixed in 3.0.1

sed -i "/BTTests/s/^/#/" cmake/BTApplication.cmake

mkdir -p build
cd build
  cmake \
    -Wno-dev \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DCMAKE_SKIP_RPATH:BOOL=ON \
    -DCMAKE_C_FLAGS="$SLKCFLAGS" \
    -DCMAKE_CXX_FLAGS="$SLKCFLAGS" \
    -DLIB_SUFFIX=$LIBDIRSUFFIX .. 
  #we have done the cmake stuff, so restore the PATH
  export PATH=$OLDPATH
  make
  make install DESTDIR=$PKG
cd ..
# /usr/share/icons is for themed icons
mv $PKG/usr/share/icons $PKG/usr/share/pixmaps

find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
  | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true

mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a ChangeLog LICENSE README.md $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
find $PKG/usr/doc/$PRGNAM-$VERSION -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-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}