diff mbox series

[PULL,03/13] meson: stop looking for 'sphinx-build-3'

Message ID 20230227175524.710880-4-pbonzini@redhat.com
State New
Headers show
Series [PULL,01/13] target/i386: Fix BZHI instruction | expand

Commit Message

Paolo Bonzini Feb. 27, 2023, 5:55 p.m. UTC
From: John Snow <jsnow@redhat.com>

Once upon a time, "sphinx-build" on certain RPM platforms invoked
specifically a Python 2.x version, while "sphinx-build-3" was a distro
shim for the Python 3.x version.

These days, none of our supported platforms utilize a 2.x version, and
those that still have 'sphinx-build-3' make it a symbolic link to
'sphinx-build'.  Not searching for 'sphinx-build-3' will prefer
pip/venv installed versions of sphinx if they're available.

This adds an extremely convenient ability to test document building
ability in QEMU across multiple versions of Sphinx for the purposes of
compatibility testing.

Signed-off-by: John Snow <jsnow@redhat.com>
Message-Id: <20230221012456.2607692-6-jsnow@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 docs/meson.build              | 9 ++-------
 meson_options.txt             | 2 +-
 scripts/meson-buildoptions.sh | 1 +
 3 files changed, 4 insertions(+), 8 deletions(-)

Comments

Peter Maydell March 2, 2023, 4:54 p.m. UTC | #1
On Mon, 27 Feb 2023 at 17:58, Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> From: John Snow <jsnow@redhat.com>
>
> Once upon a time, "sphinx-build" on certain RPM platforms invoked
> specifically a Python 2.x version, while "sphinx-build-3" was a distro
> shim for the Python 3.x version.
>
> These days, none of our supported platforms utilize a 2.x version, and
> those that still have 'sphinx-build-3' make it a symbolic link to
> 'sphinx-build'.  Not searching for 'sphinx-build-3' will prefer
> pip/venv installed versions of sphinx if they're available.
>
> This adds an extremely convenient ability to test document building
> ability in QEMU across multiple versions of Sphinx for the purposes of
> compatibility testing.
>
> Signed-off-by: John Snow <jsnow@redhat.com>
> Message-Id: <20230221012456.2607692-6-jsnow@redhat.com>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

Hi. I've just noticed that this breaks incremental rebuilds:
meson.log says:


[Errno 21] Is a directory: '/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/docs/'
Unusable script '/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/docs/'
Program  found: NO

../../docs/meson.build:1:0: ERROR: Program '' not found or not executable

>  docs/meson.build              | 9 ++-------
>  meson_options.txt             | 2 +-
>  scripts/meson-buildoptions.sh | 1 +
>  3 files changed, 4 insertions(+), 8 deletions(-)
>
> diff --git a/docs/meson.build b/docs/meson.build
> index bbcdccce68a8..bb72c10ea8c5 100644
> --- a/docs/meson.build
> +++ b/docs/meson.build
> @@ -1,10 +1,5 @@
> -if get_option('sphinx_build') == ''
> -  sphinx_build = find_program(['sphinx-build-3', 'sphinx-build'],
> -                              required: get_option('docs'))
> -else
> -  sphinx_build = find_program(get_option('sphinx_build'),
> -                              required: get_option('docs'))
> -endif
> +sphinx_build = find_program(get_option('sphinx_build'),
> +                            required: get_option('docs'))
>
>  # Check if tools are available to build documentation.
>  build_docs = false
> diff --git a/meson_options.txt b/meson_options.txt
> index 6b0900205ea7..fc9447d267bf 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -12,7 +12,7 @@ option('pkgversion', type : 'string', value : '',
>         description: 'use specified string as sub-version of the package')
>  option('smbd', type : 'string', value : '',
>         description: 'Path to smbd for slirp networking')
> -option('sphinx_build', type : 'string', value : '',
> +option('sphinx_build', type : 'string', value : 'sphinx-build',
>         description: 'Use specified sphinx-build for building document')
>  option('iasl', type : 'string', value : '',
>         description: 'Path to ACPI disassembler')
> diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh
> index 5d969a94c08e..009fab151571 100644
> --- a/scripts/meson-buildoptions.sh
> +++ b/scripts/meson-buildoptions.sh
> @@ -55,6 +55,7 @@ meson_options_help() {
>    printf "%s\n" '  --localstatedir=VALUE    Localstate data directory [/var/local]'
>    printf "%s\n" '  --mandir=VALUE           Manual page directory [share/man]'
>    printf "%s\n" '  --sphinx-build=VALUE     Use specified sphinx-build for building document'
> +  printf "%s\n" '                           [sphinx-build]'
>    printf "%s\n" '  --sysconfdir=VALUE       Sysconf data directory [etc]'
>    printf "%s\n" '  --tls-priority=VALUE     Default TLS protocol/cipher priority string'
>    printf "%s\n" '                           [NORMAL]'

I think this happens because the commit has changed the
default value of the '--sphinx-build' option, but if you're
doing an incremental rebuild then meson will get run with
the old default value (which is the empty string) and the
new meson.build doesn't expect that and falls over.

Manually rerunning configure fixes this, but ideally
incremental rebuilds should Just Work.

thanks
-- PMM
diff mbox series

Patch

diff --git a/docs/meson.build b/docs/meson.build
index bbcdccce68a8..bb72c10ea8c5 100644
--- a/docs/meson.build
+++ b/docs/meson.build
@@ -1,10 +1,5 @@ 
-if get_option('sphinx_build') == ''
-  sphinx_build = find_program(['sphinx-build-3', 'sphinx-build'],
-                              required: get_option('docs'))
-else
-  sphinx_build = find_program(get_option('sphinx_build'),
-                              required: get_option('docs'))
-endif
+sphinx_build = find_program(get_option('sphinx_build'),
+                            required: get_option('docs'))
 
 # Check if tools are available to build documentation.
 build_docs = false
diff --git a/meson_options.txt b/meson_options.txt
index 6b0900205ea7..fc9447d267bf 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -12,7 +12,7 @@  option('pkgversion', type : 'string', value : '',
        description: 'use specified string as sub-version of the package')
 option('smbd', type : 'string', value : '',
        description: 'Path to smbd for slirp networking')
-option('sphinx_build', type : 'string', value : '',
+option('sphinx_build', type : 'string', value : 'sphinx-build',
        description: 'Use specified sphinx-build for building document')
 option('iasl', type : 'string', value : '',
        description: 'Path to ACPI disassembler')
diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh
index 5d969a94c08e..009fab151571 100644
--- a/scripts/meson-buildoptions.sh
+++ b/scripts/meson-buildoptions.sh
@@ -55,6 +55,7 @@  meson_options_help() {
   printf "%s\n" '  --localstatedir=VALUE    Localstate data directory [/var/local]'
   printf "%s\n" '  --mandir=VALUE           Manual page directory [share/man]'
   printf "%s\n" '  --sphinx-build=VALUE     Use specified sphinx-build for building document'
+  printf "%s\n" '                           [sphinx-build]'
   printf "%s\n" '  --sysconfdir=VALUE       Sysconf data directory [etc]'
   printf "%s\n" '  --tls-priority=VALUE     Default TLS protocol/cipher priority string'
   printf "%s\n" '                           [NORMAL]'