summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Schwartz2019-11-22 01:19:46 -0500
committerEli Schwartz2019-11-22 01:28:13 -0500
commit11233000db4048bf82e95efd81a34c9694824f1e (patch)
treedea20e966eebcdfadfc877f48f82253660f04c5a
parent78149a1199946b0da0c6bd9acca94346dc839da3 (diff)
downloadaur-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--.SRCINFO48
-rw-r--r--PKGBUILD62
-rwxr-xr-xcalibre-alternatives.sh62
-rw-r--r--calibre-common-git.install4
-rw-r--r--calibre-git.install7
5 files changed, 138 insertions, 45 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 22aaf8de645b..a21025e5d093 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -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
diff --git a/PKGBUILD b/PKGBUILD
index 21b21e0e57e2..2d6135a5ddf2 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -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
+}