#!/bin/bash # $Id: calibre.SlackBuild,v 1.245 2023/04/27 19:17:31 root Exp root $ # Copyright 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Eric Hameleers, Eindhoven, NL # All rights reserved. # # Permission to use, copy, modify, and distribute this software for # any purpose with or without fee is hereby granted, provided that # the above copyright notice and this permission notice appear in all # copies. # # THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 AUTHORS AND COPYRIGHT HOLDERS AND THEIR # CONTRIBUTORS 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. # ----------------------------------------------------------------------------- # # Slackware SlackBuild script # =========================== # By: Eric Hameleers # For: calibre # Descr: e-book library management application # URL: http://calibre-ebook.com/ # Build needs: # Needs: # Changelog: # 0.7.20-1: 25/Sep/2010 by Eric Hameleers # * Initial build. # 1.0.0-1: 23/aug/2013 by Eric Hameleers # * Finally, 1.0.0 ! With python-apsw as a new dependency. # 1.49.0-1: 15/aug/2014 by Eric Hameleers # * Last version in the 1.x series. # 2.28.0-1: 25/may/2015 by Eric Hameleers # * First build of the Qt5 based 2.x series. # 2.30.0-1: 05/jun/2015 by Eric Hameleers # * Update. # 2.31.0-1: 15/jul/2015 by Eric Hameleers # * Update. # 2.32.1-1: 20/jul/2015 by Eric Hameleers # * Update. # 2.33.0-1: 05/aug/2015 by Eric Hameleers # * Update. # 2.35.0-1: 14/aug/2015 by Eric Hameleers # * Update. # 2.37.0-1: 04/sep/2015 by Eric Hameleers # * Update. Removed BeautifulSoup as dependency. Minimal required # version of Python becomes 2.7.9. # 2.37.1-1: 07/sep/2015 by Eric Hameleers # * Emergency bugfix release. # 2.39.0-1: 25/sep/2015 by Eric Hameleers # * Update. # 2.44.1-1: 22/nov/2015 by Eric Hameleers # * Update. # 2.45.0-1: 02/dec/2015 by Eric Hameleers # * Update. # 2.50.1-1: 01/feb/2016 by Eric Hameleers # * Update. # 2.52.0-1: 05/mar/2016 by Eric Hameleers # * Update. # 2.56.0-1: 12/may/2016 by Eric Hameleers # * Update. # 2.61.0-1: 03/jul/2016 by Eric Hameleers # * Update. # 2.71.0-1: 07/nov/2016 by Eric Hameleers # * Update. # 2.75.1-1: 27/dec/2016 by Eric Hameleers # * Update. # 2.79.1-1: 13/feb/2017 by Eric Hameleers # * Update. # 3.1.1-1: 19/jun/2017 by Eric Hameleers # * New major release 3.x. # 3.4.0-1: 16/jul/2017 by Eric Hameleers # * Update. # 3.6.0-1: 06/aug/2017 by Eric Hameleers # * Update. # 3.7.0-1: 12/sep/2017 by Eric Hameleers # * Update. # 3.9.0-1: 13/oct/2017 by Eric Hameleers # * Update. # 3.12.0-1: 20/nov/2017 by Eric Hameleers # * Update. # 3.13.0-1: 08/dec/2017 by Eric Hameleers # * Update. # 3.18.0-1: 07/mar/2018 by Eric Hameleers # * Update. # 3.20.0-1: 02/apr/2018 by Eric Hameleers # * Update. # 3.23.0-1: 06/may/2018 by Eric Hameleers # * Update. # 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. Note that Calibre won't compile against Qt 5.11.x # so for slackware-current internal Qt 5.9 libraries are added. # 3.32.0-1: 30/sep/2018 by Eric Hameleers # * Update. # 3.33.1-1: 21/oct/2018 by Eric Hameleers # * Update due to icu4c update in -current. # 3.38.0-1: 18/jan/2019 by Eric Hameleers # * Update. # 3.38.1-1: 19/jan/2019 by Eric Hameleers # * Update. # 3.40.1-1: 09/mar/2019 by Eric Hameleers # * Update. # 3.46.0-1: 27/jul/2019 by Eric Hameleers # * Update. # 3.47.1-1: 08/sep/2019 by Eric Hameleers # * Update. # 4.2.0-1: 19/oct/2019 by Eric Hameleers # * New major release 4.x. No more qt-webkit. # 4.7.0-1: 30/dec/2019 by Eric Hameleers # * Update. # 4.11.2-1: 05/mar/2020 by Eric Hameleers # * Update. # 4.12.0-1: 06/mar/2020 by Eric Hameleers # * Update. # 4.15.0-1: 07/may/2020 by Eric Hameleers # * Update. # 5.38.0-1: 07/mar/2022 by Eric Hameleers # * Update. # The embedded Python interpreter and modules will now always # be built. Qt5 libraries are expected to be supplied by # the OS, meaning Slackware older than 15.0 is not supported. # Python3 is now powering Calibre. # 5.39.0-1: 18/mar/2022 by Eric Hameleers # * Update. # 5.43.0-1: 30/may/2022 by Eric Hameleers # * Update. # 5.44.0-1: 12/oct/2022 by Eric Hameleers # * Update. Final 5.x release, Calibre 6.x is built on top of Qt6. # 6.7.1-1: 18/oct/2022 by Eric Hameleers # * Calibre6 is built on Qt6. # 6.11.0-1: 24/feb/2023 by Eric Hameleers # * Update. # Note that sources for 6.12.0 and up no longer ship some # required files. SlackBuild needs to be re-worked to cope. # 6.14.1-1: 02/apr/2023 by Eric Hameleers # * Update. # 6.15.1-1: 08/apr/2023 by Eric Hameleers # * Update. # 6.16.0-1: 21/apr/2023 by Eric Hameleers # * Update. # 6.17.0-1: 27/apr/2023 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 . # Install it using 'installpkg'. # # ----------------------------------------------------------------------------- PRGNAM=calibre SRCNAM=calibre VERSION=${VERSION:-6.17.0} BUILD=${BUILD:-1} NUMJOBS=${NUMJOBS:-" -j$(nproc) "} TAG=${TAG:-alien} DOCS="LICENSE* Changelog* COPYRIGHT README*" SYSPYTHON=$(python3 -c 'import sys; print (sys.version.split( )[0])') SLACKVER=${SLACKVER:-$(cat /etc/slackware-version |cut -d' ' -f2)} REQUIRED_QT="6.4.2" # Only used in case we need to build our own Qt: INT_QT=6.4.3 REQUIRED_MTP="1.1.20" # Only used in case we need to build our own libmtp: INT_MTP=1.1.20 # Only used when we build our own ImageMagick: INT_MAGICK=6.9.10_68 REQUIRED_PYTHON="3.10" REQUIRED_PYTHON_MIN="1" # Only used in case we need to build our own python: INT_PYTHON=3.10.11 # Only used in case we need to build our own python modules: INT_SETUPTOOLS=57.4.0 # The rest of the internal Python deps: INT_APSW=3.37.0-r1 INT_BEAUTIFULSOUP=4.11.1 INT_CHARDET=4.0.0 INT_CSSPARSER=1.0.8 INT_DATEUTIL=2.8.2 INT_DNSPYTHON=2.1.0 INT_FEEDPARSER=6.0.8 INT_FONTTOOLS=4.39.3 INT_HTML2TEXT=2020.1.16 INT_HTML5LIB=1.1 INT_HTML5PARSER=0.4.10 INT_HYPHEN=2.8.8 INT_IFADDR=0.1.7 INT_JEEPNEY=0.7.1 INT_LXML=4.9.1 INT_MARKDOWN=3.3.6 INT_MECHANIZE=0.4.7 INT_MSGPACK=1.0.3 INT_MULTIVOLUMEFILE=0.2.3 INT_NETIFACES=0.11.0 INT_PACKAGING=21.3 INT_PILLOW=8.4.0 INT_PIP=20.0.2 INT_PLY=3.11 INT_PSUTIL=5.8.0 INT_PY7ZR=0.16.3 INT_PYBROTLI=1.0.9 INT_PYCHM=0.8.6 INT_PYCRYPTODOME=3.11.0 INT_PYGMENTS=2.10.0 INT_PYPARSING=3.0.6 INT_PYPPMD=0.17.3 INT_PYQT6=6.4.2 INT_PYQT6SIP=13.4.0 INT_PYQTBUILDER=1.14.1 INT_PYQTWEBENG=6.4.0 INT_PYZSTD=0.15.6 INT_REGEX=2021.11.10 INT_SGMLLIB3K=1.0.0 INT_SIP=6.7.7 INT_SIX=1.16.0 INT_SOUPSIEVE=2.3.1 INT_SPEECHD=0.11.4 INT_STEMMER=2.2.0 INT_SQLITE=3410200 INT_TEXTTABLE=1.6.4 INT_TOML=0.10.2 INT_UCHARDET=0.0.7 INT_UNRARDLL=0.1.7 INT_WEBENC=0.5.1 INT_ZEROCONF=0.37.0 # Software that's an internal dependency to the package: INT_HUNSPELL=1.7.2 INT_HYPHENATION=master # VERSION is in ./setup/hyphenation.py INT_MATHJAX=3.1.4 # VERSION is in ./setup/mathjax.py INT_OPTIPNG=0.7.7 INT_PODOFO=0.9.7 INT_POPPLER=21.11.0 INT_UNRARSRC=6.2.6 # Where do we look for sources? SRCDIR=$(cd $(dirname $0); pwd) PATCHDIR=${SRCDIR}/patches # Place to build (TMP) package (PKG) and output (OUTPUT) the program: TMP=${TMP:-/tmp/build} PKG=$TMP/package-$PRGNAM OUTPUT=${OUTPUT:-/tmp} SOURCE[0]="$SRCDIR/sources/${SRCNAM}-${VERSION}.tar.xz" SRCURL[0]="https://download.calibre-ebook.com/${VERSION}/${SRCNAM}-${VERSION}.tar.xz" # We build our own python 3.x plus supporting modules: BUILD_PYTHON="YES" # Allow the package builder to override BUILD_MAGICK: # By default we do not compile an internal version but enabling this # allows us to be independant of Slackware's ImageMagick upgrades. BUILD_MAGICK=${BUILD_MAGICK:-NO} # Sometimes we need to generate a new user-agent-strings file: BUILD_NEWUAS=${BUILD_NEWUAS:-NO} # Allow the package builder to override BUILD_QT: if [ -z "$BUILD_QT" ]; then if pkg-config --exists "Qt6Core >= $REQUIRED_QT" && pkg-config --exists "Qt6Core <= $INT_QT" ; then BUILD_QT="NO" else # We need to build our own qt: BUILD_QT="YES" fi fi # Allow the package builder to override BUILD_MTP: if [ -z "$BUILD_MTP" ]; then if pkg-config --exists "libmtp >= $REQUIRED_MTP" ; then BUILD_MTP="NO" else # We need to build our own libmtp: BUILD_MTP="YES" fi fi # Determine what sources we need to download: echo ">> Compiling python modules <<" SOURCE[1]="$SRCDIR/sources/setuptools-${INT_SETUPTOOLS}.tar.gz" SRCURL[1]="https://pypi.python.org/packages/source/s/setuptools/setuptools-${INT_SETUPTOOLS}.tar.gz" SOURCE[2]="$SRCDIR/sources/Pygments-${INT_PYGMENTS}.tar.gz" SRCURL[2]="https://pypi.python.org/packages/source/P/Pygments/Pygments-${INT_PYGMENTS}.tar.gz" SOURCE[3]="$SRCDIR/sources/dnspython-${INT_DNSPYTHON}.zip" SRCURL[3]="https://pypi.python.org/packages/source/d/dnspython/dnspython-${INT_DNSPYTHON}.zip" SOURCE[4]="$SRCDIR/sources/css-parser-${INT_CSSPARSER}.tar.gz" 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://pypi.python.org/packages/source/p/python-dateutil/python-dateutil-${INT_DATEUTIL}.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}.tar.gz" SRCURL[7]="https://pypi.io/packages/source/l/lxml/lxml-${INT_LXML}.tar.gz" SOURCE[8]="$SRCDIR/sources/mechanize-${INT_MECHANIZE}.tar.gz" SRCURL[8]="https://github.com/python-mechanize/mechanize/archive/v${INT_MECHANIZE}.tar.gz" SOURCE[9]="$SRCDIR/sources/texttable-${INT_TEXTTABLE}.tar.gz" SRCURL[9]="https://pypi.io/packages/source/t/texttable/texttable-${INT_TEXTTABLE}.tar.gz" SOURCE[10]="$SRCDIR/sources/ifaddr-${INT_IFADDR}.tar.gz" SRCURL[10]="https://pypi.io/packages/source/i/ifaddr/ifaddr-${INT_IFADDR}.tar.gz" SOURCE[11]="$SRCDIR/sources/zeroconf-${INT_ZEROCONF}.tar.gz" SRCURL[11]="https://pypi.io/packages/source/z/zeroconf/zeroconf-${INT_ZEROCONF}.tar.gz" SOURCE[12]="$SRCDIR/sources/pycryptodome-${INT_PYCRYPTODOME}.tar.gz" SRCURL[12]="https://github.com/Legrandin/pycryptodome/archive/v${INT_PYCRYPTODOME}.tar.gz" SOURCE[13]="$SRCDIR/sources/netifaces-${INT_NETIFACES}.tar.gz" SRCURL[13]="https://pypi.io/packages/source/n/netifaces/netifaces-${INT_NETIFACES}.tar.gz" SOURCE[14]="$SRCDIR/sources/psutil-${INT_PSUTIL}.tar.gz" SRCURL[14]="https://github.com/giampaolo/psutil/archive/release-${INT_PSUTIL}.tar.gz" SOURCE[15]="$SRCDIR/sources/apsw-${INT_APSW}.zip" SRCURL[15]="https://github.com/rogerbinns/apsw/releases/download/${INT_APSW}/apsw-${INT_APSW}.zip" SOURCE[16]="$SRCDIR/sources/regex-${INT_REGEX}.tar.gz" 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/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/uchardet-${INT_UCHARDET}.tar.xz" SRCURL[19]="https://www.freedesktop.org/software/uchardet/releases/uchardet-${INT_UCHARDET}.tar.xz" SOURCE[20]="$SRCDIR/sources/webencodings-${INT_WEBENC}.tar.gz" SRCURL[20]="https://pypi.io/packages/source/w/webencodings/webencodings-${INT_WEBENC}.tar.gz" SOURCE[21]="$SRCDIR/sources/html5lib-${INT_HTML5LIB}.tar.gz" SRCURL[21]="https://pypi.io/packages/source/h/html5lib/html5lib-${INT_HTML5LIB}.tar.gz" SOURCE[22]="$SRCDIR/sources/html5-parser-${INT_HTML5PARSER}.tar.gz" SRCURL[22]="https://pypi.io/packages/source/h/html5-parser/html5-parser-${INT_HTML5PARSER}.tar.gz" SOURCE[23]="$SRCDIR/sources/unrardll-${INT_UNRARDLL}.tar.gz" SRCURL[23]="https://pypi.io/packages/source/u/unrardll/unrardll-${INT_UNRARDLL}.tar.gz" SOURCE[24]="$SRCDIR/sources/feedparser-${INT_FEEDPARSER}.tar.gz" SRCURL[24]="https://pypi.io/packages/source/f/feedparser/feedparser-${INT_FEEDPARSER}.tar.gz" SOURCE[25]="$SRCDIR/sources/Markdown-${INT_MARKDOWN}.tar.gz" SRCURL[25]="https://pypi.io/packages/source/M/Markdown/Markdown-${INT_MARKDOWN}.tar.gz" SOURCE[26]="$SRCDIR/sources/sqlite-amalgamation-${INT_SQLITE}.zip" SRCURL[26]="https://www.sqlite.org/2023/sqlite-amalgamation-${INT_SQLITE}.zip" SOURCE[27]="$SRCDIR/sources/beautifulsoup4-${INT_BEAUTIFULSOUP}.tar.gz" SRCURL[27]="https://pypi.io/packages/source/b/beautifulsoup4/beautifulsoup4-${INT_BEAUTIFULSOUP}.tar.gz" SOURCE[28]="$SRCDIR/sources/snowball-${INT_STEMMER}.tar.gz" SRCURL[28]="https://github.com/snowballstem/snowball/archive/refs/tags/v${INT_STEMMER}.tar.gz" SOURCE[29]="$SRCDIR/sources/soupsieve-${INT_SOUPSIEVE}.tar.gz" SRCURL[29]="https://pypi.io/packages/source/s/soupsieve/soupsieve-${INT_SOUPSIEVE}.tar.gz" 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/chardet-${INT_CHARDET}.tar.gz" SRCURL[31]="https://pypi.io/packages/source/c/chardet/chardet-${INT_CHARDET}.tar.gz" SOURCE[32]="$SRCDIR/sources/pychm-${INT_PYCHM}.tar.gz" SRCURL[32]="https://pypi.io/packages/source/p/pychm/pychm-${INT_PYCHM}.tar.gz" SOURCE[33]="$SRCDIR/sources/toml-${INT_TOML}.tar.gz" SRCURL[33]="https://pypi.io/packages/source/t/toml/toml-${INT_TOML}.tar.gz" SOURCE[34]="$SRCDIR/sources/PyQt6_WebEngine-${INT_PYQTWEBENG}.tar.gz" SRCURL[34]="https://pypi.io/packages/source/P/PyQt6_WebEngine/PyQt6_WebEngine-${INT_PYQTWEBENG}.tar.gz" SOURCE[35]="$SRCDIR/sources/unrarsrc-${INT_UNRARSRC}.tar.gz" SRCURL[35]="http://www.rarlab.com/rar/unrarsrc-${INT_UNRARSRC}.tar.gz" SOURCE[36]="$SRCDIR/sources/hunspell-${INT_HUNSPELL}.tar.gz" SRCURL[36]="https://github.com/hunspell/hunspell/archive/v${INT_HUNSPELL}.tar.gz" SOURCE[37]="$SRCDIR/sources/pip-${INT_PIP}.tar.gz" SRCURL[37]="https://pypi.io/packages/source/p/pip/pip-${INT_PIP}.tar.gz" SOURCE[38]="$SRCDIR/sources/sgmllib3k-${INT_SGMLLIB3K}.tar.gz" SRCURL[38]="https://pypi.io/packages/source/s/sgmllib3k/sgmllib3k-${INT_SGMLLIB3K}.tar.gz" SOURCE[39]="$SRCDIR/sources/py7zr-${INT_PY7ZR}.tar.gz" SRCURL[39]="https://pypi.io/packages/source/p/py7zr/py7zr-${INT_PY7ZR}.tar.gz" SOURCE[40]="$SRCDIR/sources/jeepney-${INT_JEEPNEY}.tar.gz" SRCURL[40]="https://pypi.io/packages/source/j/jeepney/jeepney-${INT_JEEPNEY}.tar.gz" SOURCE[41]="$SRCDIR/sources/pyparsing-${INT_PYPARSING}.tar.gz" SRCURL[41]="https://pypi.io/packages/source/p/pyparsing/pyparsing-${INT_PYPARSING}.tar.gz" SOURCE[42]="$SRCDIR/sources/ply-${INT_PLY}.tar.gz" SRCURL[42]="https://pypi.io/packages/source/p/ply/ply-${INT_PLY}.tar.gz" SOURCE[43]="$SRCDIR/sources/packaging-${INT_PACKAGING}.tar.gz" SRCURL[43]="https://pypi.io/packages/source/p/packaging/packaging-${INT_PACKAGING}.tar.gz" SOURCE[44]="$SRCDIR/sources/sip-${INT_SIP}.tar.gz" SRCURL[44]="https://pypi.io/packages/source/s/sip/sip-${INT_SIP}.tar.gz" SOURCE[45]="$SRCDIR/sources/PyQt6_sip-${INT_PYQT6SIP}.tar.gz" SRCURL[45]="https://pypi.io/packages/source/P/PyQt6_sip/PyQt6_sip-${INT_PYQT6SIP}.tar.gz" SOURCE[46]="$SRCDIR/sources/PyQt6-${INT_PYQT6}.tar.gz" SRCURL[46]="https://pypi.io/packages/source/P/PyQt6/PyQt6-${INT_PYQT6}.tar.gz" SOURCE[47]="$SRCDIR/sources/PyQt-builder-${INT_PYQTBUILDER}.tar.gz" SRCURL[47]="https://pypi.io/packages/source/P/PyQt-builder/PyQt-builder-${INT_PYQTBUILDER}.tar.gz" SOURCE[48]="$SRCDIR/sources/speech-dispatcher-${INT_SPEECHD}.tar.gz" SRCURL[48]="https://github.com/brailcom/speechd/releases/download/${INT_SPEECHD}/speech-dispatcher-${INT_SPEECHD}.tar.gz" SOURCE[49]="$SRCDIR/sources/multivolumefile-${INT_MULTIVOLUMEFILE}.tar.gz" SRCURL[49]="https://pypi.io/packages/source/m/multivolumefile/multivolumefile-${INT_MULTIVOLUMEFILE}.tar.gz" SOURCE[50]="$SRCDIR/sources/Brotli-${INT_PYBROTLI}.zip" SRCURL[50]="https://pypi.io/packages/source/B/Brotli/Brotli-${INT_PYBROTLI}.zip" SOURCE[51]="$SRCDIR/sources/pyzstd-${INT_PYZSTD}.tar.gz" SRCURL[51]="https://pypi.io/packages/source/p/pyzstd/pyzstd-${INT_PYZSTD}.tar.gz" SOURCE[52]="$SRCDIR/sources/pyppmd-${INT_PYPPMD}.tar.gz" SRCURL[52]="https://pypi.io/packages/source/p/pyppmd/pyppmd-${INT_PYPPMD}.tar.gz" SOURCE[53]="$SRCDIR/sources/fonttools-${INT_FONTTOOLS}.zip" SRCURL[53]="https://pypi.io/packages/source/f/fonttools/fonttools-${INT_FONTTOOLS}.zip" NEXT_ARRAYEL=${#SOURCE[@]} # We always build the python interpreter: echo ">> Compiling python interpreter <<" SOURCE[$NEXT_ARRAYEL]="$SRCDIR/sources/Python-${INT_PYTHON}.tar.xz" SRCURL[$NEXT_ARRAYEL]="http://python.org/ftp/python/${INT_PYTHON}/Python-${INT_PYTHON}.tar.xz" NEXT_ARRAYEL=$(( ${NEXT_ARRAYEL} + 1 )) if [ "$BUILD_MTP" = "YES" ]; then echo ">> Compiling libmtp <<" SOURCE[$NEXT_ARRAYEL]="$SRCDIR/sources/libmtp-${INT_MTP}.tar.gz" SRCURL[$NEXT_ARRAYEL]="https://downloads.sourceforge.net/libmtp/libmtp-${INT_MTP}.tar.gz" NEXT_ARRAYEL=$(( ${NEXT_ARRAYEL} + 1 )) fi if [ "$BUILD_QT" = "YES" ]; then echo ">> Compiling Qt <<" 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 )) fi if [ "$BUILD_MAGICK" = "YES" ]; then echo ">> Compiling Magick <<" SOURCE[$NEXT_ARRAYEL]="$SRCDIR/sources/ImageMagick-${INT_MAGICK}.tar.xz" SRCURL[$NEXT_ARRAYEL]="http://www.imagemagick.org/download/releases/ImageMagick-${INT_MAGICK}.tar.xz" NEXT_ARRAYEL=$(( ${NEXT_ARRAYEL} + 1 )) fi # Several internal dependencies: SOURCE[$NEXT_ARRAYEL]="$SRCDIR/sources/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 )) SOURCE[$NEXT_ARRAYEL]="$SRCDIR/sources/hyphen-${INT_HYPHEN}.tar.gz" SRCURL[$NEXT_ARRAYEL]="https://downloads.sourceforge.net/hunspell/hyphen-${INT_HYPHEN}.tar.gz" NEXT_ARRAYEL=$(( ${NEXT_ARRAYEL} + 1 )) SOURCE[$NEXT_ARRAYEL]="$SRCDIR/sources/dictionaries-${INT_HYPHENATION}.tar.gz" SRCURL[$NEXT_ARRAYEL]="https://github.com/LibreOffice/dictionaries/archive/${INT_HYPHENATION}.tar.gz" NEXT_ARRAYEL=$(( ${NEXT_ARRAYEL} + 1 )) SOURCE[$NEXT_ARRAYEL]="$SRCDIR/sources/mathjax-${INT_MATHJAX}.tar.gz" SRCURL[$NEXT_ARRAYEL]="https://github.com/mathjax/MathJax/archive/${INT_MATHJAX}.tar.gz" NEXT_ARRAYEL=$(( ${NEXT_ARRAYEL} + 1 )) SOURCE[$NEXT_ARRAYEL]="$SRCDIR/sources/mozilla-ca-certs.pem" SRCURL[$NEXT_ARRAYEL]="https://curl.se/ca/cacert.pem" NEXT_ARRAYEL=$(( ${NEXT_ARRAYEL} + 1 )) ## ## --- with a little luck, you won't have to edit below this point --- ## ## # Automatically determine the architecture we're building on: MARCH=$( uname -m ) if [ -z "$ARCH" ]; then case "$MARCH" in i?86) export ARCH=i586 ;; armv7hl) export ARCH=$MARCH ;; arm*) export ARCH=arm ;; # Unless $ARCH is already set, use uname -m for all other archs: *) export ARCH=$MARCH ;; esac fi case "$ARCH" in i?86) SLKCFLAGS="-O2 -march=${ARCH} -mtune=i686" SLKLDFLAGS=""; LIBDIRSUFFIX="" ;; x86_64) SLKCFLAGS="-O2 -fPIC" SLKLDFLAGS="-L/usr/lib64"; LIBDIRSUFFIX="64" ;; armv7hl) SLKCFLAGS="-O2 -march=armv7-a -mfpu=vfpv3-d16" SLKLDFLAGS=""; LIBDIRSUFFIX="" ;; *) SLKCFLAGS="-O2" SLKLDFLAGS=""; LIBDIRSUFFIX="" ;; esac case "$ARCH" in arm*) TARGET=$ARCH-slackware-linux-gnueabi ;; *) TARGET=$ARCH-slackware-linux ;; esac # Exit the script on errors: set -e trap 'echo "$0 FAILED at line ${LINENO}" | tee $OUTPUT/error-${PRGNAM}.log' ERR # Catch unitialized variables: set -u P1=${1:-1} # Save old umask and set to 0022: _UMASK_=$(umask) umask 0022 # Create working directories: 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 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 if ! [ -f ${SOURCE[$i]} ]; then echo "Source '$(basename ${SOURCE[$i]})' not available yet..." # Check if the $SRCDIR is writable at all - if not, download to $OUTPUT [ -w "$SRCDIR" ] || SOURCE[$i]="$OUTPUT/$(basename ${SOURCE[$i]})" if [ -f ${SOURCE[$i]} ]; then echo "Ah, found it!"; continue; fi if ! [ "x${SRCURL[$i]}" == "x" ]; then echo "Will download file to $(dirname $SOURCE[$i])" wget --no-check-certificate --content-disposition -nv -T 20 -O "${SOURCE[$i]}" "${SRCURL[$i]}" || true if [ $? -ne 0 -o ! -s "${SOURCE[$i]}" ]; then echo "Fail to download '$(basename ${SOURCE[$i]})'. Aborting the build." mv -f "${SOURCE[$i]}" "${SOURCE[$i]}".FAIL exit 1 fi else echo "File '$(basename ${SOURCE[$i]})' not available. Aborting the build." exit 1 fi fi done if [ "$P1" == "--download" ]; then echo "Download complete." exit 0 fi # --- PACKAGE BUILDING --- echo "++" echo "|| $PRGNAM-$VERSION" echo "++" cd $TMP/tmp-$PRGNAM if [ "$P1" != "--oldbuild" ]; then if [ "$BUILD_PYTHON" = "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}/$PRGNAM/lib ]; then echo "" echo "** You have $PRGNAM installed in /usr/lib${LIBDIRSUFFIX}/$PRGNAM" echo "** Compiling this package means you have to remove the existing" echo "** $PRGNAM installation first, it conflicts with the compilation!" echo "" exit 1 fi fi 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 $(file ${SOURCE[$i]} | grep -qi ": zip") ; then unzip -q ${SOURCE[$i]} elif $(file ${SOURCE[$i]} | grep -qiw "text") ; then true else tar -xf ${SOURCE[$i]} fi done fi chown -R root:root . chmod -R u+w,go+r-w,a+X-s . fi echo Building ... # # What follows is a series of subroutines for building all the parts: # # # Build Qt 6.x: # make_qt6() { # Calibre needs: # qt-base, qt-svg, qt-shadertools, qt-declarative, qt-imageformats, # qt-webchannel, qt-positioning, qt-wayland, qt-x11extras, # qt-sensors, qt-webengine. local MOD="qt6" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/qt-everywhere-src-${INT_QT} # If we build our own Qt, unset the QT-related environment variables, # so that a pre-existing Qt will not be picked up and create errors later: unset QTDIR unset QT6DIR NEWPATH="/usr/lib${LIBDIRSUFFIX}/${PRGNAM}/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" # 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 RELOCATIONS="-reduce-relocations" else RELOCATIONS="" fi if [ "$P1" != "--oldbuild" ]; then # Fix path to mysql header cat $PATCHDIR/qt5.mysql.h.diff | patch -p1 --verbose || exit 1 if ! pkg-config --exists libpulse 2>/dev/null ; then # Forcibly disable pulseaudio in qtwebengine: cat $PATCHDIR/qt5.pulseaudio.diff | patch -p1 --verbose || exit 1 fi # 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 # Re-add support for 32bit architectures - Google no longer supports it: sed -i qtwebengine/src/3rdparty/chromium/BUILD.gn \ -e 's/target_os != "linux" || /target_os == "linux" || /' cd qtwebengine # Thanks Debian! See https://salsa.debian.org/qt-kde-team/qt6/qt6-webengine/-/tree/master/debian/patches cat $PATCHDIR/qt6-webengine_32bit_compressing_files.patch \ | patch -p1 --verbose || exit 1 cd - 1>/dev/null fi export CFLAGS="$SLKCFLAGS" export CXXFLAGS="$SLKCFLAGS" export OPENSOURCE_CXXFLAGS="$SLKCFLAGS" 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" mkdir -p build cd build cmake .. \ -G Ninja \ -Wno-dev \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ -DCMAKE_C_FLAGS_RELEASE:STRING="$SLKCFLAGS" \ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \ -DCMAKE_CXX_FLAGS_RELEASE:STRING="$SLKCFLAGS" \ -DCMAKE_INSTALL_PREFIX="/usr/lib${LIBDIRSUFFIX}/${PRGNAM}" \ -DFEATURE_openssl_linked=ON \ -DFEATURE_system_sqlite=OFF \ -DFEATURE_system_xcb_xinput=ON \ -DFEATURE_webengine_proprietary_codecs=ON \ -DFEATURE_webengine_system_ffmpeg=OFF \ -DQT_BUILD_EXAMPLES=OFF \ -DQT_USE_CCACHE=OFF \ -DBUILD_qt3d:BOOL=OFF \ -DBUILD_qtactiveqt:BOOL=OFF \ -DBUILD_qtcharts:BOOL=OFF \ -DBUILD_qtconnectivity:BOOL=OFF \ -DBUILD_qtdatavis3d:BOOL=OFF \ -DBUILD_qtdoc:BOOL=OFF \ -DBUILD_qtlottie:BOOL=OFF \ -DBUILD_qtmqtt:BOOL=OFF \ -DBUILD_qtmultimedia:BOOL=OFF \ -DBUILD_qtnetworkauth:BOOL=OFF \ -DBUILD_qtquick3d:BOOL=OFF \ -DBUILD_qtquick3dphysics:BOOL=OFF \ -DBUILD_qtquicktimeline:BOOL=OFF \ -DBUILD_qtremoteobjects:BOOL=OFF \ -DBUILD_qtscxml:BOOL=OFF \ -DBUILD_qtserialbus:BOOL=OFF \ -DBUILD_qtserialport:BOOL=OFF \ -DBUILD_qttools:BOOL=OFF \ -DBUILD_qttranslations:BOOL=OFF \ 2>&1 | tee $OUTPUT/configure-${PRGNAM}_${MOD}.log cmake --build . --parallel \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log DESTDIR=$PKG cmake --install . --strip \ 2>&1 | tee $OUTPUT/install-${PRGNAM}_${MOD}.log cd - 1>/dev/null # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/${PRGNAM}/doc/internaldeps/${MOD} cp -a LICENSE* README* \ $PKG/usr/lib${LIBDIRSUFFIX}/${PRGNAM}/doc/internaldeps/${MOD} || true } # End make_qt6 # # Build libmtp: # make_mtp() { local MOD="libmtp" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/libmtp-${INT_MTP} export CFLAGS="$SLKCFLAGS" ./configure \ --prefix=/usr/lib${LIBDIRSUFFIX}/$PRGNAM \ --disable-static # Build and install: make $NUMJOBS || make || exit 1 make install DESTDIR=$PKG || exit 1 # Guess someone didn't have enough to drink: ( cd $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/bin rm -f mtp-sendtr mtp-sendfile mtp-newfolder mtp-getfile mtp-delfile ln -s mtp-connect mtp-sendtr ln -s mtp-connect mtp-sendfile ln -s mtp-connect mtp-newfolder ln -s mtp-connect mtp-getfile ln -s mtp-connect mtp-delfile ) # No need for this in the calibre package: rm -rf $PKG/lib $PKG/usr/lib/udev # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a README* \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_libmtp # # Build ImageMagick: # make_magick() { local MOD="ImageMagick" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/ImageMagick-${INT_MAGICK} LDFLAGS="" CFLAGS="" CXXFLAGS="" \ ./configure \ --prefix=/usr/lib${LIBDIRSUFFIX}/$PRGNAM \ --enable-shared \ --disable-static \ --disable-openmp \ --without-modules \ --without-frozenpaths \ --without-perl \ --without-x \ --with-gcc-arch=$ARCH \ --enable-zero-configuration \ --build=$TARGET \ 2>&1 | tee $OUTPUT/configure-${PRGNAM}_${MOD}.log # Build (no parallel build!) and install: follow the official SlackBuild # and first install to the target location, then rebuild and install into # the package location. make 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log make install \ 2>&1 | tee $OUTPUT/install-${PRGNAM}_${MOD}.log make clean echo -e "\n** Second run of 'make' for ImageMagick **\n" \ >> $OUTPUT/make-${PRGNAM}_${MOD}.log make 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_${MOD}.log echo -e "\n** Second run of 'make install' for ImageMagick **\n" \ >> $OUTPUT/make-${PRGNAM}_${MOD}.log make install DESTDIR=$PKG \ 2>&1 | tee -a $OUTPUT/install-${PRGNAM}_${MOD}.log # .la files in libdir should be removed. # Other .la files should be left alone, as ImageMagick uses them internally # to locate modules. rm -f $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/lib/*.la # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a AUTHORS LICENSE NEWS NOTICE README* \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_magick # # Build python 3.x: # make_python() { local MOD="python" echo -e "\n** $MOD **\n" local BRANCH_VERSION=$(echo $INT_PYTHON | cut -f 1,2 -d . ) local SITEPK=$PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/lib/python${BRANCH_VERSION}/site-packages cd $TMP/tmp-$PRGNAM/Python-${INT_PYTHON} if [ "$P1" != "--oldbuild" ]; then touch $OUTPUT/patch-${PRGNAM}_${MOD}.log cat $PATCHDIR/python3.readline.set_pre_input_hook.diff \ | patch -p1 --verbose \ 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}_${MOD}.log # If system we're building on already has Python3 with pip in site-packages, # ignore it and install pip anyway. sed -i 's|\("install",\)|\1 "--ignore-installed",|' Lib/ensurepip/__init__.py fi # We are going to install python inside the calibre package. # This requires some changes to the standard build: # Creating the 'lib' directory below is needed! We are going to use rpath # so that we can run python from this non-standard path: mkdir -p /usr/lib${LIBDIRSUFFIX}/$PRGNAM/lib export CFLAGS="${SLKCFLAGS/-O2}" LDFLAGS="-Wl,-rpath /usr/lib${LIBDIRSUFFIX}/$PRGNAM/lib" \ ./configure \ --prefix=/usr/lib${LIBDIRSUFFIX}/$PRGNAM \ --bindir=/usr/lib${LIBDIRSUFFIX}/$PRGNAM \ --libdir=/usr/lib${LIBDIRSUFFIX}/$PRGNAM/lib \ --with-platlibdir=lib \ --enable-ipv6 \ --enable-loadable-sqlite-extensions \ --enable-optimizations \ --enable-shared \ --with-computed-gotos \ --with-ssl-default-suites=python \ --with-system-expat \ --with-system-ffi \ --without-ensurepip \ --build=$TARGET \ 2>&1 | tee $OUTPUT/configure-${PRGNAM}_${MOD}.log make $NUMJOBS EXTRA_CFLAGS="$CFLAGS" || make \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log make install DESTDIR=$PKG EXTRA_CFLAGS="$CFLAGS" \ 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_${MOD}.log # We'll install the python-tools under site-packages: mkdir -p $SITEPK cp -a Tools/* $SITEPK/ # Remove DOS batch/exe files. find $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM \( -name '*.exe' -o -name '*.bat' \) -exec rm -f '{}' \+ # Fix permissions on dynamic libraries. find $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM -type f -perm 555 -exec chmod 755 '{}' \+ # No need for man pages now: rm -rf $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/share/man # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a LICENSE README* \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_python # # Build pyseuptools: # make_setuptools() { local MOD="setuptools" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/setuptools-${INT_SETUPTOOLS} rm -f setuptools/*.exe # Compile and install python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a *.rst \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_setuptools # # Build pyqtbuilder: # make_pyqtbuilder() { local MOD="pyqtbuilder" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/PyQt-builder-${INT_PYQTBUILDER} # Compile and install python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a LICENSE* README* \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_pyqtbuilder # # Build pip: # make_pip() { local MOD="pip" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/pip-${INT_PIP} # Compile and install python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a AUTHORS.txt LICENSE.txt NEWS.rst PKG-INFO README.rst \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_pip make_dnspython() { local MOD="dnspython" echo -e "\n** ${MOD} **\n" cd $TMP/tmp-$PRGNAM/dnspython-${INT_DNSPYTHON} # Compile and install python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a LICENSE README* \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_dnspython # # Build css-parser: # make_cssparser() { local MOD="cssparser" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/css-parser-${INT_CSSPARSER} # The source is infested with DOS files: sed -i -e 's/\r//' $( find . -type f -exec file "{}" ";" | \ grep CRLF | cut -f1 -d: ) \ || true # Compile and install python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a README* \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_cssparser # # Build dateutil: # make_dateutil() { local MOD="dateutil" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/python-dateutil-${INT_DATEUTIL} # Compile and install python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a LICENSE NEWS \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_dateutil # # Build imaging (this package is called "python-pillow" in Slackware): # make_pillow() { local MOD="pillow" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/Pillow-${INT_PILLOW} # Installation path for headers: PYTHONINC=$( python3 -c 'from distutils.sysconfig import *;print (get_python_inc())' ) # Compile and install export CFLAGS="$SLKCFLAGS" python3 setup.py install --root $PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a CHANGES* LICENSE README* RELEASING* \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_pillow # # Build lxml: # make_lxml() { local MOD="lxml" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/lxml-${INT_LXML} # Compile and install python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a *.txt doc/licenses \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_lxml # # Build mechanize: # make_mechanize() { local MOD="mechanize" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/mechanize-${INT_MECHANIZE} # Compile and install export CFLAGS="$SLKCFLAGS" python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a *.txt \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_mechanize # # Build toml: # make_toml() { local MOD="toml" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/toml-${INT_TOML} # Compile and install export CFLAGS="$SLKCFLAGS" python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a LICENSE *.rst \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_toml # # Build jeepney: # make_jeepney() { local MOD="jeepney" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/jeepney-${INT_JEEPNEY} python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a LICENSE* *.rst \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_jeepney # # Build python-pygments: # make_pygments() { local MOD="pygments" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/Pygments-${INT_PYGMENTS} # Compile and install export CFLAGS="$SLKCFLAGS" python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a AUTHORS CHANGES LICENSE README* \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_pygments # # Build python-pyparsing: # make_pyparsing() { local MOD="pyparsing" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/pyparsing-${INT_PYPARSING} # Compile and install export CFLAGS="$SLKCFLAGS" python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a CHANGES LICENSE* README* \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_pyparsing # # Build python-ply: # make_ply() { local MOD="ply" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/ply-${INT_PLY} # Compile and install export CFLAGS="$SLKCFLAGS" python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a ANNOUNCE CHANGES PKG-INFO README.md TODO \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_ply # # Build python-packaging: # make_packaging() { local MOD="packaging" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/packaging-${INT_PACKAGING} # Compile and install export CFLAGS="$SLKCFLAGS" python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a *.rst LICENSE* PKG-INFO \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_packaging # # Build sip: # make_sip() { local MOD="sip" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/sip-${INT_SIP} # Compile and install sip first: export CFLAGS="$SLKCFLAGS" python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a LICENSE* NEWS README \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_sip # # Build pyqt-sip: # make_pyqt6sip() { local MOD="pyqt6-sip" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/PyQt6_sip-${INT_PYQT6SIP} # Compile and install: export CFLAGS="$SLKCFLAGS" python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a LICENSE* README \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_pyqt6sip # # Build PyQt6: # make_pyqt6() { local MOD="pyqt6" echo -e "\n** $MOD **\n" PYTHON3LIB=$( python3 -c 'from distutils.sysconfig import get_python_lib; print(get_python_lib())' 2>/dev/null ) if [ "${BUILD_QT}" = "NO" ]; then export QTDIR=/usr/lib${LIBDIRSUFFIX}/qt6 else unset QT56IR export QTDIR=/usr/lib${LIBDIRSUFFIX}/${PRGNAM} fi export CFLAGS="$SLKCFLAGS" export CXXFLAGS="$SLKCFLAGS" cd $TMP/tmp-$PRGNAM/PyQt6-${INT_PYQT6} sip-build \ --confirm-license \ --jobs $(nproc) \ --verbose \ --qmake=$QTDIR/bin/qmake \ --no-make \ 2>&1 | tee $OUTPUT/configure-${PRGNAM}_${MOD}.log cd build 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 cd - 1>/dev/null # Useless: rm -rf $PKG/$PYTHON3LIB/PyQt5/uic/port_v2/ if [ "${BUILD_QT}" = "NO" ]; then # Remove ugly bits that threaten to overwrite a system file: rm -rf $PKG/usr/lib${LIBDIRSUFFIX}/qt6 fi # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a LICENSE* NEWS \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_pyqt # # Build PyQtWebEngine: # make_pyqtwebengine() { local MOD="pyqtwebengine" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/PyQt6_WebEngine-${INT_PYQTWEBENG} if [ "${BUILD_QT}" = "NO" ]; then export QTDIR=/usr/lib${LIBDIRSUFFIX}/qt6 else unset QT6DIR export QTDIR=/usr/lib${LIBDIRSUFFIX}/${PRGNAM} fi export CFLAGS="$SLKCFLAGS" export CXXFLAGS="$SLKCFLAGS" sip-build \ --jobs $(nproc) \ --verbose \ --qmake $QTDIR/bin/qmake \ --no-make \ 2>&1 | tee $OUTPUT/configure-${PRGNAM}_${MOD}.log cd build 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 cd - 1>/dev/null # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a LICENSE* NEWS \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_pyqtwebengine # # Build pycryptodome: # make_pycryptodome() { local MOD="pycryptodome" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/pycryptodome-${INT_PYCRYPTODOME} # Compile and install export CFLAGS="$SLKCFLAGS" python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a *.rst \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_pycryptodome # # Build netifaces: # make_netifaces() { local MOD="netifaces" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/netifaces-${INT_NETIFACES} # Compile and install export CFLAGS="-I/usr/lib${LIBDIRSUFFIX}/$PRGNAM/include" python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log unset CFLAGS # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a LICENSE README* \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_netifaces # # Build ifaddr: # make_ifaddr() { local MOD="ifaddr" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/ifaddr-${INT_IFADDR} # Compile and install export CFLAGS="-I/usr/lib${LIBDIRSUFFIX}/$PRGNAM/include" python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log unset CFLAGS # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a LICENSE* *.rst \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_ifaddr # # Build zeroconf: # make_zeroconf() { local MOD="zeroconf" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/zeroconf-${INT_ZEROCONF} # Compile and install export CFLAGS="-I/usr/lib${LIBDIRSUFFIX}/$PRGNAM/include" python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log unset CFLAGS # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a COPYING* *.rst \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_zeroconf # # Build apsw: # make_apsw() { local MOD="apsw" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/apsw-${INT_APSW} # Link in the SQLite amalgamation files to compile sqlite # statically into the module: rm -rf sqlite3 ln -s ../sqlite-amalgamation-${INT_SQLITE} sqlite3 # Compile and install export CFLAGS="$SLKCFLAGS" python3 setup.py build --enable-all-extensions \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log python3 setup.py install --root=$PKG --skip-build \ 2>&1 | tee $OUTPUT/install-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a PKG-INFO \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_apsw # # Build psutil: # make_psutil() { local MOD="psutil" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/psutil*-${INT_PSUTIL} # Compile and install export CFLAGS="$SLKCFLAGS" python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a CREDITS HISTORY* INSTALL* LICENSE README* \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_psutil # # Build texttable: # make_texttable() { local MOD="texttable" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/texttable-${INT_TEXTTABLE} # Compile and install export CFLAGS="$SLKCFLAGS" python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a LICENSE *.md \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_texttable # # Build multivolumefile: # make_multivolumefile() { local MOD="multivolumefile" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/multivolumefile-${INT_MULTIVOLUMEFILE} # Compile and install export CFLAGS="$SLKCFLAGS" python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a LICENSE *.rst \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_multivolumefile # # Build pybrotli: # make_pybrotli() { local MOD="pybrotli" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/Brotli-${INT_PYBROTLI} # Compile and install export CFLAGS="$SLKCFLAGS" python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a CONTRIBUTING.md LICENSE README* \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_pybrotli # # Build pyzstd: # make_pyzstd() { local MOD="pyzstd" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/pyzstd-${INT_PYZSTD} # Compile and install export CFLAGS="$SLKCFLAGS" python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a LICENSE *.rst \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_pyzstd # # Build pyppmd: # make_pyppmd() { local MOD="pyppmd" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/pyppmd-${INT_PYPPMD} # Compile and install export CFLAGS="$SLKCFLAGS" python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a *.rst \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_pyppmd # # Build fonttools: # make_fonttools() { local MOD="fonttools" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/fonttools-${INT_FONTTOOLS} # Compile and install export CFLAGS="$SLKCFLAGS" python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a LICENSE* *.rst \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_fonttools # # Build py7zr: # make_py7zr() { local MOD="py7zr" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/py7zr-${INT_PY7ZR} # Compile and install export CFLAGS="$SLKCFLAGS" python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a LICENSE *.rst \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_py7zr # # Build optipng: # make_optipng() { local MOD="optipng" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/optipng-${INT_OPTIPNG} ./configure -prefix=/usr \ 2>&1 | tee $OUTPUT/configure-${PRGNAM}_${MOD}.log make -C src 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log mkdir -p $PKG/usr/bin install -v -m0755 src/optipng/optipng $PKG/usr/bin/optipng-$PRGNAM \ 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a AUTHORS.txt LICENSE.txt README.tx* \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_optipng # # Build unrar source: # make_unrarsrc() { local MOD="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}/$PRGNAM/bin/unrar install -D -m 755 ../libunrar/libunrar.so $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/lib/libunrar.so install -D -m 644 dll.hpp $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/include/unrar/dll.hpp # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a acknow.txt license.txt readme.txt \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_unrarsrc # # Build hunspell: # make_hunspell() { local MOD="hunspell" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/hunspell-${INT_HUNSPELL} autoreconf -vif \ 2>&1 | tee $OUTPUT/configure-${PRGNAM}_${MOD}.log CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ ./configure \ --prefix=/usr/lib${LIBDIRSUFFIX}/$PRGNAM \ --disable-static \ --with-readline \ --build=$TARGET \ 2>&1 | tee $OUTPUT/configure-${PRGNAM}_${MOD}.log # Build and install: make $NUMJOBS || make \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log make install DESTDIR=$PKG \ 2>&1 | tee $OUTPUT/install-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a ABOUT-NLS AUTHORS* COPYING* ChangeLog* NEWS README* THANKS \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_hunspell # # Build hyphen: # make_hyphen() { local MOD="hyphen" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/hyphen-${INT_HYPHEN} LDFLAGS="" \ LD_LIBRARY_PATH="/usr/lib${LIBDIRSUFFIX}/$PRGNAM/lib" \ ./configure \ --prefix=/usr/lib${LIBDIRSUFFIX}/$PRGNAM \ --enable-shared=yes \ --enable-static=no \ --build=$TARGET \ --host=$TARGET \ 2>&1 | tee $OUTPUT/configure-${PRGNAM}_${MOD}.log make 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log make install DESTDIR=$PKG 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a AUTHORS COPYIN* ChangeLog INSTALL NEWS READM* THANKS TODO \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_hyphen # # Build python-regex: # make_regex() { local MOD="regex" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/regex-${INT_REGEX} # Compile and install export CFLAGS="$SLKCFLAGS" python3 setup.py install --root=$PKG --optimize=1 \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a docs/Features.html docs/Features.rst \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_regex # # Build msgpack-python: # make_msgpack() { local MOD="msgpack" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/msgpack-${INT_MSGPACK} # Compile and install export CFLAGS="$SLKCFLAGS" python3 setup.py install --root=$PKG --optimize=1 \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a COPYING* README* \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_msgpack # # Build six: # make_six() { local MOD="six" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/six-${INT_SIX} # Compile and install export CFLAGS="$SLKCFLAGS" python3 setup.py install --root=$PKG --optimize=1 \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a CHANGES LICENSE* README* \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_six # # Build webencodings: # make_webenc() { local MOD="webencodings" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/webencodings-${INT_WEBENC} # Compile and install export CFLAGS="$SLKCFLAGS" python3 setup.py install --root=$PKG --optimize=1 \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a README* \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_webenc # # Build html5lib: # make_html5lib() { local MOD="html5lib" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/html5lib-${INT_HTML5LIB} # Compile and install export CFLAGS="$SLKCFLAGS" python3 setup.py install --root=$PKG --optimize=1 \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a LICENSE* README* *.rst requirements.txt \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_html5lib # # Build html5-parser: # make_html5parser() { local MOD="html5-parser" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/html5-parser-${INT_HTML5PARSER} # Compile and install export CFLAGS="$SLKCFLAGS" python3 setup.py install --root=$PKG --optimize=1 \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a LICENSE* README* \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_html5parser # # Build unrardll: # make_unrardll() { local MOD="unrardll" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/unrardll-${INT_UNRARDLL} # Compile and install export CFLAGS="$SLKCFLAGS -I/usr/lib${LIBDIRSUFFIX}/$PRGNAM/include" python3 setup.py install --root=$PKG --optimize=1 \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a LICENSE* README* \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_unrardll make_feedparser() { local MOD="feedparser" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/feedparser-${INT_FEEDPARSER} # Compile and install export CFLAGS="$SLKCFLAGS" python3 setup.py install --root=$PKG --optimize=1 \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a LICENSE* NEWS README* \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_feedparser # # Build sgmllib3k: # make_sgmllib3k() { local MOD="sgmllib3k" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/sgmllib3k-${INT_SGMLLIB3K} # Compile and install python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a LICENSE* README \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_sgmllib3k make_Markdown() { local MOD="Markdown" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/Markdown-${INT_MARKDOWN} # Compile and install export CFLAGS="$SLKCFLAGS" python3 setup.py install --root=$PKG --optimize=1 \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a *.md \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_Markdown make_beautifulsoup() { local MOD="beautifulsoup" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/beautifulsoup4-${INT_BEAUTIFULSOUP} # Compile and install: python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a *.txt LICENSE README.md \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_beautifulsoup make_soupsieve() { local MOD="soupsieve" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/soupsieve-${INT_SOUPSIEVE} # Compile and install: python3 setup.py build \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log python3 setup.py install --root=$PKG --optimize=1 \ 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a *.md \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_soupsieve make_html2text() { local MOD="html2text" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/html2text-${INT_HTML2TEXT} # Compile and install: python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a *.rst COPYING README.md \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_html2text make_chardet() { local MOD="chardet" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/chardet-${INT_CHARDET} # Compile and install: python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a *.rst LICENSE \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_chardet make_uchardet() { local MOD="uchardet" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/uchardet-${INT_UCHARDET} # Compile and install: mkdir -p build cd build cmake .. \ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \ -DCMAKE_INSTALL_PREFIX=/usr/lib${LIBDIRSUFFIX}/$PRGNAM \ -DCMAKE_INSTALL_LIBDIR=lib \ 2>&1 | tee $OUTPUT/configure-${PRGNAM}_${MOD}.log make $NUMJOBS 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log make DESTDIR=$PKG install 2>&1 | tee $OUTPUT/install-${PRGNAM}_${MOD}.log cd - 1>/dev/null # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a COPYING *.rst LICENSE \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_uchardet make_pychm() { local MOD="pychm" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/pychm-${INT_PYCHM} # Compile and install: python3 setup.py install --root=$PKG \ 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a COPYING LICENSE NEWS README \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_pychm make_stemmer() { local MOD="stemmer" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/snowball-${INT_STEMMER} # Also generate dynamic lib for calibre: cat $PATCHDIR/libstemmer.dynamiclib.patch | patch -p1 --verbose \ 2>&1 | tee $OUTPUT/patch-${PRGNAM}_${MOD}.log # Compile and install: make 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log install -D -m0755 -t $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ stemwords install -D -m0644 -t $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/include include/libstemmer.h install -D -t $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/lib libstemmer.a install -D -t $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/lib libstemmer.so.0.0.0 ln -s libstemmer.so.0.0.0 $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/lib/libstemmer.so.0 ln -s libstemmer.so.0 $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/lib/libstemmer.so # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a AUTHORS COPYING* NEWS *.rst \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_stemmer 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}/$PRGNAM \ -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}/$PRGNAM/doc/internaldeps/${MOD} cp -a AUTHORS ChangeLog CODING* CONTRIBUTIONS* COPYING* \ FAQ* INSTALL README* TODO \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_podofo # # Build speech-dispatcher: # make_speechdispatcher() { local MOD="speechdispatcher" echo -e "\n** $MOD **\n" cd $TMP/tmp-$PRGNAM/speech-dispatcher-${INT_SPEECHD} LDFLAGS="" \ LD_LIBRARY_PATH="/usr/lib${LIBDIRSUFFIX}/$PRGNAM/lib" \ ./configure \ --prefix=/usr/lib${LIBDIRSUFFIX}/$PRGNAM \ --libexecdir=/usr/lib${LIBDIRSUFFIX}/$PRGNAM/lib \ --sysconfdir=/usr/lib${LIBDIRSUFFIX}/$PRGNAM/etc \ --mandir=/usr/lib${LIBDIRSUFFIX}/$PRGNAM/man \ --enable-shared=yes \ --enable-static=no \ --with-ibmtts=no --with-kali=no --with-baratinoo=no --with-voxin=no \ --without-flite \ --build=$TARGET \ --host=$TARGET \ 2>&1 | tee $OUTPUT/configure-${PRGNAM}_${MOD}.log make 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}.log # A 'spd-conf.1' already exists but make falters when re-generating it: touch ./src/api/python/speechd_config/spd-conf.1 make -j1 -i 2>&1 | tee $OUTPUT/make-${PRGNAM}_${MOD}_spd-conf.log make install DESTDIR=$PKG 2>&1 | tee $OUTPUT/install-${PRGNAM}_${MOD}.log rm -f $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/etc/speech-dispatcher/modules/cicero.conf rm -f $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/etc/speech-dispatcher/modules/flite.conf rm -f $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/lib/speech-dispatcher/speech-dispatcher-modules/sd_cicero # Add documentation: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} cp -a AUTHORS COPYIN* INSTALL NEWS READM* TODO \ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/${MOD} || true } # End make_speechdispatcher # -------------- # Build calibre: # -------------- make_calibre () { echo -e "\n** calibre **\n" touch $OUTPUT/patch-$PRGNAM.log cd $TMP/tmp-$PRGNAM/${SRCNAM}-${VERSION} if [ "$P1" != "--oldbuild" ]; then # 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'"/' fi # See if we picked up any compiler or linker flags for python: LDFLAGS=${LDFLAGS:-""} CFLAGS=${CFLAGS:-""} # Place where we have to install stuff: PYTHONLIB=$( python3 -c "from distutils.sysconfig import get_python_lib; print (get_python_lib())" ) # Create the directory for calibre's environment module: mkdir -p $PKG$PYTHONLIB # Find the prefix python was installed to (may be different from calibre's): PYTHONROOT=$( python3 -c "from distutils.sysconfig import get_python_lib; print (get_python_lib(prefix='/'))" ) PYTHONPREF="${PYTHONLIB%$PYTHONROOT}" ## Massage the install script to actually install to that python libdir: #sed -i setup/install.py \ # -e "s,'lib','lib${LIBDIRSUFFIX}',g" \ # -e "/s.get_python_lib(prefix=/s,(prefix=.*),(prefix='$PKG$PYTHONPREF')," # Massage the install script: sed -i setup/install.py \ -e "s,'lib','lib${LIBDIRSUFFIX}',g" \ -e "/^ *self./s,'calibre','$PRGNAM'," # Cut out the DOS crap: sed -i -e 's/\r//' src/calibre/web/feeds/recipes/* export HUNSPELL_INC_DIR="/usr/lib${LIBDIRSUFFIX}/$PRGNAM/include/hunspell" export HUNSPELL_LIB_DIR="/usr/lib${LIBDIRSUFFIX}/$PRGNAM/lib" export PODOFO_INC_DIR="/usr/lib${LIBDIRSUFFIX}/$PRGNAM/include/podofo" export PODOFO_LIB_DIR="/usr/lib${LIBDIRSUFFIX}/$PRGNAM/lib" export FT_LIB_DIR="/usr/lib${LIBDIRSUFFIX}" export LDFLAGS="$LDFLAGS $SLKLDFLAGS -lfontconfig" export CFLAGS="$CFLAGS $SLKCFLAGS" # To run RapydScript using QtWebengine: export QTWEBENGINE_DISABLE_SANDBOX=1 touch $OUTPUT/make-${PRGNAM}.log LANG='en_US.UTF-8' \ python3 setup.py build \ 2>&1 | tee -a $OUTPUT/make-${PRGNAM}.log LANG='en_US.UTF-8' \ python3 setup.py iso639 \ 2>&1 | tee -a $OUTPUT/make-${PRGNAM}.log LANG='en_US.UTF-8' \ python3 setup.py iso3166 \ 2>&1 | tee -a $OUTPUT/make-${PRGNAM}.log LANG='en_US.UTF-8' \ python3 setup.py translations \ 2>&1 | tee -a $OUTPUT/make-${PRGNAM}.log LANG='en_US.UTF-8' \ python3 setup.py resources \ --path-to-hyphenation=$(pwd)/../dictionaries-${INT_HYPHENATION} \ --system-liberation_fonts \ --path-to-liberation_fonts=/usr/share/fonts/TTF \ --path-to-mathjax=$(pwd)/../MathJax-${INT_MATHJAX} \ 2>&1 | tee -a $OUTPUT/make-${PRGNAM}.log LANG='en_US.UTF-8' \ python3 setup.py rapydscript \ 2>&1 | tee -a $OUTPUT/make-${PRGNAM}.log LANG='en_US.UTF-8' \ python3 setup.py gui \ 2>&1 | tee -a $OUTPUT/make-${PRGNAM}.log if [ ! -f $SRCDIR/sources/user-agent-data.json ] || [ "${BUILD_NEWUAS}" != "NO" ]; then # Generate the UserAgent-strings file by collecting online data: LANG='en_US.UTF-8' \ python3 setup.py recent_uas \ 2>&1 | tee -a $OUTPUT/make-${PRGNAM}.log # For later re-use: cp -a resources/user-agent-data.json $SRCDIR/sources/ else install -m0644 $SRCDIR/sources/user-agent-data.json \ resources/user-agent-data.json fi # Create the directories the xdg-utils expects to be present: mkdir -p $PKG/usr/share/{applications,icons/hicolor,mime/packages} mkdir -p $PKG/usr/share/{desktop-directories,packages} # Install the lot: XDG_DATA_DIRS="$PKG/usr/share" \ XDG_UTILS_INSTALL_MODE="system" \ LIBPATH=/usr/lib${LIBDIRSUFFIX} \ LANG='en_US.UTF-8' \ python3 setup.py install \ --prefix=/usr \ --libdir=/usr/lib${LIBDIRSUFFIX} \ --staging-root=$PKG/usr \ --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 # We don't need this either at runtime: rm -rf $PKG/usr/share/$PRGNAM/rapydscript/ ## Create symlinks to system Libration fonts: #if [ -d $PKG/usr/share/$PRGNAM/fonts/liberation ]; then # echo "** Replacing Liberation fonts with symlinks..." # ( cd $PKG/usr/share/$PRGNAM/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/$PRGNAM/fonts/liberation # ( cd $PKG/usr/share/$PRGNAM/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 # These two served their purpose: rmdir $PKG/usr/share/{desktop-directories,packages} # And then some additions or it won't all look nice in your menu: # Add a MimeType icon for lrf, and add an application icon: for i in 16 24 32 48 64 96 128; do mkdir -p $PKG/usr/share/icons/hicolor/${i}x${i}/{apps,mimetypes} convert imgsrc/mimetypes/lrf.svg -scale $i \ $PKG/usr/share/icons/hicolor/${i}x${i}/mimetypes/application-x-sony-bbeb.png convert resources/images/library.png -resize ${i}x${i} \ $PKG/usr/share/icons/hicolor/${i}x${i}/apps/calibre-gui.png convert imgsrc/viewer.svg -scale $i \ $PKG/usr/share/icons/hicolor/${i}x${i}/apps/calibre-viewer.png done } # End of make_calibre # # End of the subroutines. # # Not part of Slackware or too old, and need it: if [ ! -f $SRCDIR/${PRGNAM}_pythondeps-${SLACKVER}-${ARCH}.tar.bz2 ]; then # No tarball containing pre-compiled libraries was found. # We need to build these supporting tools ourself. # After each part is built we will sync to here because in the end, calibre # will wipe the origin and we will have to sync it all back: mkdir -p /usr/lib${LIBDIRSUFFIX}/$PRGNAM make_hunspell rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_optipng rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_podofo rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_hyphen rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_unrarsrc rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ fi # End - not part of Slackware # Compilation of the optional software: if [ "$BUILD_PYTHON" = "YES" -o "$BUILD_MTP" = "YES" -o "$BUILD_QT" = "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 # having to build them - this saves a _lot_ of compile time: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM ( cd $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM echo "** Extracting dependencies tarball... **" tar -jxf $SRCDIR/${PRGNAM}_pythondeps-${SLACKVER}-${ARCH}.tar.bz2 # We also need a copy in the filesystem root! rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM /usr/lib${LIBDIRSUFFIX}/ ) fi # Ensure that our non-standard python3 is found and used: echo "** Configuring build environment for preferring internal libraries **" export PATH="/usr/lib${LIBDIRSUFFIX}/$PRGNAM:/usr/lib${LIBDIRSUFFIX}/$PRGNAM/bin:$PATH" export PKG_CONFIG_PATH="/usr/lib${LIBDIRSUFFIX}/$PRGNAM/lib/pkgconfig:$PKG_CONFIG_PATH" export LDFLAGS="-Wl,-rpath /usr/lib${LIBDIRSUFFIX}/$PRGNAM/lib -L/usr/lib${LIBDIRSUFFIX}/$PRGNAM/lib" # In order to prevent a gcc error if we have to compile libmtp: mkdir -p /usr/lib${LIBDIRSUFFIX}/$PRGNAM/lib fi if [ "$BUILD_MTP" = "YES" ]; then # No sufficiently new libmtp was found so we need to supply it ourself. if [ ! -f $SRCDIR/${PRGNAM}_pythondeps-${SLACKVER}-${ARCH}.tar.bz2 ]; then # No tarball containing pre-compiled libraries was found. # We need to build libmptp ourself. # After each part is built we will sync to here because in the end, calibre # will wipe the origin and we will have to sync it all back: mkdir -p /usr/lib${LIBDIRSUFFIX}/$PRGNAM make_mtp rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ fi fi if [ "$BUILD_MAGICK" = "YES" ]; then # We want to have an internal version of ImageMagick to be less dependent # of Slackware library version changes. if [ ! -f $SRCDIR/${PRGNAM}_pythondeps-${SLACKVER}-${ARCH}.tar.bz2 ]; then # No tarball containing pre-compiled libraries was found. # We need to build Magick ourself. # After each part is built we will sync to here because in the end, calibre # will wipe the origin and we will have to sync it all back: mkdir -p /usr/lib${LIBDIRSUFFIX}/$PRGNAM make_magick rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ fi fi # We build the python interpreter ourself. if [ ! -f $SRCDIR/${PRGNAM}_pythondeps-${SLACKVER}-${ARCH}.tar.bz2 ]; then # No tarball containing pre-compiled python libraries was found. # We need to build python now. # After each part is built we will sync to here because in the end, calibre # will wipe the origin and we will have to sync it all back: mkdir -p /usr/lib${LIBDIRSUFFIX}/$PRGNAM make_python rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ fi SLK_PYTHON_INCLUDES="-I/usr/lib${LIBDIRSUFFIX}/$PRGNAM/include/python${REQUIRED_PYTHON}" SLK_PYTHON_LIBS="-L/usr/lib${LIBDIRSUFFIX}/$PRGNAM/lib -lpython${REQUIRED_PYTHON}" export PYTHON="/usr/lib${LIBDIRSUFFIX}/$PRGNAM/python3" # The python modules need to be compiled into the package: if [ ! -f $SRCDIR/${PRGNAM}_pythondeps-${SLACKVER}-${ARCH}.tar.bz2 ]; then # No tarball containing pre-compiled python libraries was found. # We need to build python modules ourself. # After each part is built we will sync to here because in the end, calibre # will wipe the origin and we will have to sync it all back: mkdir -p /usr/lib${LIBDIRSUFFIX}/$PRGNAM mkdir -p /usr/lib${LIBDIRSUFFIX}/$PRGNAM/{bin,lib} ## Ensure that all our binaries and libraries are found and used: #export PATH="/usr/lib${LIBDIRSUFFIX}/$PRGNAM:/usr/lib${LIBDIRSUFFIX}/$PRGNAM/bin:$PATH" #export PKG_CONFIG_PATH="/usr/lib${LIBDIRSUFFIX}/$PRGNAM/lib/pkgconfig:$PKG_CONFIG_PATH" #export LDFLAGS="-Wl,-rpath /usr/lib${LIBDIRSUFFIX}/$PRGNAM/lib -L/usr/lib${LIBDIRSUFFIX}/$PRGNAM/lib" make_setuptools rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_pyqtbuilder rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_pip rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_stemmer rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_unrardll rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_pillow rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_apsw || exit 1 rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_beautifulsoup rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_soupsieve rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_dnspython rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_cssparser rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_dateutil rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_lxml rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_mechanize rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_pycryptodome rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_netifaces rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_ifaddr rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_jeepney rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_psutil rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_zeroconf rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_texttable rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_multivolumefile rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_pybrotli rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_pyzstd rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_pyppmd rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_py7zr rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_pygments rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_pyparsing rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_ply rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_packaging rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_fonttools rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_toml rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_webenc rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_html5lib rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_html5parser rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_feedparser rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_sgmllib3k rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_Markdown rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_html2text rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_regex rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_six rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_msgpack rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_chardet rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_uchardet rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ if [ "$BUILD_QT" = "YES" ]; then # No sufficiently new Qt was found so we need to supply it ourself. make_qt6 rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ fi make_sip rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_pyqt6sip rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_pyqt6 rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_pyqtwebengine rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_pychm rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ make_speechdispatcher rsync -a $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ fi if [ "$BUILD_PYTHON" = "YES" -o "$BUILD_MTP" = "YES" -o "$BUILD_QT" = "YES" ]; then # At this point we can wrap the compiled python etc. internal libraries # into a tarball which we can re-use in a future build (so that we do not # have to recompile them every time). # If you want to make use of this, then just copy the resulting tarball # into the same directory as this SlackBuild script: if [ ! -f $SRCDIR/${PRGNAM}_pythondeps-${SLACKVER}-${ARCH}.tar.bz2 ]; then ( cd $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM 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 # We need to point calibre's compilation at our custom headers: export CFLAGS="-I/usr/lib${LIBDIRSUFFIX}/$PRGNAM/include" # The main course - compile calibre: make_calibre # Compiling calibre will have wiped all previously compiled python stuff, # so we need to put it back into the package, and then it can go: rsync -a /usr/lib${LIBDIRSUFFIX}/$PRGNAM/ $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ # Wait with with the removal until after byte-compiling: #rm -rf /usr/lib${LIBDIRSUFFIX}/$PRGNAM # We need to tell calibre to use the internal python: for FILE in $PKG/usr/bin/* ; do if ! file $FILE | grep -q ELF ; then sed -i \ -e "s,^#!/usr/bin/env .*$,#!/usr/lib${LIBDIRSUFFIX}/$PRGNAM/python3," \ $FILE fi done # Install the downloaded Mozilla CA certficate bundle: cp -a $SRCDIR/sources/mozilla-ca-certs.pem $PKG/usr/share/calibre/mozilla-ca-certs.pem # The calibre init script is misplaced: mv $PKG/usr/lib/python3.10/site-packages/init_calibre.py \ $PKG/usr/lib${LIBDIRSUFFIX}/calibre/lib/python3.10/site-packages/ # Cleanup empty directories: (cd $PKG/usr; rmdir lib/python3.10/site-packages && rmdir lib/python3.10 && rmdir lib || true) # This is not needed in the package: rm -rf $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/{lib/pkgconfig,lib/python*/test,man,usr/man} # Compiling bytecode makes Calibre startup much faster: set +e /usr/lib${LIBDIRSUFFIX}/$PRGNAM/python3 -m compileall -d '/' ${PKG}/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ || true /usr/lib${LIBDIRSUFFIX}/$PRGNAM/python3 -OO -m compileall -d '/' ${PKG}/usr/lib${LIBDIRSUFFIX}/$PRGNAM/ || true set -e # Now we can remove these from the filesystem: rm -rf /usr/lib${LIBDIRSUFFIX}/$PRGNAM # Create a doinst.sh: mkdir -p $PKG/install cat <> $PKG/install/doinst.sh # Update the desktop and mime database: if [ -x usr/bin/update-desktop-database ]; then chroot . /usr/bin/update-desktop-database usr/share/applications > /dev/null 2>&1 fi if [ -x usr/bin/update-mime-database ]; then chroot . /usr/bin/update-mime-database usr/share/mime > /dev/null 2>&1 fi if [ -x usr/bin/gtk-update-icon-cache ] ; then chroot . /usr/bin/gtk-update-icon-cache --quiet usr/share/icons/hicolor fi EOT # Add documentation: mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION # First, the calibre documentation files: cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION || true # Add documentation (mainly licenses) of the internal python deps: mv $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc/internaldeps/* $PKG/usr/doc/$PRGNAM-$VERSION/ || true rm -rf $PKG/usr/lib${LIBDIRSUFFIX}/$PRGNAM/doc # Add all the patches we used to build this package: cp -a $PATCHDIR $PKG/usr/doc/$PRGNAM-$VERSION # And finally, add this SlackBuild script: 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 # Don't ship .la files: rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la # Strip binaries (if any): find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true # Add a package description: mkdir -p $PKG/install cat $SRCDIR/slack-desc.${PRGNAM} > $PKG/install/slack-desc ## Add the external dependencies : #cat $SRCDIR/slack-required.${PRGNAM} > $PKG/install/slack-required # Build the package: cd $PKG makepkg --linkadd y --chown n $OUTPUT/${PRGNAM}-${VERSION}-${ARCH}-${BUILD}${TAG}.${PKGTYPE:-txz} 2>&1 | tee $OUTPUT/makepkg-${PRGNAM}.log cd $OUTPUT md5sum ${PRGNAM}-${VERSION}-${ARCH}-${BUILD}${TAG}.${PKGTYPE:-txz} > ${PRGNAM}-${VERSION}-${ARCH}-${BUILD}${TAG}.${PKGTYPE:-txz}.md5 cd - cat $PKG/install/slack-desc | grep "^${PRGNAM}" > $OUTPUT/${PRGNAM}-${VERSION}-${ARCH}-${BUILD}${TAG}.txt #cat $PKG/install/slack-required > $OUTPUT/${PRGNAM}-${VERSION}-${ARCH}-${BUILD}${TAG}.dep # Restore the original umask: umask ${_UMASK_}