summaryrefslogtreecommitdiff
path: root/libre/calibre-libre
diff options
context:
space:
mode:
Diffstat (limited to 'libre/calibre-libre')
-rw-r--r--libre/calibre-libre/PKGBUILD74
-rwxr-xr-xlibre/calibre-libre/calibre-mount-helper28
-rw-r--r--libre/calibre-libre/calibre.install12
-rw-r--r--libre/calibre-libre/desktop_integration.patch123
4 files changed, 237 insertions, 0 deletions
diff --git a/libre/calibre-libre/PKGBUILD b/libre/calibre-libre/PKGBUILD
new file mode 100644
index 000000000..c56a3c631
--- /dev/null
+++ b/libre/calibre-libre/PKGBUILD
@@ -0,0 +1,74 @@
+# $Id: PKGBUILD 68373 2012-03-23 10:53:05Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Petrov Roman <nwhisper@gmail.com>
+# Contributor: Andrea Fagiani <andfagiani _at_ gmail dot com>
+
+_pkgname=calibre
+pkgname=calibre-libre
+pkgver=0.8.45
+pkgrel=1
+pkgdesc="Ebook management application"
+arch=('i686' 'x86_64' 'mips64el')
+url="http://calibre-ebook.com/"
+license=('GPL3')
+depends=('python2-dateutil' 'python2-cssutils' 'python2-cherrypy'
+ 'python-mechanize' 'podofo' 'libwmf' 'python-beautifulsoup'
+ 'imagemagick' 'poppler-qt' 'chmlib' 'python2-lxml' 'libusb'
+ 'python-imaging' 'shared-mime-info' 'python-dnspython'
+ 'python2-pyqt' 'icu')
+makedepends=('python2-pycountry')
+optdepends=('ipython2: to use calibre-debug')
+install=calibre.install
+source=("http://downloads.sourceforge.net/${_pkgname}/${_pkgname}-${pkgver}.tar.xz"
+ 'desktop_integration.patch'
+ 'calibre-mount-helper')
+md5sums=('005d5d9a0128f9f56493428aad176ee2'
+ 'c7eaa8ed3d2b0a09345aecffa1402ff4'
+ '675cd87d41342119827ef706055491e7')
+
+build() {
+ cd "${srcdir}/${_pkgname}"
+
+ #rm -rf src/{cherrypy,pyPdf}
+ rm -rf src/cherrypy
+ sed -i -e "s/ldflags = shlex.split(ldflags)/ldflags = shlex.split(ldflags) + ['-fPIC']/" setup/extensions.py
+ sed -i -e 's:\(#!/usr/bin/env[ ]\+python$\|#!/usr/bin/python$\):\12:g' \
+ $(find . -regex ".*.py\|.*.recipe")
+
+ python2 setup.py build
+# python2 setup.py resources
+ python2 setup.py translations
+}
+
+package() {
+ cd "${srcdir}/${_pkgname}"
+
+ patch -Np1 -i "${srcdir}/desktop_integration.patch"
+
+ # More on desktop integration (e.g. enforce arch defaults)
+ sed -i -e "/self.create_uninstaller()/,/os.rmdir(config_dir)/d" \
+ -e "s|self.opts.staging_sharedir, 'man/man1'|self.opts.staging_root, 'usr/share/man/man1'|" \
+ -e "s|manpath, prog+'.1'+__appname__+'.bz2'|manpath, prog+'.1'+'.bz2'|" \
+ -e "s|old_udev = '/etc|old_udev = '${pkgdir}/etc|" \
+ -e "s/^Name=calibre/Name=Calibre/g" src/calibre/linux.py
+
+ # Fix the environment module location
+ sed -i -e "s|(prefix=.*)|(prefix='$pkgdir/usr')|g" setup/install.py
+
+ install -d "${pkgdir}/usr/lib/python2.7/site-packages"
+ python2 setup.py install --root="${pkgdir}" --prefix=/usr \
+ --staging-bindir="${pkgdir}/usr/bin" \
+ --staging-libdir="${pkgdir}/usr/lib" \
+ --staging-sharedir="${pkgdir}/usr/share"
+
+ find "${pkgdir}" -type d -empty -delete
+
+ # Decompress the man pages so makepkg will do it for us.
+ for decom in "${pkgdir}"/usr/share/man/man1/*.bz2; do
+ bzip2 -d "${decom}"
+ done
+
+ # See http://lwn.net/SubscriberLink/465311/7c299471a5399167/
+ rm -rf ${pkgdir}/usr/bin/calibre-mount-helper
+ install -m 755 ${srcdir}/calibre-mount-helper "${pkgdir}/usr/bin"
+}
diff --git a/libre/calibre-libre/calibre-mount-helper b/libre/calibre-libre/calibre-mount-helper
new file mode 100755
index 000000000..00cac4270
--- /dev/null
+++ b/libre/calibre-libre/calibre-mount-helper
@@ -0,0 +1,28 @@
+#!/bin/sh -e
+# Replacement for upstream mount helper using udisks/eject
+# (C) 2010 Martin Pitt <mpitt@debian.org>
+
+ACTION="$1"
+DEV="$2"
+
+case "$ACTION" in
+ mount)
+ udisks --mount "$DEV"
+
+ # check if mount worked. If not, fail
+ # udisks does return 0 even if mount failed
+ mount | grep -q "$DEV" || exit 0
+ ;;
+
+ eject)
+ eject "$DEV"
+ ;;
+
+ cleanup)
+ ;;
+
+ *)
+ echo "unknown action" >&2
+ exit 1
+esac
+
diff --git a/libre/calibre-libre/calibre.install b/libre/calibre-libre/calibre.install
new file mode 100644
index 000000000..6210bd0ab
--- /dev/null
+++ b/libre/calibre-libre/calibre.install
@@ -0,0 +1,12 @@
+post_install() {
+ update-desktop-database -q
+ update-mime-database usr/share/mime &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/libre/calibre-libre/desktop_integration.patch b/libre/calibre-libre/desktop_integration.patch
new file mode 100644
index 000000000..73037b6a7
--- /dev/null
+++ b/libre/calibre-libre/desktop_integration.patch
@@ -0,0 +1,123 @@
+--- a/src/calibre/linux.py 2012-03-16 03:42:45.000000000 +0100
++++ b/src/calibre/linux.py 2012-03-21 08:06:35.000000000 +0100
+@@ -140,18 +140,6 @@
+ self.install_man_pages()
+ if islinux or isbsd:
+ self.setup_desktop_integration()
+- self.create_uninstaller()
+-
+- from calibre.utils.config import config_dir
+- if os.path.exists(config_dir):
+- os.chdir(config_dir)
+- if islinux or isbsd:
+- for f in os.listdir('.'):
+- if os.stat(f).st_uid == 0:
+- import shutil
+- shutil.rmtree(f) if os.path.isdir(f) else os.unlink(f)
+- if os.stat(config_dir).st_uid == 0:
+- os.rmdir(config_dir)
+
+ if warn is None and self.warnings:
+ self.info('There were %d warnings'%len(self.warnings))
+@@ -198,7 +186,7 @@
+ if isnetbsd:
+ f = os.path.join(self.opts.staging_root, 'share/bash_completion.d/calibre')
+ else:
+- f = os.path.join(self.opts.staging_etc, 'bash_completion.d/calibre')
++ f = os.path.join(self.opts.staging_root, 'usr/share/bash-completion/completions/calibre')
+ if not os.path.exists(os.path.dirname(f)):
+ os.makedirs(os.path.dirname(f))
+ self.manifest.append(f)
+@@ -305,7 +293,7 @@
+ if isbsd:
+ manpath = os.path.join(self.opts.staging_root, 'man/man1')
+ else:
+- manpath = os.path.join(self.opts.staging_sharedir, 'man/man1')
++ manpath = os.path.join(self.opts.staging_root, 'usr/share/man/man1')
+ if not os.path.exists(manpath):
+ os.makedirs(manpath)
+ self.info('Installing MAN pages...')
+@@ -321,7 +309,7 @@
+ if isbsd:
+ manfile = os.path.join(manpath, prog+'.1')
+ else:
+- manfile = os.path.join(manpath, prog+'.1'+__appname__+'.bz2')
++ manfile = os.path.join(manpath, prog+'.1'+'.bz2')
+ self.info('\tInstalling MAN page for', prog)
+ open(manfile, 'wb').write(raw)
+ self.manifest.append(manfile)
+@@ -339,51 +327,39 @@
+
+ with TemporaryDirectory() as tdir:
+ with CurrentDir(tdir):
+- render_img('mimetypes/lrf.png', 'calibre-lrf.png')
+- check_call('xdg-icon-resource install --noupdate --context mimetypes --size 128 calibre-lrf.png application-lrf', shell=True)
+- self.icon_resources.append(('mimetypes', 'application-lrf', '128'))
+- check_call('xdg-icon-resource install --noupdate --context mimetypes --size 128 calibre-lrf.png text-lrs', shell=True)
+- self.icon_resources.append(('mimetypes', 'application-lrs',
+- '128'))
+- render_img('lt.png', 'calibre-gui.png')
+- check_call('xdg-icon-resource install --noupdate --size 128 calibre-gui.png calibre-gui', shell=True)
+- self.icon_resources.append(('apps', 'calibre-gui', '128'))
+- render_img('viewer.png', 'calibre-viewer.png')
+- check_call('xdg-icon-resource install --size 128 calibre-viewer.png calibre-viewer', shell=True)
+- self.icon_resources.append(('apps', 'calibre-viewer', '128'))
++ dir = os.path.join(self.opts.staging_sharedir,'../pixmaps')
++ os.mkdir(dir)
++ render_img('mimetypes/lrf.png', os.path.join(dir,'calibre-lrf.png'))
++ render_img('lt.png', os.path.join(dir, 'calibre-gui.png'))
++ render_img('viewer.png', os.path.join(dir, 'calibre-viewer.png'))
+
+ mimetypes = set([])
+ for x in all_input_formats():
+ mt = guess_type('dummy.'+x)[0]
+- if mt and 'chemical' not in mt and 'ctc-posml' not in mt:
++ if mt and 'chemical' not in mt and 'text' not in mt and 'pdf' not in mt and 'xhtml' not in mt:
+ mimetypes.add(mt)
+
+ def write_mimetypes(f):
+ f.write('MimeType=%s;\n'%';'.join(mimetypes))
+
+- f = open('calibre-lrfviewer.desktop', 'wb')
++ dir = os.path.join(self.opts.staging_sharedir,'../applications')
++ os.mkdir(dir)
++ f = open(os.path.join(dir, 'calibre-lrfviewer.desktop'), 'wb')
+ f.write(VIEWER)
+ f.close()
+- f = open('calibre-ebook-viewer.desktop', 'wb')
++ f = open(os.path.join(dir, 'calibre-ebook-viewer.desktop'), 'wb')
+ f.write(EVIEWER)
+ write_mimetypes(f)
+ f.close()
+- f = open('calibre-gui.desktop', 'wb')
++ f = open(os.path.join(dir, 'calibre-gui.desktop'), 'wb')
+ f.write(GUI)
+ write_mimetypes(f)
+ f.close()
+- des = ('calibre-gui.desktop', 'calibre-lrfviewer.desktop',
+- 'calibre-ebook-viewer.desktop')
+- for x in des:
+- cmd = ['xdg-desktop-menu', 'install', '--noupdate', './'+x]
+- check_call(' '.join(cmd), shell=True)
+- self.menu_resources.append(x)
+- check_call(['xdg-desktop-menu', 'forceupdate'])
+- f = open('calibre-mimetypes', 'wb')
++ dir = os.path.join(self.opts.staging_sharedir,'../mime/packages/')
++ os.makedirs(dir)
++ f = open(os.path.join(dir, 'calibre.xml'), 'wb')
+ f.write(MIME)
+ f.close()
+- self.mime_resources.append('calibre-mimetypes')
+- check_call('xdg-mime install ./calibre-mimetypes', shell=True)
+ except Exception:
+ if self.opts.fatal_errors:
+ raise
+@@ -521,7 +497,7 @@
+ [Desktop Entry]
+ Version=1.0
+ Type=Application
+-Name=calibre
++Name=Calibre
+ GenericName=E-book library management
+ Comment=E-book library management: Convert, view, share, catalogue all your e-books
+ TryExec=calibre