diff options
author | Eli Schwartz | 2019-11-22 01:19:46 -0500 |
---|---|---|
committer | Eli Schwartz | 2019-11-22 01:28:13 -0500 |
commit | 11233000db4048bf82e95efd81a34c9694824f1e (patch) | |
tree | dea20e966eebcdfadfc877f48f82253660f04c5a | |
parent | 78149a1199946b0da0c6bd9acca94346dc839da3 (diff) | |
download | aur-11233000db4048bf82e95efd81a34c9694824f1e.tar.gz |
upgpkg: calibre-git 4.4.0.r3.g8d07d6bf55-1
Better split package that lets either/or python2 / python3 be installed.
Comes with an 'alternatives' script which selects which one to use,
because pacman doesn't have this builtin (yet). Common files are stored
in a '-common' split package.
-rw-r--r-- | .SRCINFO | 48 | ||||
-rw-r--r-- | PKGBUILD | 62 | ||||
-rwxr-xr-x | calibre-alternatives.sh | 62 | ||||
-rw-r--r-- | calibre-common-git.install | 4 | ||||
-rw-r--r-- | calibre-git.install | 7 |
5 files changed, 138 insertions, 45 deletions
@@ -1,6 +1,6 @@ pkgbase = calibre-git pkgdesc = Ebook management application - pkgver = 3.48.0.r412.g380ccbc2d4 + pkgver = 4.4.0.r3.g8d07d6bf55 pkgrel = 1 url = https://calibre-ebook.com/ arch = i686 @@ -70,29 +70,28 @@ pkgbase = calibre-git depends = podofo depends = qt5-svg depends = udisks2 - optdepends = poppler: required for converting pdf to html source = git+https://github.com/kovidgoyal/calibre.git?signed source = git+https://github.com/kovidgoyal/calibre-translations.git?signed + source = calibre-alternatives.sh source = user-agent-data.json validpgpkeys = 3CE1780F78DD88DF45194FD706BC317B515ACE7C sha256sums = SKIP sha256sums = SKIP + sha256sums = 20dc4ff196423a7c7c8f644cb83fcfe07b4b5a64ba4addeb0750f94cd7aa9e8e sha256sums = d17a1fff7bf441db8d1ec826afd8661352869ec4e5edd2a17f917ef2fbf01043 +pkgname = calibre-common-git + pkgdesc = Ebook management application (common files) + install = calibre-common-git.install + optdepends = poppler: required for converting pdf to html + provides = calibre-common + conflicts = calibre-common + conflicts = calibre<4.4.0.r3.g8d07d6bf55 + pkgname = calibre-git - depends = chmlib - depends = hunspell - depends = icu - depends = jxrlib - depends = libmtp - depends = libusbx - depends = libwmf - depends = mathjax2 - depends = mtdev - depends = optipng - depends = podofo - depends = qt5-svg - depends = udisks2 + pkgdesc = Ebook management application (python2 build) + install = calibre-git.install + depends = calibre-common-git depends = python2-apsw depends = python2-beautifulsoup4 depends = python2-cssselect @@ -115,25 +114,14 @@ pkgname = calibre-git depends = python2-pyqt5 depends = python2-pyqtwebengine depends = python2-regex - optdepends = poppler: required for converting pdf to html optdepends = ipython2: to use calibre-debug provides = calibre conflicts = calibre pkgname = calibre-python3-git - depends = chmlib - depends = hunspell - depends = icu - depends = jxrlib - depends = libmtp - depends = libusbx - depends = libwmf - depends = mathjax2 - depends = mtdev - depends = optipng - depends = podofo - depends = qt5-svg - depends = udisks2 + pkgdesc = Ebook management application (experimental python3 port) + install = calibre-git.install + depends = calibre-common-git depends = python-apsw depends = python-beautifulsoup4 depends = python-cssselect @@ -157,8 +145,6 @@ pkgname = calibre-python3-git depends = python-pyqtwebengine depends = python-regex depends = python-zeroconf - depends = calibre-git - optdepends = poppler: required for converting pdf to html optdepends = ipython: to use calibre-debug provides = calibre-python3 conflicts = calibre-python3 @@ -9,8 +9,8 @@ # All my PKGBUILDs are managed at https://github.com/eli-schwartz/pkgbuilds pkgbase=calibre-git -pkgname=(calibre-git calibre-python3-git) -pkgver=3.48.0.r412.g380ccbc2d4 +pkgname=(calibre-common-git calibre-git calibre-python3-git) +pkgver=4.4.0.r3.g8d07d6bf55 pkgrel=1 pkgdesc="Ebook management application" arch=('i686' 'x86_64') @@ -25,12 +25,13 @@ depends=('chmlib' 'hunspell' 'icu' 'jxrlib' 'libmtp' 'libusbx' 'libwmf' 'mathjax makedepends=('git' "${_py_deps[@]/#/python2-}" "${_py3_deps[@]/#/python-}" 'qt5-x11extras' 'sip' 'xdg-utils' 'rapydscript-ng') #'python2-sphinx') checkdepends=('xorg-server-xvfb') -optdepends=('poppler: required for converting pdf to html') source=("git+https://github.com/kovidgoyal/${pkgbase%-git}.git?signed" "git+https://github.com/kovidgoyal/${pkgbase%-git}-translations.git?signed" + "calibre-alternatives.sh" "user-agent-data.json") sha256sums=('SKIP' 'SKIP' + '20dc4ff196423a7c7c8f644cb83fcfe07b4b5a64ba4addeb0750f94cd7aa9e8e' 'd17a1fff7bf441db8d1ec826afd8661352869ec4e5edd2a17f917ef2fbf01043') validpgpkeys=('3CE1780F78DD88DF45194FD706BC317B515ACE7C') # Kovid Goyal (New longer key) <kovid@kovidgoyal.net> @@ -97,27 +98,55 @@ check() { LANG='en_US.UTF-8' xvfb-run python2 setup.py test } -package_calibre-git() { - depends+=("${_py_deps[@]/#/python2-}") - optdepends+=('ipython2: to use calibre-debug') +package_calibre-common-git() { + pkgdesc+=" (common files)" + optdepends=('poppler: required for converting pdf to html') provides=("${pkgname%-git}") - conflicts=("${pkgname%-git}") - + conflicts=("${pkgname%-git}" "calibre<${pkgver}") + install=calibre-common-git.install cd "${srcdir}/${pkgbase%-git}" # If this directory don't exist, zsh completion won't install. install -d "${pkgdir}/usr/share/zsh/site-functions" - LANG='en_US.UTF-8' python2 setup.py install \ - --staging-root="${pkgdir}/usr" \ + LANG='en_US.UTF-8' python2 setup.py install --staging-root="${pkgdir}/usr" \ --prefix=/usr - rm -r "${pkgdir}"/usr/lib/calibre/calibre/plugins/3/ + + for bin in "${pkgdir}"/usr/bin/*; do + ln -sfT "/usr/lib/calibre/bin/${bin##*/}" "${bin}" + done + + install -Dm755 "${srcdir}"/calibre-alternatives.sh "${pkgdir}"/usr/bin/calibre-alternatives #cp -a man-pages/ "${pkgdir}/usr/share/man" # not needed at runtime rm -r "${pkgdir}"/usr/share/calibre/rapydscript/ + #cleanup overlapping files + rm -r "${pkgdir}"/usr/lib/python2.7 + rm -r "${pkgdir}"/usr/lib/calibre/calibre/plugins/ + find "${pkgdir}" -type f -name '*.py[co]' -delete +} + +package_calibre-git() { + pkgdesc+=" (python2 build)" + depends=('calibre-common-git' "${_py_deps[@]/#/python2-}") + optdepends+=('ipython2: to use calibre-debug') + provides=("${pkgname%-git}") + conflicts=("${pkgname%-git}") + install=calibre-git.install + + cd "${srcdir}/${pkgbase%-git}" + + LANG='en_US.UTF-8' python2 setup.py install \ + --staging-root="${pkgdir}/usr" \ + --prefix=/usr \ + --no-postinstall \ + --bindir=/usr/lib/calibre/bin-py2 \ + --staging-bindir="${pkgdir}/usr/lib/calibre/bin-py2" \ + --staging-sharedir="${srcdir}"/temp + # Compiling bytecode FS#33392 # This is kind of ugly but removes traces of the build root. while read -rd '' _file; do @@ -125,13 +154,18 @@ package_calibre-git() { python2 -m compileall -d "${_destdir}" "${_file}" python2 -O -m compileall -d "${_destdir}" "${_file}" done < <(find "${pkgdir}"/usr/lib/ -name '*.py' -print0) + + find "${pkgdir}"/usr/lib/calibre -name '*.py' -delete + rm -r "${pkgdir}"/usr/lib/calibre/calibre/plugins/3/ } package_calibre-python3-git() { - depends+=("${_py3_deps[@]/#/python-}" 'calibre-git') + pkgdesc+=" (experimental python3 port)" + depends=('calibre-common-git' "${_py3_deps[@]/#/python-}") optdepends+=('ipython: to use calibre-debug') provides=("${pkgname%-git}") conflicts=("${pkgname%-git}") + install=calibre-git.install cd "${srcdir}/${pkgbase%-git}" @@ -139,8 +173,8 @@ package_calibre-python3-git() { --staging-root="${pkgdir}/usr" \ --prefix=/usr \ --no-postinstall \ - --bindir=/opt/calibre-python3 \ - --staging-bindir="${pkgdir}"/opt/calibre-python3 \ + --bindir=/usr/lib/calibre/bin-py3 \ + --staging-bindir="${pkgdir}/usr/lib/calibre/bin-py3" \ --staging-sharedir="${srcdir}"/temp # Compiling bytecode FS#33392 diff --git a/calibre-alternatives.sh b/calibre-alternatives.sh new file mode 100755 index 000000000000..a2327ff046bd --- /dev/null +++ b/calibre-alternatives.sh @@ -0,0 +1,62 @@ +#!/bin/sh + +libdir=/usr/lib/calibre +bindir=/usr/lib/calibre/bin + +die() { + echo "${1}" >&2 + exit 1 +} + +usage() { + cat <<- __EOF__ + usage: calibre-alternatives [help|get] + usage: calibre-alternatives set [2|3] + + Set the default python interpreter for calibre, either python2 or python3. +__EOF__ +} + +get_current() { + currentdir=$(readlink "${libdir}/bin") + echo "${currentdir##*-py}" +} + +find_alternative() { + for i in 2 3; do + if [ -d "${libdir}/bin-py${i}" ]; then + echo "${i}" + return 0 + fi + done + return 1 +} + +set_current() { + alt=${1} + if [ -z "${alt}" ]; then + [ -z "$(get_current)" ] || exit 0 # nothing to do + alt=$(find_alternative) || die "error: no alternatives exist" + fi + + if ! [ $(id -u) = 0 ]; then + die "error: cannot set without being root" + fi + + if [ -d "${libdir}/bin-py${alt}" ]; then + ln -snvf bin-py${alt} "${libdir}/bin" + else + die "alternative '${alt}' does not exist" + fi +} + +case ${1} in + help) + usage;; + ''|get) + get_current;; + set) + shift; set_current "${1}";; + *) + die "invalid option: '${1}'" +esac diff --git a/calibre-common-git.install b/calibre-common-git.install new file mode 100644 index 000000000000..3607d6becd6a --- /dev/null +++ b/calibre-common-git.install @@ -0,0 +1,4 @@ +post_remove() { + rm -f /usr/lib/calibre/bin + rmdir /usr/lib/calibre/ +} diff --git a/calibre-git.install b/calibre-git.install new file mode 100644 index 000000000000..4ce7e56d6b13 --- /dev/null +++ b/calibre-git.install @@ -0,0 +1,7 @@ +post_install() { + calibre-alternatives set +} + +post_upgrade() { + calibre-alternatives set +} |