diff options
author | Eric Hameleers <alien@slackware.com> | 2019-10-23 09:54:29 +0000 |
---|---|---|
committer | Eric Hameleers <alien@slackware.com> | 2019-10-23 09:54:29 +0000 |
commit | d90b2c679db25cb6310236b13746412e18776c07 (patch) | |
tree | 3ce751bc49fbf4ab57d298dc0d96d4329d53f5ec /calibre | |
parent | 0a0bf9e3a514ec4614ace7fd19ddbd6cc73e076d (diff) | |
download | asb-d90b2c679db25cb6310236b13746412e18776c07.tar.gz asb-d90b2c679db25cb6310236b13746412e18776c07.tar.xz |
calibre: updated to 4.2.0. Major version bump, lots of new dependencies.
The new package can be built without *external* dependencies now.
Diffstat (limited to 'calibre')
-rwxr-xr-x | calibre/build/calibre.SlackBuild | 720 |
1 files changed, 440 insertions, 280 deletions
diff --git a/calibre/build/calibre.SlackBuild b/calibre/build/calibre.SlackBuild index bcf76a9c..d7945fc0 100755 --- a/calibre/build/calibre.SlackBuild +++ b/calibre/build/calibre.SlackBuild @@ -28,13 +28,17 @@ # For: calibre # Descr: e-book library management application # URL: http://calibre-ebook.com/ -# Needs: podofo, unrar; -# If you did not add Qt5 to the package, you will also need: -# qt5, qt5-webkit, PyQt5; +# Needs: If you did not add Qt5 to the package, you will also need: +# libinput,libxkbcommon,qt5. # If you did not add python2.7 to the package, you will also need: -# dnspython, pycrypto, pysetuptools, python-apsw, -# python-css-parser, python-dateutil, python-lxml, -# python-mechanize, python-netifaces, python-psutil +# PyQt5, PyQtWebEngine, dbus-python, dnspython, pycrypto, +# pysetuptools, python-apsw, python-beautifulsoup4, python-bflc, +# python-chardet, python-css-parser, python-dateutil, python-enum34, +# python-feedparser, pyhton-html2text, python-html5-parser, +# python-html5lib, python-lxml, python-markdown, python-mechanize, +# python-msgpack, python-netifaces, python-pillow, python-psutil, +# python-pygments, python-regex, python-six, python-soupsieve, +# python-unrardll, python-webencodings, sip, sqlite-amalgamation. # Changelog: # 0.7.20-1: 25/Sep/2010 by Eric Hameleers <alien@slackware.com> # * Initial build. @@ -118,6 +122,8 @@ # * Update. # 3.47.1-1: 08/sep/2019 by Eric Hameleers <alien@slackware.com> # * Update. +# 4.2.0-1: 19/oct/2019 by Eric Hameleers <alien@slackware.com> +# * New major release 4.x. No more qt-webkit. # # Run 'sh calibre.SlackBuild' to build a Slackware package. # The package (.txz) and .txt file as well as build logs are created in /tmp . @@ -127,7 +133,7 @@ PRGNAM=calibre SRCNAM=calibre -VERSION=${VERSION:-3.47.1} +VERSION=${VERSION:-4.2.0} BUILD=${BUILD:-1} NUMJOBS=${NUMJOBS:-" -j$(nproc) "} TAG=${TAG:-alien} @@ -137,25 +143,24 @@ DOCS="LICENSE* Changelog* COPYRIGHT README*" PYTHON=$(python2 -c 'import sys; print (sys.version.split( )[0])') SLACKVER=${SLACKVER:-$(cat /etc/slackware-version |cut -d' ' -f2)} -REQUIRED_QT="5.6.2" +REQUIRED_QT="5.13.0" # Only used in case we need to build our own Qt: -INT_QT=5.9.6 -INT_QTWEBKIT=5.9.1 +INT_QT=5.13.1 -REQUIRED_MTP="1.1.11" +REQUIRED_MTP="1.1.16" # Only used in case we need to build our own libmtp: -INT_MTP=1.1.14 +INT_MTP=1.1.16 # Only used when we build our own ImageMagick: -INT_MAGICK=6.9.9-42 +INT_MAGICK=6.9.10_68 REQUIRED_PYTHON="2.7" -REQUIRED_PYTHON_MIN="15" +REQUIRED_PYTHON_MIN="16" # Only used in case we need to build our own python: -INT_PYTHON=2.7.16 +INT_PYTHON=2.7.17 # Only used in case we need to build our own python modules: #INT_SETUPTOOLS=14.3 @@ -164,37 +169,42 @@ INT_PYTHON=2.7.16 # and fails to compile netifaces with error: # netifaces.c error you need to add code for your platform INT_SETUPTOOLS=41.0.1 -INT_PIP=19.2.1 +# The rest of the internal Python deps: +INT_APSW=3.27.2-r1 INT_BEAUTIFULSOUP=4.8.0 INT_BFLC=1.5 +INT_CHARDET=3.0.4 INT_CSSPARSER=1.0.4 -INT_DATEUTIL=2.5.3 -INT_DBUSPYTHON=1.2.0 -INT_DNSPYTHON=1.14.0 -INT_DUKPY=0.3 +INT_DATEUTIL=2.8.0 +INT_DBUSPYTHON=1.2.8 +INT_DNSPYTHON=1.16.0 +INT_ENUM34=1.1.6 INT_FEEDPARSER=5.2.1 INT_HTML2TEXT=2018.1.9 -INT_HTML5LIB=0.999999999 +INT_HTML5LIB=1.0.1 INT_HTML5PARSER=0.4.8 -INT_IMAGING=3.2.0 -INT_LXML=3.8.0 -INT_MARKDOWN=3.0.1 -INT_MECHANIZE=0.3.3 -INT_MSGPACK=0.5.6 -INT_NETIFACES=0.10.6 -INT_OPTIPNG=0.7.5 -INT_PSUTIL=4.3.0 +INT_LXML=4.3.3 +INT_MARKDOWN=3.1 +INT_MECHANIZE=0.4.3 +INT_MSGPACK=0.6.1 +INT_NETIFACES=0.10.9 +INT_OPTIPNG=0.7.7 +INT_PILLOW=6.2.0 +INT_PODOFO=0.9.6 +INT_PSUTIL=5.6.2 INT_PYCRYPTO=2.6.1 INT_PYGMENTS=2.3.1 -INT_PYQT5=5.9.2 -INT_REGEX=2018.07.11 -INT_SIP=4.19.8 -INT_SIX=1.10.0 +INT_PYQT5=5.13.1 +INT_PYQTWEBENG=5.13.1 +INT_REGEX=2019.04.14 +INT_SIP=4.19.19 +INT_SIX=1.12.0 INT_SOUPSIEVE=1.9.1 -INT_SQLITE=3270200 +INT_SQLITE=3280000 INT_UNRARDLL=0.1.3 +INT_UNRARSRC=5.5.6 INT_WEBENC=0.5.1 -INT_APSW=3.27.2-r1 +INT_XKB=0.9.1 # Where do we look for sources? SRCDIR=$(cd $(dirname $0); pwd) @@ -275,10 +285,10 @@ if [ "$BUILD_PYTHONMODS" = "YES" ]; then SRCURL[4]="https://pypi.python.org/packages/source/c/css-parser/css-parser-${INT_CSSPARSER}.tar.gz" SOURCE[5]="$SRCDIR/sources/python-dateutil-${INT_DATEUTIL}.tar.gz" - SRCURL[5]="https://github.com/dateutil/dateutil/releases/download/${INT_DATEUTIL}/python-dateutil-${INT_DATEUTIL}.tar.gz" + SRCURL[5]="https://pypi.python.org/packages/source/p/python-dateutil/python-dateutil-${INT_DATEUTIL}.tar.gz" - SOURCE[6]="$SRCDIR/sources/Pillow-${INT_IMAGING}.tar.gz" - SRCURL[6]="https://github.com/python-pillow/Pillow/archive/${INT_IMAGING}.tar.gz" + SOURCE[6]="$SRCDIR/sources/Pillow-${INT_PILLOW}.tar.gz" + SRCURL[6]="https://pypi.io/packages/source/p/pillow/Pillow-${INT_PILLOW}.tar.gz" SOURCE[7]="$SRCDIR/sources/lxml-${INT_LXML}.tgz" SRCURL[7]="http://lxml.de/files/lxml-${INT_LXML}.tgz" @@ -287,10 +297,10 @@ if [ "$BUILD_PYTHONMODS" = "YES" ]; then SRCURL[8]="https://github.com/python-mechanize/mechanize/archive/v${INT_MECHANIZE}.tar.gz" SOURCE[9]="$SRCDIR/sources/PyQt5_gpl-${INT_PYQT5}.tar.gz" - SRCURL[9]="http://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-${INT_PYQT5}/PyQt5_gpl-${INT_PYQT5}.tar.gz" + SRCURL[9]="https://www.riverbankcomputing.com/static/Downloads/PyQt5/${INT_PYQT5}/PyQt5_gpl-${INT_PYQT5}.tar.gz" SOURCE[10]="$SRCDIR/sources/sip-${INT_SIP}.tar.gz" - SRCURL[10]="http://sourceforge.net/projects/pyqt/files/sip/sip-${INT_SIP}/sip-${INT_SIP}.tar.gz" + SRCURL[10]="https://www.riverbankcomputing.com/static/Downloads/sip/${INT_SIP}/sip-${INT_SIP}.tar.gz" SOURCE[11]="$SRCDIR/sources/dbus-python-${INT_DBUSPYTHON}.tar.gz" SRCURL[11]="http://dbus.freedesktop.org/releases/dbus-python/dbus-python-${INT_DBUSPYTHON}.tar.gz" @@ -312,13 +322,13 @@ if [ "$BUILD_PYTHONMODS" = "YES" ]; then SRCURL[16]="https://pypi.io/packages/source/r/regex/regex-${INT_REGEX}.tar.gz" SOURCE[17]="$SRCDIR/sources/msgpack-python-${INT_MSGPACK}.tar.gz" - SRCURL[17]="https://pypi.io/packages/source/m/msgpack-python/msgpack-python-${INT_MSGPACK}.tar.gz" + SRCURL[17]="https://pypi.io/packages/source/m/msgpack/msgpack-${INT_MSGPACK}.tar.gz" SOURCE[18]="$SRCDIR/sources/six-${INT_SIX}.tar.gz" SRCURL[18]="https://pypi.io/packages/source/s/six/six-${INT_SIX}.tar.gz" - SOURCE[19]="$SRCDIR/sources/dukpy-${INT_DUKPY}.tar.gz" - SRCURL[19]="https://github.com/kovidgoyal/dukpy/archive/v${INT_DUKPY}.tar.gz" + SOURCE[19]="$SRCDIR/sources/enum34-${INT_ENUM34}.tar.gz" + SRCURL[19]="https://files.pythonhosted.org/packages/bf/3e/31d502c25302814a7c2f1d3959d2a3b3f78e509002ba91aea64993936876/enum34-${INT_ENUM34}.tar.gz" SOURCE[20]="$SRCDIR/sources/webencodings-${INT_WEBENC}.tar.gz" SRCURL[20]="https://pypi.io/packages/source/w/webencodings/webencodings-${INT_WEBENC}.tar.gz" @@ -353,8 +363,14 @@ if [ "$BUILD_PYTHONMODS" = "YES" ]; then SOURCE[30]="$SRCDIR/sources/html2text-${INT_HTML2TEXT}.tar.gz" SRCURL[30]="https://pypi.io/packages/source/h/html2text/html2text-${INT_HTML2TEXT}.tar.gz" - SOURCE[31]="$SRCDIR/sources/pip-${INT_PIP}.tar.gz" - SRCURL[31]="https://pypi.io/packages/source/p/pip/pip-${INT_PIP}.tar.gz" + SOURCE[31]="$SRCDIR/sources/chardet-${INT_CHARDET}.tar.gz" + SRCURL[31]="https://pypi.io/packages/source/c/chardet/chardet-${INT_CHARDET}.tar.gz" + + SOURCE[32]="$SRCDIR/sources/unrarsrc-${INT_UNRARSRC}.tar.gz" + SRCURL[32]="http://www.rarlab.com/rar/unrarsrc-${INT_UNRARSRC}.tar.gz" + + SOURCE[33]="$SRCDIR/sources/PyQtWebEngine_gpl-${INT_PYQTWEBENG}.tar.gz" + SRCURL[33]="https://www.riverbankcomputing.com/static/Downloads/PyQtWebEngine/${INT_PYQTWEBENG}/PyQtWebEngine_gpl-${INT_PYQTWEBENG}.tar.gz" NEXT_ARRAYEL=${#SOURCE[@]} else @@ -374,7 +390,7 @@ if [ "$BUILD_MTP" = "YES" ]; then echo ">> Compiling libmtp <<" SOURCE[$NEXT_ARRAYEL]="$SRCDIR/sources/libmtp-${INT_MTP}.tar.gz" - SRCURL[$NEXT_ARRAYEL]="http://sourceforge.net/projects/libmtp/files/libmtp/${INT_MTP}/libmtp-${INT_MTP}.tar.gz/download" + SRCURL[$NEXT_ARRAYEL]="https://downloads.sourceforge.net/libmtp/libmtp-${INT_MTP}.tar.gz" NEXT_ARRAYEL=$(( ${NEXT_ARRAYEL} + 1 )) fi @@ -382,13 +398,13 @@ fi if [ "$BUILD_QT" = "YES" ]; then echo ">> Compiling Qt <<" - SOURCE[$NEXT_ARRAYEL]="$SRCDIR/sources/qt-everywhere-opensource-src-${INT_QT}.tar.xz" - SRCURL[$NEXT_ARRAYEL]="http://download.qt.io/official_releases/qt/$(echo ${INT_QT}|cut -d. -f1,2)/${INT_QT}/single/qt-everywhere-opensource-src-${INT_QT}.tar.xz" + SOURCE[$NEXT_ARRAYEL]="$SRCDIR/sources/qt-everywhere-src-${INT_QT}.tar.xz" + SRCURL[$NEXT_ARRAYEL]="http://download.qt.io/official_releases/qt/$(echo ${INT_QT}|cut -d. -f1,2)/${INT_QT}/single/qt-everywhere-src-${INT_QT}.tar.xz" NEXT_ARRAYEL=$(( ${NEXT_ARRAYEL} + 1 )) - SOURCE[$NEXT_ARRAYEL]="$SRCDIR/sources/qtwebkit-opensource-src-${INT_QTWEBKIT}.tar.xz" - SRCURL[$NEXT_ARRAYEL]="http://download.qt.io/official_releases/qt/$(echo ${INT_QTWEBKIT}|cut -d. -f1,2)/${INT_QTWEBKIT}/submodules/qtwebkit-opensource-src-${INT_QTWEBKIT}.tar.xz" + SOURCE[$NEXT_ARRAYEL]="$SRCDIR/sources/libxkbcommon-xkbcommon-${INT_XKB}.tar.gz" + SRCURL[$NEXT_ARRAYEL]="https://github.com/xkbcommon/libxkbcommon/archive/xkbcommon-${INT_XKB}.tar.gz" NEXT_ARRAYEL=$(( ${NEXT_ARRAYEL} + 1 )) fi @@ -403,7 +419,11 @@ if [ "$BUILD_MAGICK" = "YES" ]; then fi SOURCE[$NEXT_ARRAYEL]="$SRCDIR/sources/optipng-${INT_OPTIPNG}.tar.gz" -SRCURL[$NEXT_ARRAYEL]="http://prdownloads.sourceforge.net/optipng/optipng-${INT_OPTIPNG}.tar.gz" +SRCURL[$NEXT_ARRAYEL]="https://downloads.sourceforge.net/optipng/optipng-${INT_OPTIPNG}.tar.gz" +NEXT_ARRAYEL=$(( ${NEXT_ARRAYEL} + 1 )) + +SOURCE[$NEXT_ARRAYEL]="$SRCDIR/sources/podofo-${INT_PODOFO}.tar.gz" +SRCURL[$NEXT_ARRAYEL]="https://downloads.sourceforge.net/podofo/podofo-${INT_PODOFO}.tar.gz" NEXT_ARRAYEL=$(( ${NEXT_ARRAYEL} + 1 )) ## @@ -457,10 +477,17 @@ umask 0022 mkdir -p $OUTPUT # place for the package to be saved mkdir -p $TMP/tmp-$PRGNAM # location to build the source mkdir -p $PKG # place for the package to be built -rm -rf $PKG/* # always erase old package's contents -rm -rf $TMP/tmp-$PRGNAM/* # remove the remnants of previous build -rm -rf $OUTPUT/{configure,make,install,error,makepkg}-$PRGNAM.log - # remove old log files + +if [ "$P1" != "--oldbuild" -a "$P1" != "--download" ]; then + # If the "--oldbuild" parameter is present, we keep + # the old build files and continue; + # By default we remove the remnants of previous build and continue: + echo -e "**\n** Cleaning up old build ...\n**" + rm -rf $PKG/* # always erase old package's contents + rm -rf $TMP/tmp-$PRGNAM/* # remove the remnants of previous build + rm -rf $OUTPUT/{configure,make,install,error,makepkg}-$PRGNAM.log + # remove old log files +fi # Source file availability: for (( i = 0; i < ${#SOURCE[*]}; i++ )) ; do @@ -495,36 +522,40 @@ echo "++" echo "|| $PRGNAM-$VERSION" echo "++" -if [ "$BUILD_PYTHON" = "YES" -o "$BUILD_PYTHONMODS" = "YES" -o "$BUILD_MTP" = "YES" -o "$BUILD_QT" = "YES" -o "$BUILD_MAGICK" = "YES" ]; then - # Sanity check: in case we need to build an internal set of python interpreter - # plus support modules, then you must not compile this package when calibre - # is already installed! - if [ -d /usr/lib${LIBDIRSUFFIX}/calibre/lib ]; then - echo "" - echo "** You have calibre installed in /usr/lib${LIBDIRSUFFIX}/calibre" - echo "** Compiling this package means you have to remove the existing" - echo "** calibre installation first, it conflicts with the compilation!" - echo "" - exit 1 +cd $TMP/tmp-$PRGNAM + +if [ "$P1" != "--oldbuild" ]; then + if [ "$BUILD_PYTHON" = "YES" -o "$BUILD_PYTHONMODS" = "YES" -o "$BUILD_MTP" = "YES" -o "$BUILD_QT" = "YES" -o "$BUILD_MAGICK" = "YES" ]; then + # Sanity check: + # In case we need to build an internal set of python interpreter plus + # support modules, then you must not compile this package when calibre + # is already installed! + if [ -d /usr/lib${LIBDIRSUFFIX}/calibre/lib ]; then + echo "" + echo "** You have calibre installed in /usr/lib${LIBDIRSUFFIX}/calibre" + echo "** Compiling this package means you have to remove the existing" + echo "** calibre installation first, it conflicts with the compilation!" + echo "" + exit 1 + fi fi -fi -cd $TMP/tmp-$PRGNAM -echo "Extracting the source archive(s) for $PRGNAM..." -tar -xf ${SOURCE[0]} -if [ $NEXT_ARRAYEL -gt 1 ]; then -for (( i = 1; i < ${#SOURCE[*]}; i++ )) ; do - echo "-- Also extracting dependency source $(basename ${SOURCE[$i]})..." - if unzip -l ${SOURCE[$i]} 1>/dev/null 2>&1 ; then - unzip -q ${SOURCE[$i]} - else - tar -xf ${SOURCE[$i]} + echo "Extracting the source archive(s) for $PRGNAM..." + tar -xf ${SOURCE[0]} + if [ $NEXT_ARRAYEL -gt 1 ]; then + for (( i = 1; i < ${#SOURCE[*]}; i++ )) ; do + echo "-- Also extracting dependency source $(basename ${SOURCE[$i]})..." + if unzip -l ${SOURCE[$i]} 1>/dev/null 2>&1 ; then + unzip -q ${SOURCE[$i]} + else + tar -xf ${SOURCE[$i]} + fi + done fi -done -fi -chown -R root:root . -chmod -R u+w,go+r-w,a+X-s . + chown -R root:root . + chmod -R u+w,go+r-w,a+X-s . +fi echo Building ... @@ -533,6 +564,41 @@ echo Building ... # # +# Build libxkbcommon: +# +make_xkbcommon() { + + local MOD="xkbcommon" + echo -e "\n** $MOD **\n" + + cd $TMP/tmp-$PRGNAM/libxkbcommon-xkbcommon-${INT_XKB} + + export CFLAGS="$SLKCFLAGS" + export CXXFLAGS="$SLKCFLAGS" + mkdir -p build + cd build + meson .. \ + -Denable-docs=false \ + -Denable-wayland=false \ + --prefix=/usr/lib${LIBDIRSUFFIX}/calibre \ + --libdir=/usr/lib${LIBDIRSUFFIX}/calibre/lib \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_${MOD}.log + cd - + # Build and install: + ninja -C build \ + 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log + DESTDIR=$PKG meson install -C build \ + 2>&1 | tee $OUTPUT/install-${PRGNAM}_${MOD}.log + + # Add documentation: + mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} + cp -a LICENSE NEWS PACKAGING README* \ + $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true + +} # End make_xkbcommon + + +# # Build Qt 5.x: # make_qt5() { @@ -540,7 +606,7 @@ make_qt5() { local MOD="qt5" echo -e "\n** $MOD **\n" - cd $TMP/tmp-$PRGNAM/qt-everywhere-opensource-src-${INT_QT} + cd $TMP/tmp-$PRGNAM/qt-everywhere-src-${INT_QT} # If we build our own Qt5, unset the QT-related environment variables, # so that a pre-existing Qt5 will not be picked up and create errors later: @@ -562,41 +628,50 @@ make_qt5() { RELOCATIONS="" fi - # Fix path to mysql header - cat $PATCHDIR/qt5.mysql.h.diff | patch -p1 --verbose || exit 1 - - # Fix missing private includes: QTBUG-37417 - sed -e '/CMAKE_NO_PRIVATE_INCLUDES\ \=\ true/d' \ - -i qtbase/mkspecs/features/create_cmake.prf + if [ "$P1" != "--oldbuild" ]; then + # Fix path to mysql header + cat $PATCHDIR/qt5.mysql.h.diff | patch -p1 --verbose || exit 1 + + # Fix keyboard input in webengine: + cd qtbase + cat $PATCHDIR/qt5.qtbug-77364.patch | patch -p1 --verbose || exit 1 + cd - 1>/dev/null + + # Make qtwebengine compile against pulseaudio 13, + cd qtwebengine/src/3rdparty + cat $PATCHDIR/qt5.qtbug-77037.patch | patch -p1 --verbose || exit 1 + cd - 1>/dev/null + + if ! pkg-config --exists libpulse 2>/dev/null ; then + # Forcibly disable pulseaudio in qtwebengine: + cat $PATCHDIR/qt5.pulseaudio.diff | patch -p1 --verbose || exit 1 + # Disable pulseaudio in Qt5: + PACONF="-no-pulseaudio" + else + PACONF=" " + fi - # Support openssl 1.1.x: - if [ "$(openssl version |cut -d' ' -f2 |cut -d. -f1,2)" = "1.1" ]; then - ( cd qtbase - cat $SRCDIR/patches/qt5.openssl11.patch | patch -p1 --verbose || exit 1 - ) + # Use our custom compiler and linker flags: + sed -e "s|^\(QMAKE_CFLAGS_RELEASE.*\)|\1 ${SLKCFLAGS}|" \ + -i qtbase/mkspecs/common/gcc-base.conf || exit 1 + sed -e "s|^\(QMAKE_LFLAGS_RELEASE.*\)|\1 ${SLKLDFLAGS}|" \ + -i qtbase/mkspecs/common/g++-unix.conf || exit 1 fi if ! pkg-config --exists libpulse 2>/dev/null ; then - # Forcibly disable pulseaudio in qtwebengine: - cat $SRCDIR/patches/qt5.pulseaudio.diff | patch -p1 --verbose || exit 1 # Disable pulseaudio in Qt5: PACONF="-no-pulseaudio" else PACONF=" " fi - # Use our custom compiler and linker flags: - sed -i -e "s/-O2/$SLKCFLAGS/" qtbase/mkspecs/common/gcc-base.conf || exit 1 - sed -i -e "s/-O3/$SLKCFLAGS/" qtbase/mkspecs/common/gcc-base.conf || exit 1 - sed -i -e "/^QMAKE_LFLAGS\s/s,+=,+= $SLKLDFLAGS,g" qtbase/mkspecs/common/gcc-base.conf || exit 1 - export CFLAGS="$SLKCFLAGS" export CXXFLAGS="$SLKCFLAGS" export OPENSOURCE_CXXFLAGS="$SLKCFLAGS" - export QTDIR="${TMP}/qt-everywhere-opensource-src-${VERSION}" + export QTDIR="${TMP}/qt-everywhere-src-${INT_QT}" export LD_LIBRARY_PATH="${QTDIR}/qtbase/lib:${QTDIR}/qttools/lib" export QT_PLUGIN_PATH="${QTDIR}/qtbase/plugins" - ./configure \ + ./configure -v \ -confirm-license \ -opensource \ -prefix /usr/lib${LIBDIRSUFFIX}/calibre \ @@ -624,10 +699,11 @@ make_qt5() { -no-use-gold-linker \ -no-sql-odbc -no-sql-psql \ -no-qml-debug \ - -skip qtdeclarative -skip qtactiveqt -skip qtscript -skip qttools \ + -skip qtactiveqt -skip qtscript -skip qttools \ -skip qtxmlpatterns -skip qttranslations -skip qtdoc \ -skip qtgraphicaleffects -skip qtquickcontrols -skip qtquickcontrols2 \ -skip qt3d -skip qtcanvas3d \ + -webengine-proprietary-codecs \ ${PACONF} \ $RELOCATIONS \ -no-pch \ @@ -642,68 +718,15 @@ make_qt5() { # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} - cp -a GPL_EXCEPTION*.TXT LICENSE* README* \ + cp -a LICENSE* README* \ $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true } # End make_qt5 -# -# Build Qt5 WebKit: -# -make_qtwebkit() { - - local MOD="qtwebkit" - echo -e "\n** $MOD **\n" - - cd $TMP/tmp-$PRGNAM/qtwebkit-opensource-src-${INT_QTWEBKIT} - - # Prevent crashes when compiled with gcc7: - cat $SRCDIR/patches/qt5-webkit.gcc7.patch | patch -p1 --verbose || exit 1 - - # Avoid literally thousands of unneeded warning messages (thanks BLFS): - sed -e '/CONFIG/a QMAKE_CXXFLAGS += -Wno-expansion-to-defined' \ - -i Tools/qmake/mkspecs/features/unix/default_pre.prf - - # If we build our own Qt5, unset the QT-related environment variables, - # so that a pre-existing Qt5 will not be picked up and create errors later: - unset QTDIR - unset QT5DIR - NEWPATH="/usr/lib${LIBDIRSUFFIX}/calibre/bin" - for elem in $(echo $PATH | cut -d: --output-delimiter=' ' -f1-) ; do - if ! $(echo "$elem"| grep -q /qt) ; then - NEWPATH="$NEWPATH:$elem" - fi - done - export PATH="$NEWPATH" - - export CFLAGS="$SLKCFLAGS" - export CXXFLAGS="$SLKCFLAGS" - export OPENSOURCE_CXXFLAGS="$SLKCFLAGS" - export QTDIR="${TMP}/qt-everywhere-opensource-src-${VERSION}" - export LD_LIBRARY_PATH="${QTDIR}/qtbase/lib:${QTDIR}/qttools/lib" - export QT_PLUGIN_PATH="${QTDIR}/qtbase/plugins" - - mkdir build - cd build - qmake ../WebKit.pro \ - 2>&1 | tee $OUTPUT/qmake-${PRGNAM}_${MOD}.log - make \ - 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log - make install INSTALL_ROOT=$PKG \ - 2>&1 | tee $OUTPUT/install-${PRGNAM}_${MOD}.log - cd .. - - # Add documentation: - mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} - cp -a ChangeLog* VERSION \ - $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true - -} # End make_qtwebkit # # Build libmtp: # - make_mtp() { local MOD="libmtp" @@ -740,10 +763,10 @@ make_mtp() { } # End make_libmtp + # # Build ImageMagick: # - make_magick() { local MOD="ImageMagick" @@ -806,9 +829,11 @@ make_python() { cd $TMP/tmp-$PRGNAM/Python-${INT_PYTHON} - cat $PATCHDIR/python.readline.set_pre_input_hook.diff \ - | patch -p1 --verbose \ - 2>&1 | tee $OUTPUT/patch-${PRGNAM}_${MOD}.log + if [ "$P1" != "--oldbuild" ]; then + cat $PATCHDIR/python.readline.set_pre_input_hook.diff \ + | patch -p1 --verbose \ + 2>&1 | tee $OUTPUT/patch-${PRGNAM}_${MOD}.log + fi # We are going to install python inside the calibre package. # This requires some changes to the standard build: @@ -861,31 +886,12 @@ make_setuptools() { # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} - cp -a *.txt \ + cp -a *.rst \ $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true } # End make_setuptools -make_pip() { - - local MOD="pip" - echo -e "\n** $MOD **\n" - - cd $TMP/tmp-$PRGNAM/pip-${INT_PIP} - - # Compile and install - python2 setup.py install --root=$PKG \ - 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log - - # Add documentation: - mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} - cp -a *.txt \ - $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true - -} # End make_pip - - make_dnspython() { local MOD="dnspython" @@ -899,7 +905,7 @@ make_dnspython() { # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} - cp -a ChangeLog LICENSE \ + cp -a LICENSE README* \ $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true } # End make_dnspython @@ -925,7 +931,7 @@ make_cssparser() { # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} - cp -a COPYING* *.txt \ + cp -a README* \ $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true } # End make_cssparser @@ -956,25 +962,14 @@ make_dateutil() { # make_pillow() { - local MOD="imaging" + local MOD="pillow" echo -e "\n** $MOD **\n" - cd $TMP/tmp-$PRGNAM/Pillow-${INT_IMAGING} + cd $TMP/tmp-$PRGNAM/Pillow-${INT_PILLOW} # Installation path for headers: PYTHONINC=$( python2 -c 'from distutils.sysconfig import *;print (get_python_inc())' ) - # Fix the python path for Scripts/*.py : - for script in Scripts/*.py ; do - sed -i -e "s#/usr/local/bin/python#python#" $script - chmod 755 $script - done - - # ... and compensate for 64bit: - if [ "$ARCH" = "x86_64" ]; then - sed -i -e "s#\([^0-9a-zA-Z]\)\(lib\)\([\"';,/)]\)#\1\264\3#" setup.py - fi - # Compile and install CFLAGS="$SLKCFLAGS" \ python2 setup.py install --root $PKG \ @@ -982,7 +977,7 @@ make_pillow() { # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} - cp -a CHANGES* LICENSE README8 RELEASING* \ + cp -a CHANGES* LICENSE README* RELEASING* \ $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true } # End make_pillow @@ -1040,12 +1035,26 @@ make_sip() { cd $TMP/tmp-$PRGNAM/sip-${INT_SIP} - # Compile and install: - CFLAGS="$SLKCFLAGS" \ - CXXFLAGS="$SLKCFLAGS" \ - python2 configure.py 2>&1 | tee $OUTPUT/configure-${PRGNAM}_${MOD}.log + # Compile and install sip first: + python2 configure.py \ + CFLAGS="$SLKCFLAGS" \ + CXXFLAGS="$SLKCFLAGS" \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_${MOD}.log make $NUMJOBS || make 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log - make install DESTDIR=$PKG 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_${MOD}.log + make install DESTDIR=$PKG 2>&1 | tee $OUTPUT/install-${PRGNAM}_${MOD}.log + + echo -e "\n** $MOD - PyQt5 module **\n" + + # Add the PyQt5 private sip module: + make clean + python2 configure.py \ + --sip-module PyQt5.sip \ + --no-tools \ + CFLAGS="$SLKCFLAGS" \ + CXXFLAGS="$SLKCFLAGS" \ + 2>&1 | tee -a $OUTPUT/configure-${PRGNAM}_${MOD}.log + make $NUMJOBS || make 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_${MOD}.log + make install DESTDIR=$PKG 2>&1 | tee -a $OUTPUT/install-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} @@ -1108,6 +1117,7 @@ make_pygments() { } # End make_pygments + # # Build PyQt5: # @@ -1116,8 +1126,17 @@ make_pyqt5() { local MOD="pyqt5" echo -e "\n** $MOD **\n" + PYTHON2VER=$(python2 -V 2>&1 | cut -f 2 -d' ' | cut -f 1-2 -d. 2>/dev/null) + PYTHON2LIB=$( python2 -c 'from distutils.sysconfig import get_python_lib; print get_python_lib()' 2>/dev/null ) + cd $TMP/tmp-$PRGNAM/PyQt5_gpl-${INT_PYQT5} + if [ "$P1" != "--oldbuild" ]; then + # Remove code that is unneeded if Qt is not bundled and crashes on python2 + # https://www.riverbankcomputing.com/pipermail/pyqt/2019-July/041896.html + cat $SRCDIR/patches/pyqt5-python2-crash.patch |patch -p1 --verbose || exit 1 + fi + if [ "${BUILD_QT}" = "NO" ]; then export QTDIR=/usr/lib${LIBDIRSUFFIX}/qt5 else @@ -1128,14 +1147,21 @@ make_pyqt5() { export CFLAGS="$SLKCFLAGS" export CXXFLAGS="$SLKCFLAGS" - python2 configure.py --confirm-license --verbose --qmake=$QTDIR/bin/qmake \ + python2 configure.py \ + --confirm-license \ + --verbose \ + --qsci-api \ + --qmake=$QTDIR/bin/qmake \ 2>&1 | tee $OUTPUT/configure-${PRGNAM}_${MOD}.log + make $NUMJOBS || make \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log - # INSTALL_ROOT is needed to install libpyqt5.so properly: - make install DESTDIR=$PKG INSTALL_ROOT=$PKG \ + + make -j1 install DESTDIR=$PKG INSTALL_ROOT=$PKG \ 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_${MOD}.log + rm -rf $PKG/$PYTHON2LIB/PyQt5/uic/port_v3/ + if [ "${BUILD_QT}" = "NO" ]; then # Remove ugly bits that threaten to overwrite a system file: rm -rf $PKG/usr/lib${LIBDIRSUFFIX}/qt5 @@ -1143,11 +1169,54 @@ make_pyqt5() { # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} - cp -a LICENSE.* NEWS \ + cp -a LICENSE* NEWS \ $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true } # End make_pyqt5 + +# +# Build PyQtWebEngine: +# +make_pyqtwebengine() { + + local MOD="pyqtwebengine" + echo -e "\n** $MOD **\n" + + cd $TMP/tmp-$PRGNAM/PyQtWebEngine_gpl-${INT_PYQT5} + + if [ "${BUILD_QT}" = "NO" ]; then + export QTDIR=/usr/lib${LIBDIRSUFFIX}/qt5 + else + unset QT5DIR + export QTDIR=/usr/lib${LIBDIRSUFFIX}/calibre + fi + + export CFLAGS="$SLKCFLAGS" + export CXXFLAGS="$SLKCFLAGS" + + python2 configure.py \ + --qmake=$QTDIR/bin/qmake \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_${MOD}.log + make $NUMJOBS || make \ + 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log + make -j1 install DESTDIR=$PKG INSTALL_ROOT=$PKG \ + 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_${MOD}.log + install -Dm644 PyQtWebEngine.api -t $PKG/usr/share/qt5/qsci/api/python + + if [ "${BUILD_QT}" = "NO" ]; then + # Remove ugly bits that threaten to overwrite a system file: + rm -rf $PKG/usr/lib${LIBDIRSUFFIX}/qt5 + fi + + # Add documentation: + mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} + cp -a LICENSE* NEWS \ + $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true + +} # End make_pyqtwebengine + + # # Build pycrypto: # @@ -1188,7 +1257,7 @@ make_netifaces() { # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} - cp -a README \ + cp -a LICENSE README* \ $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true } # End make_netifaces @@ -1215,7 +1284,7 @@ make_apsw() { # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} - cp -a LICENSE README.rst \ + cp -a PKG-INFO \ $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true } # End make_apsw @@ -1270,6 +1339,39 @@ make_optipng() { # +# Build unrar source: +# +make_unrarsrc() { + + local MOD="make_unrarsrc" + echo -e "\n** $MOD **\n" + + cd $TMP/tmp-$PRGNAM/unrar + if [ "$P1" != "--oldbuild" ]; then + cp -a ../unrar ../libunrar + else + make clean + make clean -C ../libunrar + fi + make -C ../libunrar lib libversion=${INT_UNRARSRC} CXXFLAGS="$SLKCFLAGS" \ + 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log + make -f makefile unrar lib CXXFLAGS="$SLKCFLAGS" \ + 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_${MOD}.log + + # Manually install binaries: + install -D -m 755 unrar $PKG/usr/lib${LIBDIRSUFFIX}/calibre/bin/unrar + install -D -m 755 ../libunrar/libunrar.so $PKG/usr/lib${LIBDIRSUFFIX}/calibre/lib/libunrar.so + install -D -m 644 dll.hpp $PKG/usr/lib${LIBDIRSUFFIX}/calibre/include/unrar/dll.hpp + + # Add documentation: + mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} + cp -a acknow.txt license.txt readme.txt \ + $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true + +} # End make_unrarsrc + + +# # Build python-regex: # make_regex() { @@ -1300,7 +1402,7 @@ make_msgpack() { local MOD="msgpack" echo -e "\n** $MOD **\n" - cd $TMP/tmp-$PRGNAM/msgpack-python-${INT_MSGPACK} + cd $TMP/tmp-$PRGNAM/msgpack-${INT_MSGPACK} # Compile and install export CFLAGS="$SLKCFLAGS" @@ -1332,33 +1434,33 @@ make_six() { # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} - cp -a COPYING GPL* LICENSE* README* \ + cp -a CHANGES LICENSE* README* \ $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true } # End make_six # -# Build dukpy: +# Build enum34 (backported from Python3: # -make_dukpy() { +make_enum34() { - local MOD="dukpy" + local MOD="enum34" echo -e "\n** $MOD **\n" - cd $TMP/tmp-$PRGNAM/dukpy-${INT_DUKPY} + cd $TMP/tmp-$PRGNAM/enum34-${INT_ENUM34} # Compile and install export CFLAGS="$SLKCFLAGS" - python2 setup.py install --root=$PKG --optimize=1 --skip-build \ + python2 setup.py install --root=$PKG --optimize=1 \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} - cp -a LICENSE.txt \ + cp -a PKG-INFO enum/LICENSE enum/README \ $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true -} # End make_dukpy +} # End make_enum34 # @@ -1378,7 +1480,7 @@ make_webenc() { # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} - cp -a COPYING GPL* LICENSE* README* \ + cp -a README* \ $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true } # End make_webenc @@ -1401,7 +1503,7 @@ make_html5lib() { # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} - cp -a COPYING GPL* LICENSE* README* \ + cp -a LICENSE* README* *.rst requirements.txt \ $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true } # End make_html5lib @@ -1424,7 +1526,7 @@ make_html5parser() { # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} - cp -a COPYING GPL* LICENSE* README* \ + cp -a LICENSE* README* \ $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true } # End make_html5parser @@ -1441,13 +1543,13 @@ make_unrardll() { cd $TMP/tmp-$PRGNAM/unrardll-${INT_UNRARDLL} # Compile and install - export CFLAGS="$SLKCFLAGS" + export CFLAGS="$SLKCFLAGS -I/usr/lib${LIBDIRSUFFIX}/calibre/include" python2 setup.py install --root=$PKG --optimize=1 \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} - cp -a COPYING GPL* LICENSE* README* \ + cp -a LICENSE* README* \ $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true } # End make_unrardll @@ -1467,7 +1569,7 @@ make_feedparser() { # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} - cp -a COPYING GPL* LICENSE* README* \ + cp -a LICENSE* NEWS README* \ $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true } # End make_feedparser @@ -1487,7 +1589,7 @@ make_Markdown() { # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} - cp -a COPYING GPL* LICENSE* README* \ + cp -a *.md \ $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true } # End make_Markdown @@ -1521,13 +1623,13 @@ make_bflc() { ( local BRANCH_VERSION=$(echo $INT_PYTHON | cut -f 1,2 -d . ) cd $PKG/usr/lib${LIBDIRSUFFIX}/calibre/lib/python${BRANCH_VERSION}/site-packages - mkdir backports + mkdir -p backports cd backports cat << EOF > __init__.py from pkgutil import extend_path __path__ = extend_path(__path__, __name__) EOF - python2 -m compileall . + python2 -m compileall . || true ) cd $TMP/tmp-$PRGNAM/backports.functools_lru_cache-${INT_BFLC} @@ -1579,6 +1681,65 @@ make_html2text() { } # End make_html2text +make_chardet() { + + local MOD="chardet" + echo -e "\n** $MOD **\n" + + cd $TMP/tmp-$PRGNAM/chardet-${INT_CHARDET} + + # Compile and install: + python2 setup.py install --root=$PKG \ + 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log + + # Add documentation: + mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} + cp -a *.rst LICENSE \ + $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true + +} # End make_chardet + + +make_podofo() { + + local MOD="podofo" + echo -e "\n** $MOD **\n" + + cd $TMP/tmp-$PRGNAM/podofo-${INT_PODOFO} + + # Fix the mandir location (we delete usr/man later on): + sed -i -e 's#SET(MANDIR "share/man/")#SET(MANDIR "man/")#' CMakeLists.txt + + # Build fails otherwise: + mkdir -p test/TokenizerTest/objects + + mkdir -p build + cd build + cmake \ + -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \ + -DFREETYPE_INCLUDE_DIR=/usr/include/freetype2 \ + -DCMAKE_INSTALL_PREFIX=/usr/lib${LIBDIRSUFFIX}/calibre \ + -DPODOFO_BUILD_STATIC:BOOL=0 \ + -DPODOFO_BUILD_SHARED:BOOL=1 \ + -DPODOFO_USE_VISIBILITY:BOOL=1 \ + -DCMAKE_CXX_STANDARD:STRING=11 \ + -DWANT_BOOST:BOOL=0 \ + .. + make $NUMJOBS 2>&1 | tee $OUTPUT/make-${PRGNAM}.log + make DESTDIR=$PKG install 2>&1 | tee $OUTPUT/install-${PRGNAM}.log + cd - 1>/dev/null + + # Add documentation: + mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} + cp -a AUTHORS ChangeLog CODING* CONTRIBUTIONS* COPYING* \ + FAQ* INSTALL README* TODO \ + $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true + +} # End make_podofo + + + # -------------- # Build calibre: # -------------- @@ -1590,34 +1751,14 @@ make_calibre () { touch $OUTPUT/patch-$PRGNAM.log cd $TMP/tmp-$PRGNAM/${SRCNAM}-${VERSION} - # Calibre 0.8.6 has a version bug: - INTERNAL_VERSION=$(echo $VERSION | sed -e 's/\./, /g') - VERSION_CONSTANT=$(grep "^numeric_version" src/calibre/constants.py) - if [ "$VERSION_CONSTANT" != "numeric_version = ($INTERNAL_VERSION)" ]; then - echo "** Changing '$VERSION_CONSTANT' to:" - echo "** 'numeric_version = ($INTERNAL_VERSION)'" - sed -i -e "s/^numeric_version.*$/numeric_version = ($INTERNAL_VERSION)/" \ - src/calibre/constants.py - fi - - if [ "${BUILD_QT}" = "NO" ]; then - # Remove the unneeded 'qt_hack' which seems to be specific to MacOS/Windows - # (correct me if I am wrong). This extension refuses to compile on Slackware - # 13.37 as well as 14.0. - case "$SLACKVER" in - 13.*|14.0) - cat $PATCHDIR/calibre_noqthack.patch | patch -p1 --verbose \ - 2>&1 | tee -a $OUTPUT/patch-$PRGNAM.log - ;; - *) - ;; - esac - fi - # This dropping of privilege is unneccessary and breaks the SlackBuild: sed -i -e "s:if os.geteuid() == 0:if False and os.geteuid() == 0:" \ setup/install.py + # Calibre should not hard-code the hunspell library version: + OURLIB=$(pkg-config --libs hunspell |sed 's/-l//') + sed -i setup/extensions.json -e 's/"libraries": "hunspell-.*"/"libraries": "'$OURLIB'"/' + # See if we picked up any compiler or linker flags for python: LDFLAGS=${LDFLAGS:-""} CFLAGS=${CFLAGS:-""} @@ -1639,14 +1780,17 @@ make_calibre () { # Cut out the DOS crap: sed -i -e 's/\r//' src/calibre/web/feeds/recipes/* - # Prevent "qfontengine_ft.cpp undefined reference to `FT_Get_Char_Index'": - #sed -i -e 's/QMAKE_LIBS_PRIVATE += {glib} {fontconfig}/& {freetype}/' \ - # setup/extensions.py - cat $SRCDIR/patches/calibre_freetype.patch | patch -p1 --verbose \ - 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}.log + if [ "$P1" != "--oldbuild" ]; then + # Prevent "qfontengine_ft.cpp undefined reference to `FT_Get_Char_Index'": + #sed -i -e 's/QMAKE_LIBS_PRIVATE += {glib} {fontconfig}/& {freetype}/' \ + # setup/extensions.py + cat $SRCDIR/patches/calibre_freetype.patch | patch -p1 --verbose \ + 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}.log + fi + + export PODOFO_INC_DIR="/usr/lib${LIBDIRSUFFIX}/calibre/include/podofo" \ + export PODOFO_LIB_DIR="/usr/lib${LIBDIRSUFFIX}/calibre/lib" \ - OVERRIDE_LDFLAGS="$LDFLAGS $SLKLDFLAGS" \ - OVERRIDE_CFLAGS="$CFLAGS $SLKCFLAGS" \ LANG='en_US.UTF-8' python2 setup.py build \ 2>&1 | tee $OUTPUT/make-${PRGNAM}.log @@ -1667,6 +1811,8 @@ make_calibre () { 2>&1 | tee $OUTPUT/install-$PRGNAM.log # The bash completion files need to be in /etc : + OVERRIDE_LDFLAGS="$LDFLAGS $SLKLDFLAGS" \ + OVERRIDE_CFLAGS="$CFLAGS $SLKCFLAGS" \ [ -d $PKG/usr/etc ] && mv $PKG/usr/etc $PKG/ # Add man pages: @@ -1730,7 +1876,20 @@ make_calibre () { # End of the subroutines. # -# Compilation of the software: +if [ "$BUILD_PYTHONMODS" = "YES" ]; then + # Not part of Slackware and need it: + make_optipng + rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/calibre/ /usr/lib${LIBDIRSUFFIX}/calibre/ + + make_podofo + rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/calibre/ /usr/lib${LIBDIRSUFFIX}/calibre/ + + make_unrarsrc + rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/calibre/ /usr/lib${LIBDIRSUFFIX}/calibre/ + # End - not part of Slackware +fi + +# Compilation of the optional software: if [ "$BUILD_PYTHON" = "YES" -o "$BUILD_PYTHONMODS" = "YES" -o "$BUILD_QT" = "YES" -o "$BUILD_MTP" = "YES" -o "$BUILD_MAGICK" = "YES" ]; then if [ -f $SRCDIR/${PRGNAM}_pythondeps-${SLACKVER}-${ARCH}.tar.bz2 ]; then # We unwrap the tarball of compiled python internal libraries instead of @@ -1799,9 +1958,10 @@ if [ "$BUILD_QT" = "YES" ]; then # will wipe the origin and we will have to sync it all back: mkdir -p /usr/lib${LIBDIRSUFFIX}/calibre - make_qt5 + make_xkbcommon rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/calibre/ /usr/lib${LIBDIRSUFFIX}/calibre/ - make_qtwebkit + + make_qt5 rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/calibre/ /usr/lib${LIBDIRSUFFIX}/calibre/ fi fi @@ -1847,7 +2007,10 @@ if [ "$BUILD_PYTHONMODS" = "YES" ]; then make_setuptools rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/calibre/ /usr/lib${LIBDIRSUFFIX}/calibre/ - make_pip + make_unrardll + rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/calibre/ /usr/lib${LIBDIRSUFFIX}/calibre/ + + make_pillow rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/calibre/ /usr/lib${LIBDIRSUFFIX}/calibre/ make_apsw || exit 1 @@ -1871,9 +2034,6 @@ if [ "$BUILD_PYTHONMODS" = "YES" ]; then make_dateutil rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/calibre/ /usr/lib${LIBDIRSUFFIX}/calibre/ - make_pillow - rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/calibre/ /usr/lib${LIBDIRSUFFIX}/calibre/ - make_lxml rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/calibre/ /usr/lib${LIBDIRSUFFIX}/calibre/ @@ -1895,12 +2055,18 @@ if [ "$BUILD_PYTHONMODS" = "YES" ]; then make_pygments rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/calibre/ /usr/lib${LIBDIRSUFFIX}/calibre/ + make_enum34 + rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/calibre/ /usr/lib${LIBDIRSUFFIX}/calibre/ + make_sip rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/calibre/ /usr/lib${LIBDIRSUFFIX}/calibre/ make_pyqt5 rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/calibre/ /usr/lib${LIBDIRSUFFIX}/calibre/ + make_pyqtwebengine + rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/calibre/ /usr/lib${LIBDIRSUFFIX}/calibre/ + make_regex rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/calibre/ /usr/lib${LIBDIRSUFFIX}/calibre/ @@ -1910,9 +2076,6 @@ if [ "$BUILD_PYTHONMODS" = "YES" ]; then make_six rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/calibre/ /usr/lib${LIBDIRSUFFIX}/calibre/ - make_dukpy - rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/calibre/ /usr/lib${LIBDIRSUFFIX}/calibre/ - make_webenc rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/calibre/ /usr/lib${LIBDIRSUFFIX}/calibre/ @@ -1922,9 +2085,6 @@ if [ "$BUILD_PYTHONMODS" = "YES" ]; then make_html5parser rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/calibre/ /usr/lib${LIBDIRSUFFIX}/calibre/ - make_unrardll - rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/calibre/ /usr/lib${LIBDIRSUFFIX}/calibre/ - make_feedparser rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/calibre/ /usr/lib${LIBDIRSUFFIX}/calibre/ @@ -1934,6 +2094,9 @@ if [ "$BUILD_PYTHONMODS" = "YES" ]; then make_html2text rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/calibre/ /usr/lib${LIBDIRSUFFIX}/calibre/ + make_chardet + rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/calibre/ /usr/lib${LIBDIRSUFFIX}/calibre/ + fi fi @@ -1945,18 +2108,15 @@ if [ "$BUILD_PYTHON" = "YES" -o "$BUILD_PYTHONMODS" = "YES" -o "$BUILD_QT" = "YE # into the same directory as this SlackBuild script: if [ ! -f $SRCDIR/${PRGNAM}_pythondeps-${SLACKVER}-${ARCH}.tar.bz2 ]; then ( cd $PKG/usr/lib${LIBDIRSUFFIX}/calibre + echo "**" echo "** Creating dependencies tarball $OUTPUT/${PRGNAM}_pythondeps-${SLACKVER}-${ARCH}.tar.bz2" echo "** Move this file to $SRCDIR for future compilation speedups." + echo "**" tar -jcf $OUTPUT/${PRGNAM}_pythondeps-${SLACKVER}-${ARCH}.tar.bz2 . ) fi fi -# Not part of Slackware: -make_optipng -rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/calibre/ /usr/lib${LIBDIRSUFFIX}/calibre/ - - # We need to point calibre's compilation at our custom headers: export CFLAGS="-I/usr/lib${LIBDIRSUFFIX}/calibre/include" @@ -1982,7 +2142,7 @@ if [ "$BUILD_PYTHON" = "YES" ]; then for FILE in $PKG/usr/bin/* ; do if ! file $FILE | grep -q ELF ; then sed -i \ - -e "s,^#!/usr/bin/env .*$,#!/usr/lib${LIBDIRSUFFIX}/calibre/python," \ + -e "s,^#!/usr/bin/env .*$,#!/usr/lib${LIBDIRSUFFIX}/calibre/python2," \ $FILE fi done @@ -1992,8 +2152,8 @@ if [ "$BUILD_PYTHON" = "YES" ]; then # Compiling bytecode makes Calibre startup much faster: set +e - /usr/lib${LIBDIRSUFFIX}/calibre/python2 -m compileall -d '/' ${PKG}/usr/lib${LIBDIRSUFFIX}/calibre/ - /usr/lib${LIBDIRSUFFIX}/calibre/python2 -OO -m compileall -d '/' ${PKG}/usr/lib${LIBDIRSUFFIX}/calibre/ + /usr/lib${LIBDIRSUFFIX}/calibre/python2 -m compileall -d '/' ${PKG}/usr/lib${LIBDIRSUFFIX}/calibre/ || true + /usr/lib${LIBDIRSUFFIX}/calibre/python2 -OO -m compileall -d '/' ${PKG}/usr/lib${LIBDIRSUFFIX}/calibre/ || true set -e # Now we can remove these from the filesystem: @@ -2057,13 +2217,13 @@ cat $SRCDIR/slack-desc > $PKG/install/slack-desc cat $SRCDIR/slack-required > $PKG/install/slack-required if [ "$BUILD_PYTHONMODS" = "YES" ]; then cat $PKG/install/slack-required \ - | grep -Ev "PyQt5|sip|dnspython|pycrypto|pysetuptools|python-apsw|dbus-python|python-beautifulsoup|python-css-parser|python-dateutil|python-dukpy|pyhton-html2text|python-html5-parser|python-html5lib|python-lxml|python-mechanize|python-msgpack|python-netifaces|python-psutil|python-pygments|python-regex|python-six|python-soupsieve|python-unrardll|python-webencodings" \ + | grep -Ev "PyQt5|PyQtWebEngine|dbus-python|dnspython|pycrypto|pysetuptools|python-apsw|python-beautifulsoup4|python-bflc|python-chardet|python-css-parser|python-dateutil|python-enum34|python-feedparser|pyhton-html2text|python-html5-parser|python-html5lib|python-lxml|python-markdown|python-mechanize|python-msgpack|python-netifaces|python-pillow|python-psutil|python-pygments|python-regex|python-six|python-soupsieve|python-unrardll|python-webencodings|sip|sqlite-amalgamation" \ > $PKG/install/slack-required.temp mv $PKG/install/slack-required.temp $PKG/install/slack-required fi if [ "$BUILD_QT" = "YES" ]; then cat $PKG/install/slack-required \ - | grep -Ev "libxkbcommon|libinput|libwacom|qt5|qt5-webkit" \ + | grep -Ev "libxkbcommon|libinput|libwacom|qt5" \ > $PKG/install/slack-required.temp mv $PKG/install/slack-required.temp $PKG/install/slack-required fi |