diff options
Diffstat (limited to 'office/coolreader/coolreader.SlackBuild')
-rw-r--r-- | office/coolreader/coolreader.SlackBuild | 186 |
1 files changed, 148 insertions, 38 deletions
diff --git a/office/coolreader/coolreader.SlackBuild b/office/coolreader/coolreader.SlackBuild index d4cd5b4820..af5cfcb8c1 100644 --- a/office/coolreader/coolreader.SlackBuild +++ b/office/coolreader/coolreader.SlackBuild @@ -1,8 +1,9 @@ -#!/bin/sh +#!/bin/bash # Slackware build script for CoolReader -# Copyright 2011-2012 Fridrich von Stauffenberg <cancellor2@gmail.com> +# Copyright 2011-2012 Fridrich von Stauffenberg <email removed> +# Copyright 2020 B. Watson <urchlay@slackware.uk> # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -22,31 +23,73 @@ # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# 20230111 bkw: BUILD=2, just to force a rebuild after libunibreak +# update to 5.1. + +# 20220218 bkw: update for v3.2.59. To get it to build, had to disable +# unrar support... which didn't exist in v3.2.57, so nobody will miss +# it, I hope. Also, wxWidgets support fails to build, so that's now +# disabled (and removed from the README). + +# 20210930 bkw: update for v3.2.57. This is not the latest release, but +# 3.2.58 fails to build. Will revisit when the next release happens. If +# you can't wait that long, send me a patch (does anyone even use this?) +# - remove fribidi from DOWNLOAD, -current's is new enough now. +# - remove libunibreak from DOWNLOAD, add to REQUIRES (SBo's libunibreak +# is now new enough to use for coolreader). +# - drop QT (qt4) GUI option since qt4's not on SBo (yet?). +# - wxGTK3 build no longer works, for GUI=wx require wxPython 2.8. + +# 20210222 bkw: update for v3.2.54. Upstream no longer ships libunibreak +# and fribidi source, so add them to DOWNLOAD. Replace qt4_settings_ui.diff +# with a more robust sed command. Add -fpermissive. Sigh. + +# 20201102 bkw: +# - update for v3.2.50. +# - embiggen the default window size. +# - make standard (since the 1980s!) keyboard accelerators work +# (alt-f for file menu, alt-v for view, etc), in the qt4/5 UIs. + +# 20201019 bkw: +# - update for v3.2.49, new homepage. +# - allow for building qt4, qt5, wx UIs. +# - replace useless/inaccurate man page with our own. + +# 20200126 bkw, BUILD=2: +# - take over maintenance +# - i486 => i586 +# - make .desktop file validate +# - fix documetn => document typo +# - add supported filetypes to README and slack-desc +# - save/load settings (.ini file) to ~/.cr3, not /usr/share/cr3. + +cd $(dirname $0) ; CWD=$(pwd) + PRGNAM=coolreader -VERSION=${VERSION:-3.0.56} -BUILD=${BUILD:-1} +VERSION=${VERSION:-3.2.59} +BUILD=${BUILD:-2} TAG=${TAG:-_SBo} - -ORIG_PRGNAM=cr3 -ORIG_VERSION=$VERSION-7 -ORIG_DIRNAME=cr$ORIG_VERSION -ORIG_FILENAME=${ORIG_PRGNAM}_$VERSION.orig.tar.gz +PKGTYPE=${PKGTYPE:-tgz} if [ -z "$ARCH" ]; then case "$( uname -m )" in - i?86) ARCH=i486 ;; + i?86) ARCH=i586 ;; arm*) ARCH=arm ;; *) ARCH=$( uname -m ) ;; esac fi -CWD=$(pwd) +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} -if [ "$ARCH" = "i486" ]; then - SLKCFLAGS="-O2 -march=i486 -mtune=i686" +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" LIBDIRSUFFIX="" elif [ "$ARCH" = "i686" ]; then SLKCFLAGS="-O2 -march=i686 -mtune=i686" @@ -64,42 +107,109 @@ set -e rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT cd $TMP -rm -rf $ORIG_DIRNAME -tar xvf $CWD/$ORIG_FILENAME -cd $ORIG_DIRNAME -chown -R root:root . +rm -rf $PRGNAM-cr$VERSION +tar xvf $CWD/$PRGNAM-cr$VERSION.tar.gz +cd $PRGNAM-cr$VERSION +find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \ + \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+ + +# FFS, it's 2020, we don't need GUI apps hardcoded to start at +# 640x400 window size. Honestly we don't need them hardcoded at +# all, but since that's what coolreader does, pick a size that's +# bigger than a 3x5" index card on a modern screen... +sed -i 's,\(<height>\)400,\11024,' cr3qt/src/mainwindow.ui +sed -i 's,\(<width>\)600,\11280,' cr3qt/src/mainwindow.ui + +# Install the docs in the right place for Slackware. +sed -i "s,share/doc/cr3,doc/$PRGNAM-$VERSION," cr3qt/CMakeLists.txt + +# The settings sed for qt4 was made by loading cr3qt/src/settings.ui +# into Qt Designer and saving it again. Needed because upstream's +# using a different (older?) version of qt4. + +if true; then + # 20220218 bkw: only the qt5 UI works in 3.2.59, sorry. + GUI=QT5 + UI=Qt5 +else + # 20220218 bkw: wxWidgets is broken (for either 2.8 or 3.0), + # this section of code can't run, it's left for reference. + GUI=${GUI:-QT5} + GUI="$( echo $GUI | tr a-z A-Z )" + case "$GUI" in + # 20210930 bkw: Qt4 disabled for now, unless/until SBo gets a qt4 build. + #QT) UI=Qt4 + #sed -i '/<property name="currentText"/s,>, stdset="0">,' cr3qt/src/settings.ui + #;; + QT5) UI=Qt5 ;; + WX) # Only 2.8.x works, be specific in the slack-desc. + UI="wxWidgets 2.8" + SLKCFLAGS+=" $( wx-config --version=2.8 --cflags )" + SLKLDFLAGS="$( wx-config --version=2.8 --libs )" ;; + *) echo "*** Unsupported GUI '$GUI', use one of: QT5 WX" + exit 1 ;; + esac +fi + +# 20201103 bkw: Alt+F for the File menu, Alt+V for View, etc. This +# has been a UI standard since before Windows 1.0 (MS-DOS apps had it), +# and I'm not sure why upstream didn't include it. Only affects the +# Qt4/5 UIs. Incomplete: you can't press Alt+F followed by O for +# File -> Open... but you can use the arrow keys to navigate the +# menus once one of them has been opened. +sed -i 's,>\(File\|View\|Navigation\|Help\)<,>\&\1<,' \ + cr3qt/src/mainwindow.ui + +# This is undocumented and exists purely for my own use. It gets rid +# of the "Escape = minimize" keystroke, because I keep expecting Escape +# to exit (like 3 or 4 other document readers I use regularly). +# Only affects the Qt4/5 UIs. +if [ "${NO_ESCAPE:-no}" = "yes" ]; then + echo "=== Activating super-secret Urchlay mode" + echo -e 'g/>Esc<\n-1,+1d\nw\nq' | ed cr3qt/src/mainwindow.ui +fi + +echo "=== Building $UI GUI" mkdir -p build cd build -cmake \ - -D CMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ - -D CMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \ - -D CMAKE_INSTALL_PREFIX=/usr \ - -D LIB_SUFFIX=${LIBDIRSUFFIX} \ - -D CMAKE_BUILD_TYPE=Release \ - -D MAX_IMAGE_SCALE_MUL=2 \ - -D DOC_DATA_COMPRESSION_LEVEL=3 \ - -D DOC_BUFFER_SIZE=0x1400000 \ - -D GUI=QT .. -make VERBOSE=1 -make install DESTDIR=$PKG + cmake \ + -D CMAKE_EXE_LINKER_FLAGS="$SLKLDFLAGS" \ + -D USE_UNRAR=1 \ + -D CMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ + -D CMAKE_CXX_FLAGS:STRING="$SLKCFLAGS -fpermissive" \ + -D CMAKE_INSTALL_PREFIX=/usr \ + -D LIB_SUFFIX=${LIBDIRSUFFIX} \ + -D CMAKE_BUILD_TYPE=Release \ + -D MAX_IMAGE_SCALE_MUL=2 \ + -D DOC_DATA_COMPRESSION_LEVEL=3 \ + -D DOC_BUFFER_SIZE=0x1400000 \ + -U USE_UNRAR \ + -D GUI=$GUI .. + make VERBOSE=1 + make install/strip DESTDIR=$PKG cd .. -find $PKG -print0 | xargs -0 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/man -mv $PKG/usr/share/man/* $PKG/usr/man +# Upstream's man page doesn't document all the options, and incorrectly +# refers to the (nonexistent) info page. It's also hardcoded to install +# to /usr/share/man. rm -rf $PKG/usr/share/man +mkdir -p $PKG/usr/man/man1 +gzip -9c < $CWD/cr3.1 > $PKG/usr/man/man1/cr3.1.gz + +# Tired of having to remember the binary's called something other than +# the package and source name. +ln -s cr3 $PKG/usr/bin/$PRGNAM +ln -s cr3.1.gz $PKG/usr/man/man1/$PRGNAM.1.gz +# This dir already exists with GUI=QT or QT5, but not WX. mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION -mv $PKG/usr/share/doc/$ORIG_PRGNAM/* $PKG/usr/doc/$PRGNAM-$VERSION -rm -rf $PKG/usr/share/doc +cp -a README.md cr3gui/COPYING $PKG/usr/doc/$PRGNAM-$VERSION cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild mkdir -p $PKG/install -cat $CWD/slack-desc > $PKG/install/slack-desc +sed "s,@UI@,$UI," $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} +/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE |