summaryrefslogtreecommitdiff
blob: 1bbe463b40421aef6150826e53ab7cf774d2c25c (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
# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI=5

PYTHON_COMPAT=( python2_7 )

inherit distutils-r1 user

DESCRIPTION="Tools for parsing Mediawiki content to other formats"
HOMEPAGE="http://code.pediapress.com/code/ https://pypi.python.org/pypi/mwlib https://github.com/pediapress/mwlib/"
SRC_URI="https://github.com/pediapress/mwlib/archive/${PV}.tar.gz -> ${P}.tar.gz"

LICENSE="BSD"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="doc server test"

RDEPEND="dev-python/lxml[${PYTHON_USEDEP}]
	>=dev-python/odfpy-0.9[${PYTHON_USEDEP}]
	<dev-python/odfpy-0.10[${PYTHON_USEDEP}]
	>=dev-python/pyPdf-1.12[${PYTHON_USEDEP}]
	>=dev-python/pyparsing-1.5.5[${PYTHON_USEDEP}]
	<dev-python/pyparsing-1.6[${PYTHON_USEDEP}]
	>=dev-python/timelib-0.2[${PYTHON_USEDEP}]
	virtual/latex-base
	>=dev-python/simplejson-2.3[${PYTHON_USEDEP}]
	dev-python/gevent[${PYTHON_USEDEP}]
	>=dev-python/bottle-0.10[${PYTHON_USEDEP}]
	>=dev-python/apipkg-1.2[${PYTHON_USEDEP}]
	>=dev-python/qserve-0.2.7[${PYTHON_USEDEP}]
	dev-python/roman[${PYTHON_USEDEP}]
	>=dev-python/py-1.4[${PYTHON_USEDEP}]
	dev-python/sqlite3dbm[${PYTHON_USEDEP}]
	dev-python/pillow[${PYTHON_USEDEP}]
	server? ( app-admin/sudo )"
DEPEND="${RDEPEND}
	dev-python/setuptools[${PYTHON_USEDEP}]
	app-arch/unzip
	dev-util/re2c
	dev-python/cython[${PYTHON_USEDEP}]
	doc? ( dev-python/sphinx[${PYTHON_USEDEP}] )
	test? ( >=dev-python/wsgiintercept-0.6[${PYTHON_USEDEP}] )"

# TODO: requires ploticus to generate timelines

DOCS=(changelog.rst)

pkg_setup() {
	if use server ;  then
		enewgroup mwlib
		enewuser mwlib -1 -1 -1 mwlib
	fi
}

python_prepare_all() {
	# mwlib.apipkg is actually used.
	sed -e 's/, "apipkg"//' -i setup.py || die

	# Execute odflint script.
	sed \
		-e "/def _get_odflint_module():/,/odflint =	_get_odflint_module()/d" \
		-e "s/odflint.lint(path)/os.system('odflint %s' % path)/" \
		-i tests/test_odfwriter.py || die

	# Disable test which requires installed mw-zip or mw-render script
	# which don't get generated in distutils_install_for_testing for some reason
	rm -f tests/test_{nuwiki,redirect,render,zipwiki}.py || die

	distutils-r1_python_prepare_all
}

python_compile() {
	if [[ ${EPYTHON} == python2* ]] ; then
		local CFLAGS="${CFLAGS} -fno-strict-aliasing"
		export CFLAGS
	fi

	distutils-r1_python_compile
}

python_compile_all() {
	use doc && emake -C docs html
}

python_test() {
	distutils_install_for_testing
	PATH="${TEST_DIR}/scripts:${PATH}" py.test || die
}

python_install_all() {
	use doc && local HTML_DOCS=( docs/_build/html/. )
	distutils-r1_python_install_all

	if use server ; then
		keepdir /var/log/mwlib
		keepdir /var/cache/mwlib

		fowners mwlib:mwlib /var/log/mwlib /var/cache/mwlib
		fperms 0750 /var/log/mwlib /var/cache/mwlib

		insinto /etc/logrotate.d
		for d in mw-qserve nserve ; do
			newins "${FILESDIR}/${d}.logrotate" "${d}"
			newinitd "${FILESDIR}/${d}.initd" "${d}"
			newconfd "${FILESDIR}/${d}.confd" "${d}"
		done

		newins "${FILESDIR}/nslave.logrotate" "nslave"
		newinitd "${FILESDIR}/nslave.initd-r1" "nslave"
		newconfd "${FILESDIR}/nslave.confd-r1" "nslave"

		newins "${FILESDIR}/postman.logrotate" "postman"
		newinitd "${FILESDIR}/postman.initd-r1" "postman"
		newconfd "${FILESDIR}/postman.confd" "postman"

		insinto /etc/cron.d
		newins "${FILESDIR}/mwlib-purge-cache.cron-r1" "mwlib-purge-cache"
	else
		rm "${D}"/usr/bin/{mw-qserve,nserve,nslave,postman}* || die "removing binaries failed"
	fi
}

pkg_postinst() {
	elog "Please enable required image formats for dev-python/pillow"
	if use server ; then
		elog "A cronjob to cleanup the cache files got installed to"
		elog "  /etc/cron.d/mwlib-purge-cache"
		elog "Default parameters are to clean every 24h, adjust it to your needs."
	fi
}