qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "罗勇刚(Yonggang Luo)" <luoyonggang@gmail.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: qemu-level <qemu-devel@nongnu.org>
Subject: Re: [PULL 18/22] meson: Move the detection logic for sphinx to meson
Date: Fri, 16 Oct 2020 21:27:25 +0800	[thread overview]
Message-ID: <CAE2XoE8cF3Bse9AE3zb9GGqmygqDx1=zxXHF6OE9an_ridWVsw@mail.gmail.com> (raw)
In-Reply-To: <20201016114814.1564523-19-pbonzini@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 11024 bytes --]

On Fri, Oct 16, 2020 at 7:48 PM Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> From: Yonggang Luo <luoyonggang@gmail.com>
>
> Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
> Message-Id: <20201015220626.418-4-luoyonggang@gmail.com>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  configure         | 59 ++++-------------------------------------------
>  docs/meson.build  | 46 ++++++++++++++++++++++++++++++++++++
>  meson.build       | 30 ++++++++----------------
>  meson_options.txt |  4 ++++
>  4 files changed, 64 insertions(+), 75 deletions(-)
>
> diff --git a/configure b/configure
> index 3edbdd2a24..68f097861d 100755
> --- a/configure
> +++ b/configure
> @@ -297,7 +297,7 @@ brlapi=""
>  curl=""
>  iconv="auto"
>  curses="auto"
> -docs=""
> +docs="auto"
>  fdt="auto"
>  netmap="no"
>  sdl="auto"
> @@ -820,15 +820,6 @@ do
>      fi
>  done
>
> -sphinx_build=
> -for binary in sphinx-build-3 sphinx-build
> -do
> -    if has "$binary"
> -    then
> -        sphinx_build=$(command -v "$binary")
> -        break
> -    fi
> -done
>
>  # Check for ancillary tools used in testing
>  genisoimage=
> @@ -1228,9 +1219,9 @@ for opt do
>    ;;
>    --disable-crypto-afalg) crypto_afalg="no"
>    ;;
> -  --disable-docs) docs="no"
> +  --disable-docs) docs="disabled"
>    ;;
> -  --enable-docs) docs="yes"
> +  --enable-docs) docs="enabled"
>    ;;
>    --disable-vhost-net) vhost_net="no"
>    ;;
> @@ -4419,45 +4410,6 @@ if check_include linux/btrfs.h ; then
>      btrfs=yes
>  fi
>
> -# If we're making warnings fatal, apply this to Sphinx runs as well
> -sphinx_werror=""
> -if test "$werror" = "yes"; then
> -    sphinx_werror="-W"
> -fi
> -
> -# Check we have a new enough version of sphinx-build
> -has_sphinx_build() {
> -    # This is a bit awkward but works: create a trivial document and
> -    # try to run it with our configuration file (which enforces a
> -    # version requirement). This will fail if either
> -    # sphinx-build doesn't exist at all or if it is too old.
> -    mkdir -p "$TMPDIR1/sphinx"
> -    touch "$TMPDIR1/sphinx/index.rst"
> -    "$sphinx_build" $sphinx_werror -c "$source_path/docs" \
> -                    -b html "$TMPDIR1/sphinx" \
> -                    "$TMPDIR1/sphinx/out"  >> config.log 2>&1
> -}
> -
> -# Check if tools are available to build documentation.
> -if test "$docs" != "no" ; then
> -  if has_sphinx_build; then
> -    sphinx_ok=yes
> -  else
> -    sphinx_ok=no
> -  fi
> -  if test "$sphinx_ok" = "yes"; then
> -    docs=yes
> -  else
> -    if test "$docs" = "yes" ; then
> -      if has $sphinx_build && test "$sphinx_ok" != "yes"; then
> -        echo "Warning: $sphinx_build exists but it is either too old or
uses too old a Python version" >&2
> -      fi
> -      feature_not_found "docs" "Install a Python 3 version of
python-sphinx"
> -    fi
> -    docs=no
> -  fi
> -fi
> -
>  # Search for bswap_32 function
>  byteswap_h=no
>  cat > $TMPC << EOF
> @@ -6093,9 +6045,6 @@ qemu_version=$(head $source_path/VERSION)
>  echo "PKGVERSION=$pkgversion" >>$config_host_mak
>  echo "SRC_PATH=$source_path" >> $config_host_mak
>  echo "TARGET_DIRS=$target_list" >> $config_host_mak
> -if [ "$docs" = "yes" ] ; then
> -  echo "BUILD_DOCS=yes" >> $config_host_mak
> -fi
>  if test "$modules" = "yes"; then
>    # $shacmd can generate a hash started with digit, which the compiler
doesn't
>    # like as an symbol. So prefix it with an underscore
> @@ -6784,7 +6733,6 @@ fi
>  echo "ROMS=$roms" >> $config_host_mak
>  echo "MAKE=$make" >> $config_host_mak
>  echo "PYTHON=$python" >> $config_host_mak
> -echo "SPHINX_BUILD=$sphinx_build" >> $config_host_mak
>  echo "GENISOIMAGE=$genisoimage" >> $config_host_mak
>  echo "MESON=$meson" >> $config_host_mak
>  echo "NINJA=$ninja" >> $config_host_mak
> @@ -7066,6 +7014,7 @@ NINJA=$ninja $meson setup \
>          -Dgettext=$gettext -Dxkbcommon=$xkbcommon -Du2f=$u2f \
>          -Dcapstone=$capstone -Dslirp=$slirp -Dfdt=$fdt \
>          -Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
> +        -Ddocs=$docs -Dsphinx_build=$sphinx_build \
>          $cross_arg \
>          "$PWD" "$source_path"
>
> diff --git a/docs/meson.build b/docs/meson.build
> index 0340d489ac..789dca8cc0 100644
> --- a/docs/meson.build
> +++ b/docs/meson.build
> @@ -1,4 +1,50 @@

> +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
> +
> +# Check if tools are available to build documentation.
> +build_docs = false
> +if sphinx_build.found()
> +  SPHINX_ARGS = [sphinx_build]
> +  # If we're making warnings fatal, apply this to Sphinx runs as well
> +  if get_option('werror')
> +    SPHINX_ARGS += [ '-W' ]
> +  endif
> +
> +  # This is a bit awkward but works: create a trivial document and
> +  # try to run it with our configuration file (which enforces a
> +  # version requirement). This will fail if sphinx-build is too old.
> +  run_command('mkdir', ['-p', tmpdir / 'sphinx'])
> +  run_command('touch', [tmpdir / 'sphinx/index.rst'])
> +  sphinx_build_test_out = run_command(SPHINX_ARGS + [
> +    '-c', meson.current_source_dir(),
> +    '-b', 'html', tmpdir / 'sphinx',
> +    tmpdir / 'sphinx/out'])
> +  build_docs = (sphinx_build_test_out.returncode() == 0)
> +
> +  if not build_docs
> +    warning('@0@ exists but it is either too old or uses too old a
Python version'.format(sphinx_build_option))
Here need to be get_option('sphinx_build')




> +    if get_option('docs').enabled()
> +      error('Install a Python 3 version of python-sphinx')
> +    endif
> +  endif
> +endif
> +
>  if build_docs
> +  SPHINX_ARGS += ['-Dversion=' + meson.project_version(), '-Drelease=' +
config_host['PKGVERSION']]
> +
> +  sphinx_extn_depends = [ meson.source_root() / 'docs/sphinx/depfile.py',
> +                          meson.source_root() / 'docs/sphinx/hxtool.py',
> +                          meson.source_root() /
'docs/sphinx/kerneldoc.py',
> +                          meson.source_root() /
'docs/sphinx/kernellog.py',
> +                          meson.source_root() / 'docs/sphinx/qapidoc.py',
> +                          meson.source_root() /
'docs/sphinx/qmp_lexer.py',
> +                          qapi_gen_depends ]
> +
>    configure_file(output: 'index.html',
>                   input: files('index.html.in'),
>                   configuration: {'VERSION': meson.project_version()},
> diff --git a/meson.build b/meson.build
> index 15732f4701..05fb59a00b 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -17,7 +17,13 @@ cc = meson.get_compiler('c')
>  config_host = keyval.load(meson.current_build_dir() / 'config-host.mak')
>  enable_modules = 'CONFIG_MODULES' in config_host
>  enable_static = 'CONFIG_STATIC' in config_host
> -build_docs = 'BUILD_DOCS' in config_host
> +
> +# Temporary directory used for files created while
> +# configure runs. Since it is in the build directory
> +# we can safely blow away any previous version of it
> +# (and we need not jump through hoops to try to delete
> +# it when configure exits.)
> +tmpdir = meson.current_build_dir() / 'meson-private/temp'
>
>  if get_option('qemu_suffix').startswith('/')
>    error('qemu_suffix cannot start with a /')
> @@ -1266,22 +1272,6 @@ foreach d : hx_headers
>  endforeach
>  genh += hxdep
>
> -SPHINX_ARGS = [config_host['SPHINX_BUILD'],
> -               '-Dversion=' + meson.project_version(),
> -               '-Drelease=' + config_host['PKGVERSION']]
> -
> -if get_option('werror')
> -  SPHINX_ARGS += [ '-W' ]
> -endif
> -
> -sphinx_extn_depends = [ meson.source_root() / 'docs/sphinx/depfile.py',
> -                        meson.source_root() / 'docs/sphinx/hxtool.py',
> -                        meson.source_root() / 'docs/sphinx/kerneldoc.py',
> -                        meson.source_root() / 'docs/sphinx/kernellog.py',
> -                        meson.source_root() / 'docs/sphinx/qapidoc.py',
> -                        meson.source_root() / 'docs/sphinx/qmp_lexer.py',
> -                        qapi_gen_depends ]
> -
>  ###################
>  # Collect sources #
>  ###################
> @@ -1866,8 +1856,8 @@ endif
>  subdir('scripts')
>  subdir('tools')
>  subdir('pc-bios')
> -subdir('tests')
>  subdir('docs')
> +subdir('tests')
>  if 'CONFIG_GTK' in config_host
>    subdir('po')
>  endif
> @@ -1949,7 +1939,7 @@ summary_info += {'QEMU_CFLAGS':
config_host['QEMU_CFLAGS']}
>  summary_info += {'QEMU_LDFLAGS':      config_host['QEMU_LDFLAGS']}
>  summary_info += {'make':              config_host['MAKE']}
>  summary_info += {'python':            '@0@ (version: @1@)'.format(python.full_path(),
python.language_version())}
> -summary_info += {'sphinx-build':      config_host['SPHINX_BUILD']}
> +summary_info += {'sphinx-build':      sphinx_build.found()}
>  summary_info += {'genisoimage':       config_host['GENISOIMAGE']}
>  # TODO: add back version
>  summary_info += {'slirp support':     slirp_opt == 'disabled' ? false :
slirp_opt}
> @@ -2017,7 +2007,7 @@ if config_host.has_key('CONFIG_XEN_BACKEND')
>    summary_info += {'xen ctrl version':
 config_host['CONFIG_XEN_CTRL_INTERFACE_VERSION']}
>  endif
>  summary_info += {'brlapi support':
 config_host.has_key('CONFIG_BRLAPI')}
> -summary_info += {'Documentation':     config_host.has_key('BUILD_DOCS')}
> +summary_info += {'Documentation':     build_docs}
>  summary_info += {'PIE':               get_option('b_pie')}
>  summary_info += {'vde support':       config_host.has_key('CONFIG_VDE')}
>  summary_info += {'netmap support':
 config_host.has_key('CONFIG_NETMAP')}
> diff --git a/meson_options.txt b/meson_options.txt
> index 77b3fabd00..967229b66e 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -2,7 +2,11 @@ option('qemu_suffix', type : 'string', value: 'qemu',
>         description: 'Suffix for QEMU data/modules/config directories
(can be empty)')
>  option('docdir', type : 'string', value : 'doc',
>         description: 'Base directory for documentation installation (can
be empty)')
> +option('sphinx_build', type : 'string', value : '',
> +       description: 'Use specified sphinx-build [$sphinx_build] for
building document (default to be empty)')
>
> +option('docs', type : 'feature', value : 'auto',
> +       description: 'Documentations build support')
>  option('gettext', type : 'boolean', value : true,
>         description: 'Localization of the GTK+ user interface')
>  option('sparse', type : 'feature', value : 'auto',
> --
> 2.26.2
>
>


--
         此致
礼
罗勇刚
Yours
    sincerely,
Yonggang Luo

[-- Attachment #2: Type: text/html, Size: 14871 bytes --]

  reply	other threads:[~2020-10-16 13:28 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-16 11:47 [PULL 00/22] Build system + misc changes for 2020-10-16 Paolo Bonzini
2020-10-16 11:47 ` [PULL 01/22] submodules: bump meson to 0.55.3 Paolo Bonzini
2020-10-16 11:47 ` [PULL 02/22] Makefile: Ensure cscope.out/tags/TAGS are generated in the source tree Paolo Bonzini
2020-10-16 11:47 ` [PULL 03/22] tests/Makefile.include: unbreak non-tcg builds Paolo Bonzini
2020-10-16 11:47 ` [PULL 04/22] make: run shell with pipefail Paolo Bonzini
2020-10-16 11:47 ` [PULL 05/22] tests: add missing generated sources to testqapi Paolo Bonzini
2020-10-16 11:47 ` [PULL 06/22] configure: move QEMU_INCLUDES to meson Paolo Bonzini
2020-10-16 11:47 ` [PULL 07/22] dockerfiles: enable Centos 8 PowerTools Paolo Bonzini
2020-10-16 11:48 ` [PULL 08/22] add ninja to dockerfiles, CI configurations and test VMs Paolo Bonzini
2020-10-16 11:48 ` [PULL 09/22] build: cleanups to Makefile Paolo Bonzini
2020-10-16 11:48 ` [PULL 10/22] build: replace ninjatool with ninja Paolo Bonzini
2020-10-16 11:48 ` [PULL 11/22] build: add --enable/--disable-libudev Paolo Bonzini
2020-10-16 11:48 ` [PULL 12/22] meson.build: don't condition iconv detection on library detection Paolo Bonzini
2020-10-16 11:48 ` [PULL 13/22] meson: cleanup curses/iconv test Paolo Bonzini
2020-10-16 11:48 ` [PULL 14/22] configure: fix handling of --docdir parameter Paolo Bonzini
2020-10-16 11:48 ` [PULL 15/22] meson: Only install icons and qemu.desktop if have_system Paolo Bonzini
2020-10-16 11:48 ` [PULL 16/22] docs: Fix Sphinx configuration for msys2/mingw Paolo Bonzini
2020-10-16 11:48 ` [PULL 17/22] meson: move SPHINX_ARGS references within "if build_docs" Paolo Bonzini
2020-10-16 11:48 ` [PULL 18/22] meson: Move the detection logic for sphinx to meson Paolo Bonzini
2020-10-16 13:27   ` 罗勇刚(Yonggang Luo) [this message]
2020-10-19 19:40     ` Eric Blake
2020-10-16 11:48 ` [PULL 19/22] cirrus: Enable doc build on msys2/mingw Paolo Bonzini
2020-10-16 11:48 ` [PULL 20/22] fuzz: Disable QEMU's SIG{INT,HUP,TERM} handlers Paolo Bonzini
2020-10-16 11:48 ` [PULL 21/22] hax: unbreak accelerator cpu code after cpus.c split Paolo Bonzini
2020-10-16 11:48 ` [PULL 22/22] ci: include configure and meson logs in all jobs if configure fails Paolo Bonzini
2020-10-16 15:53 [PULL v2 00/22] Build system + misc changes for 2020-10-16 Paolo Bonzini
2020-10-16 15:53 ` [PULL 18/22] meson: Move the detection logic for sphinx to meson Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAE2XoE8cF3Bse9AE3zb9GGqmygqDx1=zxXHF6OE9an_ridWVsw@mail.gmail.com' \
    --to=luoyonggang@gmail.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).