[v2] docs: scripts: sphinx-pre-install: Fix building docs with pyyaml package

Message ID 20240208131305.52577-1-thorsten.blum@toblux.com
State New
Headers
Series [v2] docs: scripts: sphinx-pre-install: Fix building docs with pyyaml package |

Commit Message

Thorsten Blum Feb. 8, 2024, 1:13 p.m. UTC
  The Python module pyyaml is required to build the docs, but it is only
listed in Documentation/sphinx/requirements.txt and is therefore missing
when Sphinx is installed as a package and not via pip/pypi.

Add pyyaml as an optional package for Debian- and Red Hat-based distros to
fix building the docs if you prefer to install Sphinx as a package.

Signed-off-by: Thorsten Blum <thorsten.blum@toblux.com>
---
Changes in v2:
- s/pyyaml/yaml/ as suggested by Vegard Nossum <vegard.nossum@oracle.com>
- Make the check require the Python module; was optional
---
 scripts/sphinx-pre-install | 3 +++
 1 file changed, 3 insertions(+)
  

Comments

Vegard Nossum Feb. 8, 2024, 4:37 p.m. UTC | #1
On 08/02/2024 14:13, Thorsten Blum wrote:
> The Python module pyyaml is required to build the docs, but it is only
> listed in Documentation/sphinx/requirements.txt and is therefore missing
> when Sphinx is installed as a package and not via pip/pypi.
> 
> Add pyyaml as an optional package for Debian- and Red Hat-based distros to
s/optional/required/ ? Given...

> fix building the docs if you prefer to install Sphinx as a package.
> 
> Signed-off-by: Thorsten Blum <thorsten.blum@toblux.com>
> ---
> Changes in v2:
> - s/pyyaml/yaml/ as suggested by Vegard Nossum <vegard.nossum@oracle.com>
> - Make the check require the Python module; was optional

..this ^

> ---
>   scripts/sphinx-pre-install | 3 +++
>   1 file changed, 3 insertions(+)
> 
> diff --git a/scripts/sphinx-pre-install b/scripts/sphinx-pre-install
> index 25aefbb35377..7e49a020c25e 100755
> --- a/scripts/sphinx-pre-install
> +++ b/scripts/sphinx-pre-install
> @@ -361,6 +361,7 @@ sub give_debian_hints()
>   {
>   	my %map = (
>   		"python-sphinx"		=> "python3-sphinx",
> +		"yaml"			=> "python3-yaml",
>   		"ensurepip"		=> "python3-venv",
>   		"virtualenv"		=> "virtualenv",
>   		"dot"			=> "graphviz",
> @@ -395,6 +396,7 @@ sub give_redhat_hints()
>   {
>   	my %map = (
>   		"python-sphinx"		=> "python3-sphinx",
> +		"yaml"			=> "python3-pyyaml",
>   		"virtualenv"		=> "python3-virtualenv",
>   		"dot"			=> "graphviz",
>   		"convert"		=> "ImageMagick",
> @@ -951,6 +953,7 @@ sub check_needs()
>   
>   	# Check for needed programs/tools
>   	check_perl_module("Pod::Usage", 0);
> +	check_python_module("yaml", 0);
>   	check_program("make", 0);
>   	check_program("gcc", 0);
>   	check_program("dot", 1);

This seems to work.

Reviewed-by: Vegard Nossum <vegard.nossum@oracle.com>
Tested-by: Vegard Nossum <vegard.nossum@oracle.com>

Can/should we add it to give_opensuse_hints() as well, given that it
also apparently allows you to install Sphinx via the distro package
manager? (Not sure about mageia/arch/gentoo.)


Vegard
  
Thorsten Blum Feb. 8, 2024, 8:15 p.m. UTC | #2
> On Feb 8, 2024, at 17:37, Vegard Nossum <vegard.nossum@oracle.com> wrote:
> 
> On 08/02/2024 14:13, Thorsten Blum wrote:
>> The Python module pyyaml is required to build the docs, but it is only
>> listed in Documentation/sphinx/requirements.txt and is therefore missing
>> when Sphinx is installed as a package and not via pip/pypi.
>> Add pyyaml as an optional package for Debian- and Red Hat-based distros to
> s/optional/required/ ? Given...

The commit message should be correct. The system package is optional, but the
Python module itself is required.

> Can/should we add it to give_opensuse_hints() as well, given that it
> also apparently allows you to install Sphinx via the distro package
> manager? (Not sure about mageia/arch/gentoo.)

Yes, I'll submit a v3 shortly.

Thanks,
Thorsten
  

Patch

diff --git a/scripts/sphinx-pre-install b/scripts/sphinx-pre-install
index 25aefbb35377..7e49a020c25e 100755
--- a/scripts/sphinx-pre-install
+++ b/scripts/sphinx-pre-install
@@ -361,6 +361,7 @@  sub give_debian_hints()
 {
 	my %map = (
 		"python-sphinx"		=> "python3-sphinx",
+		"yaml"			=> "python3-yaml",
 		"ensurepip"		=> "python3-venv",
 		"virtualenv"		=> "virtualenv",
 		"dot"			=> "graphviz",
@@ -395,6 +396,7 @@  sub give_redhat_hints()
 {
 	my %map = (
 		"python-sphinx"		=> "python3-sphinx",
+		"yaml"			=> "python3-pyyaml",
 		"virtualenv"		=> "python3-virtualenv",
 		"dot"			=> "graphviz",
 		"convert"		=> "ImageMagick",
@@ -951,6 +953,7 @@  sub check_needs()
 
 	# Check for needed programs/tools
 	check_perl_module("Pod::Usage", 0);
+	check_python_module("yaml", 0);
 	check_program("make", 0);
 	check_program("gcc", 0);
 	check_program("dot", 1);