summaryrefslogtreecommitdiff
path: root/libre/calibre3/PKGBUILD
blob: a20ecaad8cb2141af046f30d43fac88a553a7df3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# Maintainer (arch): Jelle van der Waa <jelle@vdwaa.nl>
# Maintainer (arch): Eli Schwartz <eschwartz@archlinux.org>
# Contributor: Daniel Wallace <danielwallace at gtmanfred dot com>
# Contributor: Giovanni Scafora <giovanni@archlinux.org>
# Contributor: Petrov Roman <nwhisper@gmail.com>
# Contributor: Andrea Fagiani <andfagiani _at_ gmail dot com>
# Contributor: Larry Hajali <larryhaja@gmail.com>
# Maintainer: Andreas Grapentin <andreas@grapentin.org>
# Contributor: David P.<megver83@parabola.nu>
# Contributor: Jesús E.<heckyel@parabola.nu>
# Contributor: Isaac David <isacdaavid@at@isacdaavid@dot@info>
# Contributor: David Palma <dbpalma9@gmail.com>


# parabola changes and rationale:
#  - removed de-compression engine for rar archives
#  - build without qt5-webengine
#  - frozen at v3.48.0 - v4 removed support for webkit


pkgname=calibre3
_srcname=calibre
pkgver=3.48.0
pkgrel=1
pkgrel+=.parabola3
pkgdesc="Ebook management application"
arch=('x86_64')
arch+=('i686' 'armv7h')
url="https://calibre-ebook.com/"
license=('GPL3')

_py_deps=('apsw' 'beautifulsoup4' 'cssselect' 'css-parser' 'dateutil' 'dbus' 'dnspython' 'dukpy'
          'feedparser' 'html2text' 'html5-parser' 'lxml' 'markdown' 'mechanize' 'msgpack'
          'netifaces' 'pillow' 'psutil' 'pygments' 'pyqt5' 'regex')
depends=('chmlib' 'hunspell' 'jxrlib' 'libmtp' 'libusbx' 'libwmf' 'mathjax2' 'mtdev' 'optipng'
         'podofo' "${_py_deps[@]/#/python2-}" 'qt5-svg' 'qt5-webkit' 'udisks2')
depends+=('libicui18n.so' 'libicuuc.so')
makedepends=('qt5-x11extras' 'rapydscript-ng' 'sip' 'xdg-utils')
checkdepends=('xorg-server-xvfb')
optdepends=('ipython2: to use calibre-debug'
            'poppler: required for converting pdf to html')
replaces=('calibre')
source=("https://download.calibre-ebook.com/${pkgver}/${_srcname}-${pkgver}.tar.xz"
        "https://calibre-ebook.com/signatures/${_srcname}-${pkgver}.tar.xz.sig"
        'libre.patch'
        "devendor-hunspell.patch"
        "update-fontconfig-db-qt5.15.patch")

sha256sums=('024528f0f913c78e121fb34beb3dae8dba3686f2334422c6450808796042950c'
            'SKIP'
            '00c352f4a5b49da43f38e495e3a2d82144f753a3d797cec8b5870b872137a70b'
            'ff9be7c1773c18ccf4acaff5598ad29cf1477a1d33ddde85184d97f9a44ace1a'
            'ffd7aa6dab196420843064cd29454b56aa8c8bd014af3adc734b4f45f3c3baa7')
b2sums=('9a7fae20487ae93120cfdc06a312a42d54d68935fdd2bc18dc41be5f8d359c79eae24e0409ba8e7f4df85e2f073f80ce6bab56cba0638cead6693600fa93cb41'
        'SKIP'
        'ce3d88839da2e838a4ed0bf141cfb1fd84cabe49537c1d8c98ecb1e14c6af2b050b4ce097d2a69cf9c80c6b1ccb89c01c3268d29391639207adf1dc1daa86069'
        '29a3597676fd8a26d286363ba5002d2c439faba6c8cd3d6c98fd10f8aa3cd41021dbda501f445ed94759dc17561c945488822ba4f9e17334481d3261a973787c'
        '14038b4ea5f87d9a8f645b5af8342da90337202b0247b07dccd8995f55bb965b5c2bbdddc24b55b6e92e899f91d5dec19c10ddea8fcc42c8ed3d74ee90eb09d6')
validpgpkeys=('3CE1780F78DD88DF45194FD706BC317B515ACE7C') # Kovid Goyal


prepare()
{
  cd "${srcdir}"/${_srcname}-${pkgver}

  # fix freedom issues
  rm -v imgsrc/mimetypes/rar.svg
  rm -v src/calibre/ebooks/metadata/rar.py
  rm -v src/calibre/utils/unrar.py
  rm -v resources/images/mimetypes/{cbr,rar}.png
  patch -fNp1 -i "$srcdir/libre.patch"

  # Desktop integration (e.g. enforce arch defaults)
  sed -e "/import config_dir/,/os.rmdir(config_dir)/d" \
      -e "s/'ctc-posml'/'text' not in mt and 'pdf' not in mt and 'xhtml'/" \
      -e "s/^Name=calibre/Name=Calibre/g" \
      -i  src/calibre/linux.py

  # cherry-picked bits of python2-backports.functools_lru_cache
  #   needed for frozen builds + beautifulsoup4
  #   see: https://github.com/kovidgoyal/calibre/commit/b177f0a1096b4fdabd8772dd9edc66662a69e683#commitcomment-33169700
  rm -r src/backports

  # de-vendor hunspell (back-ported from 4.x)
  #   see: https://github.com/kovidgoyal/calibre/commit/420e9e121b67db197e0c5d0bf23b92c174f2678f.patch
  patch -p1 -i ../devendor-hunspell.patch

  # Update fontconfig database for Qt 5.15 (back-ported from 4.x)
  #   see: https://github.com/kovidgoyal/calibre/commit/db7007a25faefb0cc90e64dda1c0793393b9512d.patch
  patch -p1 -i ../update-fontconfig-db-qt5.15.patch

  cd resources

  # Remove unneeded files
  rm ${_srcname}-portable.* mozilla-ca-certs.pem

  # tarball cache from calibre 4.x
  rm editor.js viewer.{js,html}

  # use system mathjax
  rm -r mathjax
}

build()
{
  cd "${srcdir}"/${_srcname}-${pkgver}

  LANG='en_US.UTF-8' python2 setup.py build
  LANG='en_US.UTF-8' python2 setup.py gui
  LANG='en_US.UTF-8' python2 setup.py mathjax --path-to-mathjax /usr/share/mathjax2 --system-mathjax
  LANG='en_US.UTF-8' python2 setup.py rapydscript
}

check()
{
  local is_network_enabled=1

  # tests require networking
  (( ${is_network_enabled} )) || return 0

  # 2 failing tests on armv7h
  [[ $CARCH = arm* ]] && return 0

  cd "${srcdir}"/${_srcname}-${pkgver}

  # without xvfb-run this fails with much "Control socket failed to recv(), resetting"
  # ERROR: test_websocket_perf (calibre.srv.tests.web_sockets.WebSocketTest)
  LANG='en_US.UTF-8' xvfb-run python2 setup.py test
}

package()
{
  cd "${srcdir}"/${_srcname}-${pkgver}

  # If this directory doesn'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" \
    --prefix=/usr

  cp -a man-pages/ "${pkgdir}/usr/share/man"

  # not needed at runtime
  rm -r "${pkgdir}"/usr/share/calibre/rapydscript/

  # Compiling bytecode FS#33392
  # This is kind of ugly but removes traces of the build root.
  while read -rd '' _file; do
    _destdir="$(dirname "${_file#${pkgdir}}")"
    python2 -m compileall -d "${_destdir}" "${_file}"
    python2 -O -m compileall -d "${_destdir}" "${_file}"
  done < <(find "${pkgdir}"/usr/lib/ -name '*.py' -print0)
}