summaryrefslogtreecommitdiff
blob: b75842a087c935e432785623d90b68fce16b9a21 (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
# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/app-text/calibre/calibre-0.6.26.ebuild,v 1.2 2009/12/08 07:44:28 zmedico Exp $

EAPI=2
NEED_PYTHON=2.6

inherit python distutils eutils fdo-mime bash-completion

DESCRIPTION="Ebook management application."
HOMEPAGE="http://calibre-ebook.com/"
SRC_URI="http://calibre-ebook.googlecode.com/files/$P.tar.gz"

LICENSE="GPL-2"

KEYWORDS="~amd64 ~x86"

SLOT="0"

IUSE=""

# libusb-compat is untested
SHARED_DEPEND=">=dev-lang/python-2.6[sqlite]
	>=dev-python/setuptools-0.6_rc5
	>=dev-python/imaging-1.1.6
	>=dev-libs/libusb-0.1.12:0
	>=dev-python/PyQt4-4.5[X,svg,webkit]
	>=dev-python/mechanize-0.1.11
	>=media-gfx/imagemagick-6.3.5
	>=x11-misc/xdg-utils-1.0.2
	>=dev-python/dbus-python-0.82.2
	>=dev-python/lxml-2.1.5
	>=dev-python/python-dateutil-1.4.1
	>=dev-python/beautifulsoup-3.0.5
	>=dev-python/dnspython-1.6.0
	>=virtual/poppler-0.12.0
	>=sys-apps/help2man-1.36.4
	app-text/podofo"

RDEPEND="$SHARED_DEPEND
	>=dev-python/reportlab-2.1"

DEPEND="$SHARED_DEPEND
	dev-python/setuptools
	>=gnome-base/librsvg-2.0.0
	>=x11-misc/xdg-utils-1.0.2-r2
	sys-apps/help2man"

S=$WORKDIR/$PN

src_prepare() {
	# Avoid sandbox violation in /usr/share/gnome/apps when linux.py
	# calls xdg-* (bug #258938).
	sed -e "s:'xdg-desktop-menu', 'install':'xdg-desktop-menu', 'install', '--mode', 'user':" \
		-e "s:xdg-icon-resource install:xdg-icon-resource install --mode user:" \
		-e "s:xdg-mime install:xdg-mime install --mode user:" \
		-e "s:old_udev = '/etc:old_udev = '${D}etc:" \
		-i src/calibre/linux.py || die "sed'ing in the IMAGE path failed"

	# Disable unnecessary privilege dropping for bug #287067.
	sed -e "s:if os.geteuid() == 0:if False and os.geteuid() == 0:" \
		-i setup/install.py || die "sed'ing in the IMAGE path failed"

	distutils_src_prepare
}

src_install() {

	# Bypass kbuildsycoca and update-mime-database in order to
	# avoid sandbox violations if xdg-mime tries to call them.
	cat - > "${T}/kbuildsycoca" <<-EOF
	#!$BASH
	exit 0
	EOF

	cp "${T}"/{kbuildsycoca,update-mime-database}
	chmod +x "${T}"/{kbuildsycoca,update-mime-database}

	# --bindir and --sharedir don't seem to work.
	# Pass them in anyway so we'll know when they are fixed.
	# Unset DISPLAY in order to prevent xdg-mime from triggering a sandbox
	# violation with kbuildsycoca as in bug #287067, comment #13.
	export -n DISPLAY

	# Bug #295672 - Aavoid sandbox violation in ~/.config by forcing
	# variables to point to our fake temporary $HOME.
	export XDG_CONFIG_HOME="$HOME/.config"
	export CALIBRE_CONFIG_DIRECTORY="$XDG_CONFIG_HOME/calibre"
	mkdir -p "$XDG_CONFIG_HOME" "$CALIBRE_CONFIG_DIRECTORY"

	PATH=${T}:${PATH} PYTHONPATH=${S}/src${PYTHONPATH:+:}${PYTHONPATH} \
		distutils_src_install --bindir="${D}usr/bin" --sharedir="${D}usr/share"

	grep -rlZ "${D}" "${D}" | xargs -0 sed -e "s:${D}:/:g" -i ||
		die "failed to fix harcoded \$D in paths"

	# Python modules are no longer installed in
	# site-packages, so remove empty dirs.
	find "${D}$(python_get_libdir)" -type d -empty -delete

	# This code may fail if behavior of --root, --bindir or
	# --sharedir changes in the future.
	dodir /usr/lib
	mv "${D}lib/calibre" "${D}usr/lib/" ||
		die "failed to move lib dir"
	find "${D}"lib -type d -empty -delete

	dodir /usr/bin
	mv "${D}bin/"* "${D}usr/bin/" ||
		die "failed to move bin dir"
	find "${D}"bin -type d -empty -delete

	dodir /usr/share
	mv "${D}share/"* "${D}usr/share/" ||
		die "failed to move share dir"
	find "${D}"share -type d -empty -delete

	# The menu entries end up here due to '--mode user' being added to
	# xdg-* options in src_prepare.
	dodir /usr/share/mime/packages
	chmod -fR a+rX,u+w,g-w,o-w "$HOME"/.local
	mv "$HOME"/.local/share/mime/packages/* "$D"usr/share/mime/packages/ ||
		die "failed to register mime types"
	dodir /usr/share/icons
	mv "$HOME"/.local/share/icons/* "$D"usr/share/icons/ ||
		die "failed to install icon files"
	domenu "$HOME"/.local/share/applications/*.desktop ||
		die "failed to install .desktop menu files"

	dobashcompletion "$D"etc/bash_completion.d/calibre
	rm -r "${D}"etc/bash_completion.d
	find "${D}"etc -type d -empty -delete
}

pkg_postinst() {
	fdo-mime_desktop_database_update
	fdo-mime_mime_database_update
	distutils_pkg_postinst
	bash-completion_pkg_postinst
}