We're not supposed to use ROOT in ebuild functions (see the discussion
in
f3893ec9, dev-python/flask-cors/flask-cors-9999.ebuild: Use local
intersphinx, 2014-09-02). I had been using it to build against the
objects.inv from that ROOT, but we're actually supposed to build
against the local (non-ROOT) copy [1]:
ROOT isn't used for library dependencies. When building, libraries,
headers etc. on / have to be used. Cross-compiling etc is done by
configuring the toolchain correctly, not by hacking ebuilds in a way
that breaks binary packages.
I'm also using equery to list the python-docs files (on /), to avoid
hard-coding /usr/share/doc"/python-docs-*/html. equery knows what was
installed, and I really don't care where it is, so long as I can find
the objects.inv (and so long as that's the directory with the HTML
docs too).
Finally, the python-docs dependencies make sure we accept any of the
python-docs versions that install objects.inv [2]. Ian Delaney bumped
versions to -r1 so we could determine if objects.inv was installed,
and Ian Stakenvicius pointed out the slotted approach to the disjoint
dependency.
[1]: https://bugs.gentoo.org/show_bug.cgi?id=258125#c0
[2]: https://bugs.gentoo.org/show_bug.cgi?id=521768
Thanks-to: Ian Delaney <idella4@gentoo.org>
Thanks-to: Ian Stakenvicius <axs@gentoo.org>
dev-python/setuptools[${PYTHON_USEDEP}]
doc? (
${RDEPEND}
- dev-python/python-docs[${PYTHON_USEDEP}]
+ app-portage/gentoolkit
+ || (
+ >=dev-python/python-docs-3.4.0-r1
+ >=dev-python/python-docs-3.3.5-r1:3.3
+ >=dev-python/python-docs-2.7.6-r1:2.7
+ )
dev-python/sphinx_rtd_theme[${PYTHON_USEDEP}]
)
test? (
python_prepare_all() {
if use doc; then
- local PYTHON_DOC_INVENTORIES=$(ls "${EROOT}usr/share/doc"/python-docs-*/html/objects.inv)
- local PYTHON_DOC_INVENTORY="${PYTHON_DOC_INVENTORIES##*
-}"
- local PYTHON_DOC="${PYTHON_DOC_INVENTORY##${ROOT%/}}"
- PYTHON_DOC="${PYTHON_DOC%%objects.inv}"
- if [[ -z "${PYTHON_DOC}" ]]
+ local PYTHON_DOC_INVENTORY=$(equery files python-docs | grep objects.inv | tail -n1)
+ if [[ -z "${PYTHON_DOC_INVENTORY}" ]]
then
- die "python-docs not found in ${EROOT}usr/share/doc"
+ die "objects.inv not found in python-docs"
fi
+ PYTHON_DOC="${PYTHON_DOC_INVENTORY%%objects.inv}"
sed -i "s|'http://docs.python.org/': None|'${PYTHON_DOC}': '${PYTHON_DOC_INVENTORY}'|" docs/conf.py || die
fi
distutils-r1_python_prepare_all