summaryrefslogtreecommitdiff
path: root/libre/calibre/PKGBUILD
blob: 4e47e51f2c2bdef69178da0c8ff05f6181e70767 (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
# Maintainer (Arch): Jelle van der Waa <jelle@vdwaa.nl>
# Maintainer (Arch): Eli Schwartz <eschwartz@archlinux.org>
# Contributor (Arch): Daniel Wallace <danielwallace at gtmanfred dot com>
# Contributor (Arch): Giovanni Scafora <giovanni@archlinux.org>
# Contributor (Arch): Petrov Roman <nwhisper@gmail.com>
# Contributor (Arch): Andrea Fagiani <andfagiani _at_ gmail dot com>
# Contributor (Arch): 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 decrompession engine for rar archives
#  - frozen at v3.48.0 - v4.x and above removed support for webkit

pkgname=calibre
pkgver=3.48.0
pkgrel=1
pkgrel+=.parabola3
pkgdesc="Ebook management application"
pkgdesc+=", without nonfree RAR support, without webengine"
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')
source=("https://download.calibre-ebook.com/${pkgver}/calibre-${pkgver}.tar.xz"
        "https://calibre-ebook.com/signatures/${pkgname}-${pkgver}.tar.xz.sig"
        'libre.patch'
        "https://github.com/kovidgoyal/calibre/commit/420e9e121b67db197e0c5d0bf23b92c174f2678f.patch")
sha256sums=('024528f0f913c78e121fb34beb3dae8dba3686f2334422c6450808796042950c'
            'SKIP'
            '00c352f4a5b49da43f38e495e3a2d82144f753a3d797cec8b5870b872137a70b'
            'ff9be7c1773c18ccf4acaff5598ad29cf1477a1d33ddde85184d97f9a44ace1a')
b2sums=('9a7fae20487ae93120cfdc06a312a42d54d68935fdd2bc18dc41be5f8d359c79eae24e0409ba8e7f4df85e2f073f80ce6bab56cba0638cead6693600fa93cb41'
        'SKIP'
        'SKIP'
        '29a3597676fd8a26d286363ba5002d2c439faba6c8cd3d6c98fd10f8aa3cd41021dbda501f445ed94759dc17561c945488822ba4f9e17334481d3261a973787c')
validpgpkeys=('3CE1780F78DD88DF45194FD706BC317B515ACE7C') # Kovid Goyal (New longer key) <kovid@kovidgoyal.net>

prepare(){
  cd "${pkgname}-${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)
  patch -p1 -i ../420e9e121b67db197e0c5d0bf23b92c174f2678f.patch

  cd resources

  # Remove unneeded files
  rm ${pkgname}-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 "${pkgname}-${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() {
  cd "${pkgname}-${pkgver}"

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

  # 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 "${pkgname}-${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)
}