From 2667258015a53c57b5b9303336aa4bfdfc5e73b5 Mon Sep 17 00:00:00 2001 From: Eric Hameleers Date: Sun, 26 Aug 2018 15:42:28 +0000 Subject: calibre: updated to 3.30.0 Add qt5 internal libraries to the package on -current because calibre does not seem to like the system Qt5 5.11 --- calibre/build/calibre.SlackBuild | 239 ++++++++++++++++++++++++++------------- 1 file changed, 158 insertions(+), 81 deletions(-) (limited to 'calibre/build') diff --git a/calibre/build/calibre.SlackBuild b/calibre/build/calibre.SlackBuild index 382302bb..9c0e22ee 100755 --- a/calibre/build/calibre.SlackBuild +++ b/calibre/build/calibre.SlackBuild @@ -91,14 +91,16 @@ # * Update. # 3.13.0-1: 08/dec/2017 by Eric Hameleers # * Update. -# 3.18.0-1: 07/mar/2017 by Eric Hameleers +# 3.18.0-1: 07/mar/2018 by Eric Hameleers # * Update. -# 3.20.0-1: 02/apr/2017 by Eric Hameleers +# 3.20.0-1: 02/apr/2018 by Eric Hameleers # * Update. -# 3.23.0-1: 06/may/2017 by Eric Hameleers +# 3.23.0-1: 06/may/2018 by Eric Hameleers # * Update. -# 3.23.0-2: 23/may/2017 by Eric Hameleers +# 3.23.0-2: 23/may/2018 by Eric Hameleers # * Rebuilt for new poppler in -current. +# 3.30.0-1: 24/aug/2018 by Eric Hameleers +# * Update. # # Run 'sh calibre.SlackBuild' to build a Slackware package. # The package (.txz) and .txt file as well as build logs are created in /tmp . @@ -108,8 +110,8 @@ PRGNAM=calibre SRCNAM=calibre -VERSION=${VERSION:-3.23.0} -BUILD=${BUILD:-2} +VERSION=${VERSION:-3.30.0} +BUILD=${BUILD:-1} NUMJOBS=${NUMJOBS:-" -j$(nproc) "} TAG=${TAG:-alien} @@ -121,7 +123,8 @@ SLACKVER=${SLACKVER:-$(cat /etc/slackware-version |cut -d' ' -f2)} REQUIRED_QT="5.6.2" # Only used in case we need to build our own Qt: -INT_QT=5.7.1 +INT_QT=5.9.6 +INT_QTWEBKIT=5.9.1 REQUIRED_MTP="1.1.11" @@ -160,13 +163,13 @@ INT_OPTIPNG=0.7.5 INT_PSUTIL=4.3.0 INT_PYCRYPTO=2.6.1 INT_PYGMENTS=2.1.3 -INT_PYQT5=5.8.2 -INT_REGEX=2017.07.11 -INT_SIP=4.19.2 +INT_PYQT5=5.9.2 +INT_REGEX=2018.07.11 +INT_SIP=4.19.8 INT_SIX=1.10.0 INT_UNRARDLL=0.1.3 INT_WEBENC=0.5.1 -INT_APSW=3.13.0-r1 +INT_APSW=3.23.1-r1 # Where do we look for sources? SRCDIR=$(cd $(dirname $0); pwd) @@ -256,7 +259,7 @@ if [ "$BUILD_PYTHONMODS" = "YES" ]; then SOURCE[8]="$SRCDIR/mechanize-${INT_MECHANIZE}.tar.gz" SRCURL[8]="https://github.com/python-mechanize/mechanize/archive/v${INT_MECHANIZE}.tar.gz" - SOURCE[9]="$SRCDIR/PyQt5-gpl-${INT_PYQT5}.tar.gz" + SOURCE[9]="$SRCDIR/PyQt5_gpl-${INT_PYQT5}.tar.gz" SRCURL[9]="http://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-${INT_PYQT5}/PyQt5_gpl-${INT_PYQT5}.tar.gz" SOURCE[10]="$SRCDIR/sip-${INT_SIP}.tar.gz" @@ -328,8 +331,13 @@ fi if [ "$BUILD_QT" = "YES" ]; then echo ">> Compiling Qt <<" - SOURCE[$NEXT_ARRAYEL]="$SRCDIR/qt-everywhere-opensource-src-${INT_QT}.tar.gz" - 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.gz" + SOURCE[$NEXT_ARRAYEL]="$SRCDIR/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" + + NEXT_ARRAYEL=$(( ${NEXT_ARRAYEL} + 1 )) + + SOURCE[$NEXT_ARRAYEL]="$SRCDIR/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" NEXT_ARRAYEL=$(( ${NEXT_ARRAYEL} + 1 )) fi @@ -452,13 +460,14 @@ fi cd $TMP/tmp-$PRGNAM echo "Extracting the source archive(s) for $PRGNAM..." -tar -xvf ${SOURCE[0]} +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 ${SOURCE[$i]} + unzip -q ${SOURCE[$i]} else - tar -xvf ${SOURCE[$i]} + tar -xf ${SOURCE[$i]} fi done fi @@ -494,12 +503,6 @@ make_qt5() { done export PATH="$NEWPATH" - # Fix dangling symlinks, thanks Larry Hajali: - rm -f qtwebengine/src/3rdparty/chromium/third_party/mesa/src/src/gallium/state_trackers/d3d1x/w32api - rm -f qtwebengine/src/3rdparty/chromium/third_party/webrtc/tools/e2e_quality/audio/perf - ln -s ../../../../../tools/perf \ - qtwebengine/src/3rdparty/chromium/third_party/webrtc/tools/e2e_quality/audio/ - # Use -reduce-relocations only on i?86 and x86_64 architextures. # https://bugreports.qt-project.org/browse/QTBUG-36129 if echo $ARCH | grep -q '\(i.86\|x86_64\)' 2>/dev/null; then @@ -511,28 +514,41 @@ make_qt5() { # Fix path to mysql header cat $PATCHDIR/qt5.mysql.h.diff | patch -p1 --verbose || exit 1 - # Forcibly disable pulseaudio in qtwebengine: - cat $PATCHDIR/qt5.pulseaudio.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 - # Install path fix for libplatformplugin.so: - # See https://bugs.webkit.org/show_bug.cgi?id=117077 - cat $PATCHDIR/platformplugin-install-path-fix.patch | patch -p1 --verbose || exit 1 + # 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 + ) + fi - sed -i -e "s/-O2/$SLKCFLAGS/" qtbase/mkspecs/common/g++-base.conf || exit 1 + 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 LD_LIBRARY_PATH="${QTDIR}/qtbase/lib:${QTDIR}/qttools/lib:${LD_LIBRARY_PATH}" + export LD_LIBRARY_PATH="${QTDIR}/qtbase/lib:${QTDIR}/qttools/lib" export QT_PLUGIN_PATH="${QTDIR}/qtbase/plugins" ./configure \ -confirm-license \ -opensource \ -prefix /usr/lib${LIBDIRSUFFIX}/calibre \ - -fast \ -system-libpng \ -system-libjpeg \ -system-zlib \ @@ -547,15 +563,21 @@ make_qt5() { -optimized-qmake \ -qpa xcb \ -qt-harfbuzz \ + -qt-pcre \ + -qt-xcb \ -verbose \ - -xcb \ -nomake examples \ - -nomake demos \ - -nomake tests \ -no-pulseaudio \ -no-separate-debug-info \ -no-strip \ -no-use-gold-linker \ + -no-sql-odbc -no-sql-psql \ + -no-qml-debug \ + -skip qtdeclarative -skip qtactiveqt -skip qtscript -skip qttools \ + -skip qtxmlpatterns -skip qttranslations -skip qtdoc \ + -skip qtgraphicaleffects -skip qtquickcontrols -skip qtquickcontrols2 \ + -skip qt3d -skip qtcanvas3d \ + ${PACONF} \ $RELOCATIONS \ -no-pch @@ -564,24 +586,6 @@ make_qt5() { make $NUMJOBS || make || exit 1 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log make install INSTALL_ROOT=$PKG 2>&1 | tee $OUTPUT/install-${PRGNAM}_${MOD}.log - # install private headers (calibre wants them), - # using `rsync -R` as easy way to preserve relative path names: - rsync -aR \ - include/Qt5{Core,Declarative,Gui,Script}/private \ - src/{corelib,declarative,gui,script}/*/*_p.h \ - ${PKG}/usr/lib${LIBDIRSUFFIX}/calibre/ - - # Fix internal linking for Qt5WebKit.pc , thanks to Larry Hajali's SBo script: - sed -i \ - -e "s|-Wl,-whole-archive -lWebKit1 -Wl,-no-whole-archive -L${PWD}/qtwebkit/Source/WebKit[^ ]* ||" \ - -e "s|-Wl,-whole-archive -lWebKit2 -Wl,-no-whole-archive -L${PWD}/qtwebkit/Source/WebKit2[^ ]* ||" \ - -e "s|-Wl,-whole-archive -lWebCore -Wl,-no-whole-archive -L${PWD}/qtwebkit/Source/WebCore[^ ]* ||" \ - -e "s|-Wl,-whole-archive -lANGLE -Wl,-no-whole-archive -L${PWD}/qtwebkit/Source/ThirdParty/ANGLE[^ ]* ||" \ - -e "s|-Wl,-whole-archive -lJavaScriptCore -Wl,-no-whole-archive -L${PWD}/qtwebkit/Source/JavaScriptCore[^ ]* ||" \ - -e "s|-Wl,-whole-archive -lWTF -Wl,-no-whole-archive -L${PWD}/qtwebkit/Source/WTF[^ ]* ||" \ - -e "s|-Wl,-whole-archive -lleveldb -Wl,-no-whole-archive -L${PWD}/qtwebkit/Source/ThirdParty/leveldb[^ ]* ||" \ - $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig/Qt5WebKit.pc - # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} cp -a GPL_EXCEPTION*.TXT LICENSE* README* \ @@ -589,6 +593,56 @@ make_qt5() { } # 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 + make || exit 1 + make install INSTALL_ROOT=$PKG || exit 1 + 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: # @@ -620,11 +674,11 @@ make_mtp() { ) # No need for this in the calibre package: - rm -rf $PKG/lib + rm -rf $PKG/lib $PKG/usr/lib/udev # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} - cp -a COPYING GPL* LICENSE* README* \ + cp -a COPYING* README* \ $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true } # End make_libmtp @@ -771,7 +825,7 @@ make_dnspython() { # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} - cp -a ChangeLog LICENSE README TODO \ + cp -a ChangeLog LICENSE \ $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true } # End make_dnspython @@ -818,7 +872,7 @@ make_dateutil() { # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} - cp -a LICENSE NEWS README \ + cp -a LICENSE NEWS \ $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true } # End make_dateutil @@ -854,7 +908,7 @@ make_pillow() { # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} - cp -a README CHANGES \ + cp -a CHANGES* LICENSE README8 RELEASING* \ $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true } # End make_pillow @@ -921,7 +975,7 @@ make_sip() { # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} - cp -a LICENSE COPYING* NEWS README TODO \ + cp -a LICENSE* NEWS README \ $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true } # End make_sip @@ -975,7 +1029,7 @@ make_pygments() { # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} - cp -a AUTHORS COPYING* INSTALL NEWS README* \ + cp -a AUTHORS CHANGES LICENSE README* TODO \ $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true } # End make_pygments @@ -1015,7 +1069,7 @@ make_pyqt5() { # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} - cp -a GPL_EXCEPTION*.TXT LICENSE.* NEWS OPENSOURCE-NOTICE.TXT README THANKS \ + cp -a LICENSE.* NEWS \ $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true } # End make_pyqt5 @@ -1083,7 +1137,7 @@ make_apsw() { # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} - cp -a PKG-INFO doc/copyright.html \ + cp -a LICENSE README.rst \ $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true } # End make_apsw @@ -1106,7 +1160,7 @@ make_psutil() { # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} - cp -a CREDITS HISTORY INSTALL LICENSE PKG-INFO README \ + cp -a CREDITS HISTORY* INSTALL* LICENSE README* \ $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true } # End make_psutil @@ -1177,7 +1231,7 @@ make_msgpack() { # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} - cp -a COPYING GPL* LICENSE* README* \ + cp -a COPYING* README* \ $PKG/usr/lib${LIBDIRSUFFIX}/calibre/doc/internaldeps/${MOD} || true } # End make_msgpack @@ -1387,9 +1441,6 @@ make_calibre () { cat $SRCDIR/patches/calibre_freetype.patch | patch -p1 --verbose \ 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}.log - # We carry a private version of optipng: - sed -i -e "s/optipng/&-calibre/g" $(grep -rl optipng {icons,src,setup/installer/linux}) - OVERRIDE_LDFLAGS="$LDFLAGS $SLKLDFLAGS" \ OVERRIDE_CFLAGS="$CFLAGS $SLKCFLAGS" \ LANG='en_US.UTF-8' python2 setup.py build \ @@ -1399,38 +1450,56 @@ make_calibre () { mkdir -p $PKG/usr/share/{applications,icons/hicolor,mime/packages} mkdir -p $PKG/usr/share/{desktop-directories,packages} - LANG='en_US.UTF-8' python2 setup.py build \ - 2>&1 | tee $OUTPUT/make-$PRGNAM.log - LANG='en_US.UTF-8' python2 setup.py gui \ - 2>&1 | tee $OUTPUT/make-gui-$PRGNAM.log - + # Install the lot: XDG_DATA_DIRS="$PKG/usr/share" \ XDG_UTILS_INSTALL_MODE="system" \ - LIBPATH="/usr/lib${LIBDIRSUFFIX}" \ - LANG='en_US.UTF-8' python2 setup.py install \ + LIBPATH=/usr/lib${LIBDIRSUFFIX} \ + LANG='en_US.UTF-8' \ + python2 setup.py install \ --prefix=/usr \ --libdir=/usr/lib${LIBDIRSUFFIX} \ --staging-root=$PKG/usr \ - --staging-libdir=$PKG/usr/lib${LIBDIRSUFFIX} + --staging-libdir=$PKG/usr/lib${LIBDIRSUFFIX} \ 2>&1 | tee $OUTPUT/install-$PRGNAM.log # The bash completion files need to be in /etc : [ -d $PKG/usr/etc ] && mv $PKG/usr/etc $PKG/ + # Add man pages: + mkdir -p ${PKG}/usr/man + cp -a man-pages/* ${PKG}/usr/man/ + # This does not belong in a package - use 'removepkg' instead: rm -f $PKG/usr/bin/calibre-uninstall - # I'd rather not ship 1.6MB of redundant fonts: - ( cd $PKG/usr/share/calibre/fonts/liberation/ - for FONT in *.ttf ; do - rm $FONT - ln -sf /usr/share/fonts/TTF/$FONT - done - ) + # Create symlinks to system Libration fonts: + if [ -d $PKG/usr/share/calibre/fonts/liberation ]; then + echo "** Replacing Liberation fonts with symlinks..." + ( cd $PKG/usr/share/calibre/fonts/liberation/ + for FONT in *.ttf *.otf ; do + if [ -f /usr/share/fonts/TTF/$FONT ]; then + rm -f $FONT + ln -sf /usr/share/fonts/TTF/$FONT + fi + done + ) + else + echo "** Adding Liberation fonts as symlinks..." + mkdir -p $PKG/usr/share/calibre/fonts/liberation + ( cd $PKG/usr/share/calibre/fonts/liberation + for FONT in /usr/share/fonts/TTF/Liberation*.ttf ; do + ln -sf $FONT + done + ) + fi # All these files will be generated by update-mime-database: find $PKG/usr/share/mime -maxdepth 1 -type f | xargs rm -f + # But this one needs to be added here: + install -Dm644 resources/calibre-mimetypes.xml \ + ${PKG}/usr/share/mime/packages/calibre-mimetypes.xml + # These files are generated by update-desktop-database while installing: rm -f $PKG/usr/share/applications/defaults.list rm -f $PKG/usr/share/applications/mimeinfo.cache @@ -1528,6 +1597,8 @@ if [ "$BUILD_QT" = "YES" ]; then make_qt5 rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/calibre/ /usr/lib${LIBDIRSUFFIX}/calibre/ + make_qtwebkit + rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/calibre/ /usr/lib${LIBDIRSUFFIX}/calibre/ fi fi @@ -1736,6 +1807,12 @@ cat $SRCDIR/$(basename $0) > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild chown -R root:root $PKG/usr/doc/$PRGNAM-$VERSION find $PKG/usr/doc -type f -exec chmod 644 {} \; +# Compress the man page(s): +if [ -d $PKG/usr/man ]; then + find $PKG/usr/man -type f -name "*.?" -exec gzip -9f {} \; + for i in $(find $PKG/usr/man -type l -name "*.?") ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done +fi + if [ "$BUILD_QT" = "YES" ]; then # If we built our own Qt then this can be removed from the package: rm -rf $PKG/usr/lib${LIBDIRSUFFIX}/calibre/{demos,doc,examples,tests} -- cgit v1.2.3-65-gdbad