Merge pull request #136100 from KAction/sphinx-hook
New hook: sphinxHook to build documentation into different formats/outputs
This commit is contained in:
commit
ab62fad9d5
5 changed files with 70 additions and 0 deletions
|
@ -169,4 +169,10 @@ in rec {
|
||||||
name = "wheel-unpack-hook.sh";
|
name = "wheel-unpack-hook.sh";
|
||||||
deps = [ wheel ];
|
deps = [ wheel ];
|
||||||
} ./wheel-unpack-hook.sh) {};
|
} ./wheel-unpack-hook.sh) {};
|
||||||
|
|
||||||
|
sphinxHook = callPackage ({ sphinx }:
|
||||||
|
makeSetupHook {
|
||||||
|
name = "python${python.pythonVersion}-sphinx-hook";
|
||||||
|
deps = [ sphinx ];
|
||||||
|
} ./sphinx-hook.sh) {};
|
||||||
}
|
}
|
||||||
|
|
57
pkgs/development/interpreters/python/hooks/sphinx-hook.sh
Normal file
57
pkgs/development/interpreters/python/hooks/sphinx-hook.sh
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
# 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"
|
|
@ -6,12 +6,14 @@
|
||||||
, pytestCheckHook
|
, pytestCheckHook
|
||||||
, pythonOlder
|
, pythonOlder
|
||||||
, soupsieve
|
, soupsieve
|
||||||
|
, sphinxHook
|
||||||
}:
|
}:
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "beautifulsoup4";
|
pname = "beautifulsoup4";
|
||||||
version = "4.11.1";
|
version = "4.11.1";
|
||||||
format = "setuptools";
|
format = "setuptools";
|
||||||
|
outputs = ["out" "doc"];
|
||||||
|
|
||||||
disabled = pythonOlder "3.6";
|
disabled = pythonOlder "3.6";
|
||||||
|
|
||||||
|
@ -29,6 +31,7 @@ buildPythonPackage rec {
|
||||||
checkInputs = [
|
checkInputs = [
|
||||||
pytestCheckHook
|
pytestCheckHook
|
||||||
];
|
];
|
||||||
|
nativeBuildInputs = [ sphinxHook ];
|
||||||
|
|
||||||
pythonImportsCheck = [
|
pythonImportsCheck = [
|
||||||
"bs4"
|
"bs4"
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
, mock
|
, mock
|
||||||
, pytest-mock
|
, pytest-mock
|
||||||
, pytestCheckHook
|
, pytestCheckHook
|
||||||
|
, sphinxHook
|
||||||
}:
|
}:
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
|
@ -16,6 +17,7 @@ buildPythonPackage rec {
|
||||||
format = "setuptools";
|
format = "setuptools";
|
||||||
|
|
||||||
disabled = pythonOlder "3.7";
|
disabled = pythonOlder "3.7";
|
||||||
|
outputs = ["out" "doc"];
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "dropbox";
|
owner = "dropbox";
|
||||||
|
@ -46,6 +48,7 @@ buildPythonPackage rec {
|
||||||
pythonImportsCheck = [
|
pythonImportsCheck = [
|
||||||
"dropbox"
|
"dropbox"
|
||||||
];
|
];
|
||||||
|
nativeBuildInputs = [ sphinxHook ];
|
||||||
|
|
||||||
# Set SCOPED_USER_DROPBOX_TOKEN environment variable to a valid value.
|
# Set SCOPED_USER_DROPBOX_TOKEN environment variable to a valid value.
|
||||||
disabledTests = [
|
disabledTests = [
|
||||||
|
|
|
@ -106,6 +106,7 @@ in {
|
||||||
inherit buildSetupcfg;
|
inherit buildSetupcfg;
|
||||||
|
|
||||||
inherit (callPackage ../development/interpreters/python/hooks { })
|
inherit (callPackage ../development/interpreters/python/hooks { })
|
||||||
|
sphinxHook
|
||||||
condaInstallHook
|
condaInstallHook
|
||||||
condaUnpackHook
|
condaUnpackHook
|
||||||
eggUnpackHook
|
eggUnpackHook
|
||||||
|
|
Loading…
Reference in a new issue