# This hook automatically finds Sphinx documentation, builds it in html format # and installs it. # # This hook knows about several popular locations in which subdirectory # documentation may be, but in very unusual cases $sphinxRoot directory can be # set explicitly. # # Name of the directory relative to ${doc:-$out}/share/doc is normally also # deduced automatically, but can be overridden with $sphinxOutdir variable. # # Sphinx build system can depend on arbitrary amount of python modules, client # code is responsible for ensuring that all dependencies are present. buildSphinxPhase() { local __sphinxRoot="" o runHook preBuildSphinx if [[ -n "${sphinxRoot:-}" ]] ; then # explicit root if ! [[ -f "${sphinxRoot}/conf.py" ]] ; then echo 2>&1 "$sphinxRoot/conf.py: no such file" exit 1 fi __sphinxRoot=$sphinxRoot else for o in doc docs doc/source docs/source ; do if [[ -f "$o/conf.py" ]] ; then echo "Sphinx documentation found in $o" __sphinxRoot=$o break fi done fi if [[ -z "${__sphinxRoot}" ]] ; then echo 2>&1 "Sphinx documentation not found, use 'sphinxRoot' variable" exit 1 fi sphinx-build -M html "${__sphinxRoot}" ".sphinx/html" -v runHook postBuildSphinx } installSphinxPhase() { local docdir="" runHook preInstallSphinx docdir="${doc:-$out}/share/doc/${sphinxOutdir:-$name}" mkdir -p "$docdir" cp -r .sphinx/html/html "$docdir/" rm -fr "${docdir}/html/_sources" "${docdir}/html/.buildinfo" runHook postInstallSphinx } preBuildPhases+=" buildSphinxPhase" postPhases+=" installSphinxPhase"