qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/4] Fixes docs building on msys2/mingw
@ 2020-10-15 20:10 Yonggang Luo
  2020-10-15 20:10 ` [PATCH v2 1/4] docs: Fixes build docs " Yonggang Luo
                   ` (4 more replies)
  0 siblings, 5 replies; 13+ messages in thread
From: Yonggang Luo @ 2020-10-15 20:10 UTC (permalink / raw)
  To: qemu-devel; +Cc: Paolo Bonzini, Yonggang Luo

v1 - v2
Also move the docs configure part from
configure to meson, this also fixed the pending
ninjatool removal caused issue that docs  can
not be build under msys2/mingw

Yonggang Luo (4):
  docs: Fixes build docs on msys2/mingw
  configure: the docdir option should passed to meson as is.
  meson: Move the detection logic for sphinx to meson
  cirrus: Enable doc build on msys2/mingw

 .cirrus.yml                   |  6 +++-
 configure                     | 62 +++--------------------------------
 docs/conf.py                  |  2 +-
 docs/meson.build              |  4 +--
 docs/sphinx/kerneldoc.py      |  2 +-
 meson.build                   | 59 +++++++++++++++++++++++++++++----
 meson_options.txt             |  5 ++-
 scripts/rst-sanitize.py       | 21 ++++++++++++
 tests/qapi-schema/meson.build |  7 ++--
 9 files changed, 95 insertions(+), 73 deletions(-)
 create mode 100644 scripts/rst-sanitize.py

-- 
2.28.0.windows.1



^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH v2 1/4] docs: Fixes build docs on msys2/mingw
  2020-10-15 20:10 [PATCH v2 0/4] Fixes docs building on msys2/mingw Yonggang Luo
@ 2020-10-15 20:10 ` Yonggang Luo
  2020-10-15 20:30   ` Peter Maydell
  2020-10-15 20:10 ` [PATCH v2 2/4] configure: the docdir option should passed to meson as is Yonggang Luo
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 13+ messages in thread
From: Yonggang Luo @ 2020-10-15 20:10 UTC (permalink / raw)
  To: qemu-devel; +Cc: Paolo Bonzini, Yonggang Luo

Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
---
 docs/conf.py                  |  2 +-
 docs/sphinx/kerneldoc.py      |  2 +-
 scripts/rst-sanitize.py       | 21 +++++++++++++++++++++
 tests/qapi-schema/meson.build |  5 +++--
 4 files changed, 26 insertions(+), 4 deletions(-)
 create mode 100644 scripts/rst-sanitize.py

diff --git a/docs/conf.py b/docs/conf.py
index 00e1b750e2..e584f68393 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -241,7 +241,7 @@ texinfo_documents = [
 # We use paths starting from qemu_docdir here so that you can run
 # sphinx-build from anywhere and the kerneldoc extension can still
 # find everything.
-kerneldoc_bin = os.path.join(qemu_docdir, '../scripts/kernel-doc')
+kerneldoc_bin = ['perl', os.path.join(qemu_docdir, '../scripts/kernel-doc')]
 kerneldoc_srctree = os.path.join(qemu_docdir, '..')
 hxtool_srctree = os.path.join(qemu_docdir, '..')
 qapidoc_srctree = os.path.join(qemu_docdir, '..')
diff --git a/docs/sphinx/kerneldoc.py b/docs/sphinx/kerneldoc.py
index 3e87940206..3ac277d162 100644
--- a/docs/sphinx/kerneldoc.py
+++ b/docs/sphinx/kerneldoc.py
@@ -67,7 +67,7 @@ class KernelDocDirective(Directive):
 
     def run(self):
         env = self.state.document.settings.env
-        cmd = [env.config.kerneldoc_bin, '-rst', '-enable-lineno']
+        cmd = env.config.kerneldoc_bin + ['-rst', '-enable-lineno']
 
         filename = env.config.kerneldoc_srctree + '/' + self.arguments[0]
         export_file_patterns = []
diff --git a/scripts/rst-sanitize.py b/scripts/rst-sanitize.py
new file mode 100644
index 0000000000..26060f1208
--- /dev/null
+++ b/scripts/rst-sanitize.py
@@ -0,0 +1,21 @@
+#!/usr/bin/env python3
+
+#
+# Script for remove cr line ending in file
+#
+# Authors:
+#  Yonggang Luo <luoyonggang@gmail.com>
+#
+# This work is licensed under the terms of the GNU GPL, version 2
+# or, at your option, any later version.  See the COPYING file in
+# the top-level directory.
+
+import sys
+
+def main(_program, file, *unused):
+    with open(file, 'rb') as content_file:
+        content = content_file.read()
+        sys.stdout.buffer.write(content.replace(b'\r', b''))
+
+if __name__ == "__main__":
+    main(*sys.argv)
diff --git a/tests/qapi-schema/meson.build b/tests/qapi-schema/meson.build
index 1f222a7a13..20a7641af8 100644
--- a/tests/qapi-schema/meson.build
+++ b/tests/qapi-schema/meson.build
@@ -251,18 +251,19 @@ qapi_doc_out = custom_target('QAPI rST doc',
 # using an explicit '\' character in the command arguments to
 # a custom_target(), as Meson will unhelpfully replace it with a '/'
 # (https://github.com/mesonbuild/meson/issues/1564)
+rst_sanitize_cmd = [find_program('../../scripts/rst-sanitize.py'), '@INPUT@']
 qapi_doc_out_nocr = custom_target('QAPI rST doc newline-sanitized',
                                   output: ['doc-good.txt.nocr'],
                                   input: qapi_doc_out[0],
                                   build_by_default: build_docs,
-                                  command: ['perl', '-pe', '$x = chr 13; s/$x$//', '@INPUT@'],
+                                  command: rst_sanitize_cmd,
                                   capture: true)
 
 qapi_doc_ref_nocr = custom_target('QAPI rST doc reference newline-sanitized',
                                   output: ['doc-good.ref.nocr'],
                                   input: files('doc-good.txt'),
                                   build_by_default: build_docs,
-                                  command: ['perl', '-pe', '$x = chr 13; s/$x$//', '@INPUT@'],
+                                  command: rst_sanitize_cmd,
                                   capture: true)
 
 if build_docs
-- 
2.28.0.windows.1



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v2 2/4] configure: the docdir option should passed to meson as is.
  2020-10-15 20:10 [PATCH v2 0/4] Fixes docs building on msys2/mingw Yonggang Luo
  2020-10-15 20:10 ` [PATCH v2 1/4] docs: Fixes build docs " Yonggang Luo
@ 2020-10-15 20:10 ` Yonggang Luo
  2020-10-15 21:23   ` Paolo Bonzini
  2020-10-15 20:10 ` [PATCH v2 3/4] meson: Move the detection logic for sphinx to meson Yonggang Luo
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 13+ messages in thread
From: Yonggang Luo @ 2020-10-15 20:10 UTC (permalink / raw)
  To: qemu-devel; +Cc: Paolo Bonzini, Yonggang Luo

Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
---
 configure | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/configure b/configure
index f839c2a557..1ce31f97b4 100755
--- a/configure
+++ b/configure
@@ -971,7 +971,7 @@ for opt do
   ;;
   --with-suffix=*) qemu_suffix="$optarg"
   ;;
-  --docdir=*) qemu_docdir="$optarg"
+  --docdir=*) docdir="$optarg"
   ;;
   --sysconfdir=*) sysconfdir="$optarg"
   ;;
@@ -5770,7 +5770,6 @@ fi
 qemu_confdir="$sysconfdir/$qemu_suffix"
 qemu_moddir="$libdir/$qemu_suffix"
 qemu_datadir="$datadir/$qemu_suffix"
-qemu_docdir="$docdir/$qemu_suffix"
 qemu_localedir="$datadir/locale"
 qemu_icondir="$datadir/icons"
 qemu_desktopdir="$datadir/applications"
-- 
2.28.0.windows.1



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v2 3/4] meson: Move the detection logic for sphinx to meson
  2020-10-15 20:10 [PATCH v2 0/4] Fixes docs building on msys2/mingw Yonggang Luo
  2020-10-15 20:10 ` [PATCH v2 1/4] docs: Fixes build docs " Yonggang Luo
  2020-10-15 20:10 ` [PATCH v2 2/4] configure: the docdir option should passed to meson as is Yonggang Luo
@ 2020-10-15 20:10 ` Yonggang Luo
  2020-10-15 20:10 ` [PATCH v2 4/4] cirrus: Enable doc build on msys2/mingw Yonggang Luo
  2020-10-15 21:52 ` [PATCH v2 0/4] Fixes docs building " Paolo Bonzini
  4 siblings, 0 replies; 13+ messages in thread
From: Yonggang Luo @ 2020-10-15 20:10 UTC (permalink / raw)
  To: qemu-devel; +Cc: Paolo Bonzini, Yonggang Luo

Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
---
 configure                     | 59 +++--------------------------------
 docs/meson.build              |  4 +--
 meson.build                   | 59 ++++++++++++++++++++++++++++++-----
 meson_options.txt             |  5 ++-
 tests/qapi-schema/meson.build |  2 +-
 5 files changed, 63 insertions(+), 66 deletions(-)

diff --git a/configure b/configure
index 1ce31f97b4..ff593a8542 100755
--- a/configure
+++ b/configure
@@ -297,7 +297,7 @@ brlapi=""
 curl=""
 iconv="auto"
 curses="auto"
-docs=""
+docs="auto"
 fdt="auto"
 netmap="no"
 sdl="auto"
@@ -822,15 +822,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=
@@ -1226,9 +1217,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"
   ;;
@@ -4413,45 +4404,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
@@ -6087,9 +6039,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
@@ -6794,7 +6743,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 "CC=$cc" >> $config_host_mak
@@ -7076,6 +7024,7 @@ NINJA=${ninja:-$PWD/ninjatool} $meson setup \
         -Dgettext=$gettext -Dxkbcommon=$xkbcommon -Du2f=$u2f \
         -Dcapstone=$capstone -Dslirp=$slirp -Dfdt=$fdt \
         -Diconv=$iconv -Dcurses=$curses \
+        -Ddocs=$docs -Dsphinx_build=$sphinx_build \
         $cross_arg \
         "$PWD" "$source_path"
 
diff --git a/docs/meson.build b/docs/meson.build
index 0340d489ac..f566809a6a 100644
--- a/docs/meson.build
+++ b/docs/meson.build
@@ -37,7 +37,7 @@ if build_docs
                 input: [files('conf.py'), files(manual / 'conf.py')],
                 depfile: manual + '.d',
                 depend_files: sphinx_extn_depends,
-                command: [SPHINX_ARGS, '-Ddepfile=@DEPFILE@',
+                command: SPHINX_ARGS + ['-Ddepfile=@DEPFILE@',
                           '-Ddepfile_stamp=@OUTPUT0@',
                           '-b', 'html', '-d', private_dir,
                           input_dir, output_dir])
@@ -59,7 +59,7 @@ if build_docs
                          input: this_manual,
                          install: build_docs,
                          install_dir: install_dirs,
-                         command: [SPHINX_ARGS, '-b', 'man', '-d', private_dir,
+                         command: SPHINX_ARGS + ['-b', 'man', '-d', private_dir,
                                    input_dir, meson.current_build_dir()])
     endif
   endforeach
diff --git a/meson.build b/meson.build
index 8156df8b71..3cf54d82f6 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() / 'config-temp'
 
 if get_option('qemu_suffix').startswith('/')
   error('qemu_suffix cannot start with a /')
@@ -1235,14 +1241,53 @@ foreach d : hx_headers
 endforeach
 genh += hxdep
 
-SPHINX_ARGS = [config_host['SPHINX_BUILD'],
-               '-Dversion=' + meson.project_version(),
-               '-Drelease=' + config_host['PKGVERSION']]
+sphinx_build = not_found
+sphinx_build_option = get_option('sphinx_build')
+if sphinx_build_option == ''
+  sphinx_build = find_program('sphinx-build', required: false)
+else
+  sphinx_build = find_program(sphinx_build_option, required: false)
+endif
 
+SPHINX_TEST_ARGS = []
+# If we're making warnings fatal, apply this to Sphinx runs as well
 if get_option('werror')
-  SPHINX_ARGS += [ '-W' ]
+  SPHINX_TEST_ARGS += [ '-W' ]
+endif
+
+build_docs = false
+docs_option = get_option('docs')
+# Check if tools are available to build documentation.
+if sphinx_build.found() and not docs_option.disabled()
+    # 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.
+    run_command('mkdir', ['-p', tmpdir / 'sphinx'])
+    run_command('touch', [tmpdir / 'sphinx/index.rst'])
+    sphinx_build_test_out = run_command(sphinx_build, SPHINX_TEST_ARGS + [
+      '-c', meson.current_source_dir() / 'docs',
+      '-b', 'html', tmpdir / 'sphinx',
+      tmpdir / 'sphinx/out'])
+    message(sphinx_build_test_out.stderr())
+    message(sphinx_build_test_out.stdout())
+    if sphinx_build_test_out.returncode() == 0
+      build_docs = true
+    else
+      if docs_option.enabled()
+        if sphinx_build_option != ''
+          warning('Warning: @0@ exists but it is either too old or uses too old a Python version'.format(sphinx_build_option))
+        endif
+        error('Warning: Install a Python 3 version of python-sphinx')
+      endif
+      # do not building docs
+    endif
 endif
 
+SPHINX_ARGS = [sphinx_build]
+SPHINX_ARGS += SPHINX_TEST_ARGS
+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',
@@ -1918,7 +1963,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}
@@ -1986,7 +2031,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 e6cb1e589b..0e3fa7136b 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,8 +1,11 @@
 option('qemu_suffix', type : 'string', value: 'qemu',
        description: 'Suffix for QEMU data/modules/config directories (can be empty)')
+option('docs', type : 'feature', value : 'auto',
+       description: 'Documentations build support')
 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('gettext', type : 'boolean', value : true,
        description: 'Localization of the GTK+ user interface')
 option('sparse', type : 'feature', value : 'auto',
diff --git a/tests/qapi-schema/meson.build b/tests/qapi-schema/meson.build
index 20a7641af8..e36079cece 100644
--- a/tests/qapi-schema/meson.build
+++ b/tests/qapi-schema/meson.build
@@ -237,7 +237,7 @@ qapi_doc_out = custom_target('QAPI rST doc',
                              # we want it to always really run the QAPI doc
                              # generation code. It also means we don't
                              # clutter up the build dir with the cache.
-                             command: [SPHINX_ARGS,
+                             command:  SPHINX_ARGS + [
                                        '-b', 'text', '-E',
                                        '-c', meson.source_root() / 'docs',
                                        '-D', 'master_doc=doc-good',
-- 
2.28.0.windows.1



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v2 4/4] cirrus: Enable doc build on msys2/mingw
  2020-10-15 20:10 [PATCH v2 0/4] Fixes docs building on msys2/mingw Yonggang Luo
                   ` (2 preceding siblings ...)
  2020-10-15 20:10 ` [PATCH v2 3/4] meson: Move the detection logic for sphinx to meson Yonggang Luo
@ 2020-10-15 20:10 ` Yonggang Luo
  2020-10-15 21:52 ` [PATCH v2 0/4] Fixes docs building " Paolo Bonzini
  4 siblings, 0 replies; 13+ messages in thread
From: Yonggang Luo @ 2020-10-15 20:10 UTC (permalink / raw)
  To: qemu-devel; +Cc: Paolo Bonzini, Yonggang Luo

Currently rST depends on old version sphinx-2.x.
Install it by downloading it.
Remove the need of university mirror, the main repo are recovered.

Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
---
 .cirrus.yml | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/.cirrus.yml b/.cirrus.yml
index 99d118239c..f42ccb956a 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -76,7 +76,6 @@ windows_msys2_task:
         ((Get-Content -path C:\tools\msys64\etc\\post-install\\07-pacman-key.post -Raw) -replace '--refresh-keys', '--version') | Set-Content -Path C:\tools\msys64\etc\\post-install\\07-pacman-key.post
         C:\tools\msys64\usr\bin\bash.exe -lc "sed -i 's/^CheckSpace/#CheckSpace/g' /etc/pacman.conf"
         C:\tools\msys64\usr\bin\bash.exe -lc "export"
-        C:\tools\msys64\usr\bin\bash.exe -lc "grep -rl 'repo.msys2.org/' /etc/pacman.d/mirrorlist.* | xargs sed -i 's/repo.msys2.org\//mirrors.tuna.tsinghua.edu.cn\/msys2\//g'"
         C:\tools\msys64\usr\bin\pacman.exe --noconfirm -Sy
         echo Y | C:\tools\msys64\usr\bin\pacman.exe --noconfirm -Suu --overwrite=*
         taskkill /F /FI "MODULES eq msys-2.0.dll"
@@ -111,6 +110,11 @@ windows_msys2_task:
           mingw-w64-x86_64-curl \
           mingw-w64-x86_64-gnutls \
           "
+        bitsadmin /transfer msys_download /dynamic /download /priority FOREGROUND `
+          https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-python-sphinx-2.3.1-1-any.pkg.tar.xz `
+          C:\tools\mingw-w64-x86_64-python-sphinx-2.3.1-1-any.pkg.tar.xz
+        C:\tools\msys64\usr\bin\bash.exe -lc "pacman --noconfirm -U /c/tools/mingw-w64-x86_64-python-sphinx-2.3.1-1-any.pkg.tar.xz"
+        del C:\tools\mingw-w64-x86_64-python-sphinx-2.3.1-1-any.pkg.tar.xz
         C:\tools\msys64\usr\bin\bash.exe -lc "rm -rf /var/cache/pacman/pkg/*"
         cd C:\tools\msys64
         echo "Start archive"
-- 
2.28.0.windows.1



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 1/4] docs: Fixes build docs on msys2/mingw
  2020-10-15 20:10 ` [PATCH v2 1/4] docs: Fixes build docs " Yonggang Luo
@ 2020-10-15 20:30   ` Peter Maydell
  2020-10-15 20:38     ` 罗勇刚(Yonggang Luo)
  2020-10-15 21:22     ` Paolo Bonzini
  0 siblings, 2 replies; 13+ messages in thread
From: Peter Maydell @ 2020-10-15 20:30 UTC (permalink / raw)
  To: Yonggang Luo; +Cc: Paolo Bonzini, QEMU Developers

On Thu, 15 Oct 2020 at 21:13, Yonggang Luo <luoyonggang@gmail.com> wrote:
>
> Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
> ---
>  docs/conf.py                  |  2 +-
>  docs/sphinx/kerneldoc.py      |  2 +-
>  scripts/rst-sanitize.py       | 21 +++++++++++++++++++++
>  tests/qapi-schema/meson.build |  5 +++--
>  4 files changed, 26 insertions(+), 4 deletions(-)
>  create mode 100644 scripts/rst-sanitize.py
>
> diff --git a/scripts/rst-sanitize.py b/scripts/rst-sanitize.py
> new file mode 100644
> index 0000000000..26060f1208
> --- /dev/null
> +++ b/scripts/rst-sanitize.py
> @@ -0,0 +1,21 @@
> +#!/usr/bin/env python3
> +
> +#
> +# Script for remove cr line ending in file
> +#
> +# Authors:
> +#  Yonggang Luo <luoyonggang@gmail.com>
> +#
> +# This work is licensed under the terms of the GNU GPL, version 2
> +# or, at your option, any later version.  See the COPYING file in
> +# the top-level directory.
> +
> +import sys
> +
> +def main(_program, file, *unused):
> +    with open(file, 'rb') as content_file:
> +        content = content_file.read()
> +        sys.stdout.buffer.write(content.replace(b'\r', b''))
> +
> +if __name__ == "__main__":
> +    main(*sys.argv)

Why doesn't the perl rune work? Your commit message doesn't say.

> diff --git a/tests/qapi-schema/meson.build b/tests/qapi-schema/meson.build
> index 1f222a7a13..20a7641af8 100644
> --- a/tests/qapi-schema/meson.build
> +++ b/tests/qapi-schema/meson.build
> @@ -251,18 +251,19 @@ qapi_doc_out = custom_target('QAPI rST doc',
>  # using an explicit '\' character in the command arguments to
>  # a custom_target(), as Meson will unhelpfully replace it with a '/'
>  # (https://github.com/mesonbuild/meson/issues/1564)
> +rst_sanitize_cmd = [find_program('../../scripts/rst-sanitize.py'), '@INPUT@']
>  qapi_doc_out_nocr = custom_target('QAPI rST doc newline-sanitized',
>                                    output: ['doc-good.txt.nocr'],
>                                    input: qapi_doc_out[0],
>                                    build_by_default: build_docs,
> -                                  command: ['perl', '-pe', '$x = chr 13; s/$x$//', '@INPUT@'],
> +                                  command: rst_sanitize_cmd,
>                                    capture: true)
>
>  qapi_doc_ref_nocr = custom_target('QAPI rST doc reference newline-sanitized',
>                                    output: ['doc-good.ref.nocr'],
>                                    input: files('doc-good.txt'),
>                                    build_by_default: build_docs,
> -                                  command: ['perl', '-pe', '$x = chr 13; s/$x$//', '@INPUT@'],
> +                                  command: rst_sanitize_cmd,
>                                    capture: true)

thanks
-- PMM


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 1/4] docs: Fixes build docs on msys2/mingw
  2020-10-15 20:30   ` Peter Maydell
@ 2020-10-15 20:38     ` 罗勇刚(Yonggang Luo)
  2020-10-15 21:22     ` Paolo Bonzini
  1 sibling, 0 replies; 13+ messages in thread
From: 罗勇刚(Yonggang Luo) @ 2020-10-15 20:38 UTC (permalink / raw)
  To: Peter Maydell; +Cc: Paolo Bonzini, QEMU Developers

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

On Fri, Oct 16, 2020 at 4:30 AM Peter Maydell <peter.maydell@linaro.org>
wrote:
>
> On Thu, 15 Oct 2020 at 21:13, Yonggang Luo <luoyonggang@gmail.com> wrote:
> >
> > Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
> > ---
> >  docs/conf.py                  |  2 +-
> >  docs/sphinx/kerneldoc.py      |  2 +-
> >  scripts/rst-sanitize.py       | 21 +++++++++++++++++++++
> >  tests/qapi-schema/meson.build |  5 +++--
> >  4 files changed, 26 insertions(+), 4 deletions(-)
> >  create mode 100644 scripts/rst-sanitize.py
> >
> > diff --git a/scripts/rst-sanitize.py b/scripts/rst-sanitize.py
> > new file mode 100644
> > index 0000000000..26060f1208
> > --- /dev/null
> > +++ b/scripts/rst-sanitize.py
> > @@ -0,0 +1,21 @@
> > +#!/usr/bin/env python3
> > +
> > +#
> > +# Script for remove cr line ending in file
> > +#
> > +# Authors:
> > +#  Yonggang Luo <luoyonggang@gmail.com>
> > +#
> > +# This work is licensed under the terms of the GNU GPL, version 2
> > +# or, at your option, any later version.  See the COPYING file in
> > +# the top-level directory.
> > +
> > +import sys
> > +
> > +def main(_program, file, *unused):
> > +    with open(file, 'rb') as content_file:
> > +        content = content_file.read()
> > +        sys.stdout.buffer.write(content.replace(b'\r', b''))
> > +
> > +if __name__ == "__main__":
> > +    main(*sys.argv)
>
> Why doesn't the perl rune work? Your commit message doesn't say.


PASS 3 test-qdev-global-props /qdev/properties/dynamic/global
PASS 4 test-qdev-global-props /qdev/properties/global/subclass
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}
 ../../../../../CI-Tools/msys64/usr/bin/sh.EXE
C:/work/xemu/qemu/build/../tests/decode/check.sh python3 -B
C:/work/xemu/qemu/build/../tests/../scripts/decodetree.py
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))}
PYTHONPATH=C:/work/xemu/qemu/scripts PYTHONIOENCODING=utf-8
../../../../CI-Tools/msys64/mingw64/bin/python3.exe
C:/work/xemu/qemu/build/../tests/qapi-schema/test-qapi.py
C:/work/xemu/qemu/build/../tests/qapi-schema/alternate-any.json
C:/work/xemu/qemu/build/../tests/qapi-schema/alternate-array.json
C:/work/xemu/qemu/build/../tests/qapi-schema/alternate-base.json
C:/work/xemu/qemu/build/../tests/qapi-schema/alternate-branch-if-invalid.json
C:/work/xemu/qemu/build/../tests/qapi-schema/alternate-clash.json
C:/work/xemu/qemu/build/../tests/qapi-schema/alternate-conflict-dict.json
C:/work/xemu/qemu/build/../tests/qapi-schema/alternate-conflict-enum-bool.json
C:/work/xemu/qemu/build/../tests/qapi-schema/alternate-conflict-enum-int.json
C:/work/xemu/qemu/build/../tests/qapi-schema/alternate-conflict-string.json
C:/work/xemu/qemu/build/../tests/qapi-schema/alternate-conflict-bool-string.json
C:/work/xemu/qemu/build/../tests/qapi-schema/alternate-conflict-num-string.json
C:/work/xemu/qemu/build/../tests/qapi-schema/alternate-empty.json
C:/work/xemu/qemu/build/../tests/qapi-schema/alternate-invalid-dict.json
C:/work/xemu/qemu/build/../tests/qapi-schema/alternate-nested.json
C:/work/xemu/qemu/build/../tests/qapi-schema/alternate-unknown.json
C:/work/xemu/qemu/build/../tests/qapi-schema/args-alternate.json
C:/work/xemu/qemu/build/../tests/qapi-schema/args-any.json
C:/work/xemu/qemu/build/../tests/qapi-schema/args-array-empty.json
C:/work/xemu/qemu/build/../tests/qapi-schema/args-array-unknown.json
C:/work/xemu/qemu/build/../tests/qapi-schema/args-bad-boxed.json
C:/work/xemu/qemu/build/../tests/qapi-schema/args-boxed-anon.json
C:/work/xemu/qemu/build/../tests/qapi-schema/args-boxed-string.json
C:/work/xemu/qemu/build/../tests/qapi-schema/args-int.json
C:/work/xemu/qemu/build/../tests/qapi-schema/args-invalid.json
C:/work/xemu/qemu/build/../tests/qapi-schema/args-member-array-bad.json
C:/work/xemu/qemu/build/../tests/qapi-schema/args-member-case.json
C:/work/xemu/qemu/build/../tests/qapi-schema/args-member-unknown.json
C:/work/xemu/qemu/build/../tests/qapi-schema/args-name-clash.json
C:/work/xemu/qemu/build/../tests/qapi-schema/args-union.json
C:/work/xemu/qemu/build/../tests/qapi-schema/args-unknown.json
C:/work/xemu/qemu/build/../tests/qapi-schema/bad-base.json
C:/work/xemu/qemu/build/../tests/qapi-schema/bad-data.json
C:/work/xemu/qemu/build/../tests/qapi-schema/bad-ident.json
C:/work/xemu/qemu/build/../tests/qapi-schema/bad-if.json
C:/work/xemu/qemu/build/../tests/qapi-schema/bad-if-empty.json
C:/work/xemu/qemu/build/../tests/qapi-schema/bad-if-empty-list.json
C:/work/xemu/qemu/build/../tests/qapi-schema/bad-if-list.json
C:/work/xemu/qemu/build/../tests/qapi-schema/bad-type-bool.json
C:/work/xemu/qemu/build/../tests/qapi-schema/bad-type-dict.json
C:/work/xemu/qemu/build/../tests/qapi-schema/bad-type-int.json
C:/work/xemu/qemu/build/../tests/qapi-schema/base-cycle-direct.json
C:/work/xemu/qemu/build/../tests/qapi-schema/base-cycle-indirect.json
C:/work/xemu/qemu/build/../tests/qapi-schema/command-int.json
C:/work/xemu/qemu/build/../tests/qapi-schema/comments.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-bad-alternate-member.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-bad-boxed-command-arg.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-bad-command-arg.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-bad-enum-member.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-bad-event-arg.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-bad-feature.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-bad-indent.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-bad-section.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-bad-symbol.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-bad-union-member.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-before-include.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-before-pragma.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-duplicated-arg.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-duplicated-return.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-duplicated-since.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-empty-arg.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-empty-section.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-empty-symbol.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-good.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-interleaved-section.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-invalid-end.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-invalid-end2.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-invalid-return.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-invalid-section.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-invalid-start.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-missing-colon.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-missing-expr.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-missing-space.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-missing.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-no-symbol.json
C:/work/xemu/qemu/build/../tests/qapi-schema/doc-undoc-feature.json
C:/work/xemu/qemu/build/../tests/qapi-schema/double-type.json
C:/work/xemu/qemu/build/../tests/qapi-schema/duplicate-key.json
C:/work/xemu/qemu/build/../tests/qapi-schema/empty.json
C:/work/xemu/qemu/build/../tests/qapi-schema/enum-bad-member.json
C:/work/xemu/qemu/build/../tests/qapi-schema/enum-bad-name.json
C:/work/xemu/qemu/build/../tests/qapi-schema/enum-bad-prefix.json
C:/work/xemu/qemu/build/../tests/qapi-schema/enum-clash-member.json
C:/work/xemu/qemu/build/../tests/qapi-schema/enum-dict-member-unknown.json
C:/work/xemu/qemu/build/../tests/qapi-schema/enum-if-invalid.json
C:/work/xemu/qemu/build/../tests/qapi-schema/enum-int-member.json
C:/work/xemu/qemu/build/../tests/qapi-schema/enum-member-case.json
C:/work/xemu/qemu/build/../tests/qapi-schema/enum-missing-data.json
C:/work/xemu/qemu/build/../tests/qapi-schema/enum-wrong-data.json
C:/work/xemu/qemu/build/../tests/qapi-schema/event-boxed-empty.json
C:/work/xemu/qemu/build/../tests/qapi-schema/event-case.json
C:/work/xemu/qemu/build/../tests/qapi-schema/event-member-invalid-dict.json
C:/work/xemu/qemu/build/../tests/qapi-schema/event-nest-struct.json
C:/work/xemu/qemu/build/../tests/qapi-schema/features-bad-type.json
C:/work/xemu/qemu/build/../tests/qapi-schema/features-deprecated-type.json
C:/work/xemu/qemu/build/../tests/qapi-schema/features-duplicate-name.json
C:/work/xemu/qemu/build/../tests/qapi-schema/features-if-invalid.json
C:/work/xemu/qemu/build/../tests/qapi-schema/features-missing-name.json
C:/work/xemu/qemu/build/../tests/qapi-schema/features-name-bad-type.json
C:/work/xemu/qemu/build/../tests/qapi-schema/features-no-list.json
C:/work/xemu/qemu/build/../tests/qapi-schema/features-unknown-key.json
C:/work/xemu/qemu/build/../tests/qapi-schema/flat-union-array-branch.json
C:/work/xemu/qemu/build/../tests/qapi-schema/flat-union-bad-base.json
C:/work/xemu/qemu/build/../tests/qapi-schema/flat-union-bad-discriminator.json
C:/work/xemu/qemu/build/../tests/qapi-schema/flat-union-base-any.json
C:/work/xemu/qemu/build/../tests/qapi-schema/flat-union-base-union.json
C:/work/xemu/qemu/build/../tests/qapi-schema/flat-union-clash-member.json
C:/work/xemu/qemu/build/../tests/qapi-schema/flat-union-discriminator-bad-name.json
C:/work/xemu/qemu/build/../tests/qapi-schema/flat-union-empty.json
C:/work/xemu/qemu/build/../tests/qapi-schema/flat-union-inline.json
C:/work/xemu/qemu/build/../tests/qapi-schema/flat-union-inline-invalid-dict.json
C:/work/xemu/qemu/build/../tests/qapi-schema/flat-union-int-branch.json
C:/work/xemu/qemu/build/../tests/qapi-schema/flat-union-invalid-branch-key.json
C:/work/xemu/qemu/build/../tests/qapi-schema/flat-union-invalid-discriminator.json
C:/work/xemu/qemu/build/../tests/qapi-schema/flat-union-invalid-if-discriminator.json
C:/work/xemu/qemu/build/../tests/qapi-schema/flat-union-no-base.json
C:/work/xemu/qemu/build/../tests/qapi-schema/flat-union-optional-discriminator.json
C:/work/xemu/qemu/build/../tests/qapi-schema/flat-union-string-discriminator.json
C:/work/xemu/qemu/build/../tests/qapi-schema/funny-char.json
C:/work/xemu/qemu/build/../tests/qapi-schema/funny-word.json
C:/work/xemu/qemu/build/../tests/qapi-schema/ident-with-escape.json
C:/work/xemu/qemu/build/../tests/qapi-schema/include-before-err.json
C:/work/xemu/qemu/build/../tests/qapi-schema/include-cycle.json
C:/work/xemu/qemu/build/../tests/qapi-schema/include-extra-junk.json
C:/work/xemu/qemu/build/../tests/qapi-schema/include-nested-err.json
C:/work/xemu/qemu/build/../tests/qapi-schema/include-no-file.json
C:/work/xemu/qemu/build/../tests/qapi-schema/include-non-file.json
C:/work/xemu/qemu/build/../tests/qapi-schema/include-repetition.json
C:/work/xemu/qemu/build/../tests/qapi-schema/include-self-cycle.json
C:/work/xemu/qemu/build/../tests/qapi-schema/include-simple.json
C:/work/xemu/qemu/build/../tests/qapi-schema/indented-expr.json
C:/work/xemu/qemu/build/../tests/qapi-schema/leading-comma-list.json
C:/work/xemu/qemu/build/../tests/qapi-schema/leading-comma-object.json
C:/work/xemu/qemu/build/../tests/qapi-schema/missing-colon.json
C:/work/xemu/qemu/build/../tests/qapi-schema/missing-comma-list.json
C:/work/xemu/qemu/build/../tests/qapi-schema/missing-comma-object.json
C:/work/xemu/qemu/build/../tests/qapi-schema/missing-type.json
C:/work/xemu/qemu/build/../tests/qapi-schema/nested-struct-data.json
C:/work/xemu/qemu/build/../tests/qapi-schema/nested-struct-data-invalid-dict.json
C:/work/xemu/qemu/build/../tests/qapi-schema/non-objects.json
C:/work/xemu/qemu/build/../tests/qapi-schema/oob-coroutine.json
C:/work/xemu/qemu/build/../tests/qapi-schema/oob-test.json
C:/work/xemu/qemu/build/../tests/qapi-schema/allow-preconfig-test.json
C:/work/xemu/qemu/build/../tests/qapi-schema/pragma-doc-required-crap.json
C:/work/xemu/qemu/build/../tests/qapi-schema/pragma-extra-junk.json
C:/work/xemu/qemu/build/../tests/qapi-schema/pragma-name-case-whitelist-crap.json
C:/work/xemu/qemu/build/../tests/qapi-schema/pragma-non-dict.json
C:/work/xemu/qemu/build/../tests/qapi-schema/pragma-unknown.json
C:/work/xemu/qemu/build/../tests/qapi-schema/pragma-returns-whitelist-crap.json
C:/work/xemu/qemu/build/../tests/qapi-schema/qapi-schema-test.json
C:/work/xemu/qemu/build/../tests/qapi-schema/quoted-structural-chars.json
C:/work/xemu/qemu/build/../tests/qapi-schema/redefined-builtin.json
C:/work/xemu/qemu/build/../tests/qapi-schema/redefined-command.json
C:/work/xemu/qemu/build/../tests/qapi-schema/redefined-event.json
C:/work/xemu/qemu/build/../tests/qapi-schema/redefined-type.json
C:/work/xemu/qemu/build/../tests/qapi-schema/reserved-command-q.json
C:/work/xemu/qemu/build/../tests/qapi-schema/reserved-enum-q.json
C:/work/xemu/qemu/build/../tests/qapi-schema/reserved-member-has.json
C:/work/xemu/qemu/build/../tests/qapi-schema/reserved-member-q.json
C:/work/xemu/qemu/build/../tests/qapi-schema/reserved-member-u.json
C:/work/xemu/qemu/build/../tests/qapi-schema/reserved-member-underscore.json
C:/work/xemu/qemu/build/../tests/qapi-schema/reserved-type-kind.json
C:/work/xemu/qemu/build/../tests/qapi-schema/reserved-type-list.json
C:/work/xemu/qemu/build/../tests/qapi-schema/returns-alternate.json
C:/work/xemu/qemu/build/../tests/qapi-schema/returns-array-bad.json
C:/work/xemu/qemu/build/../tests/qapi-schema/returns-dict.json
C:/work/xemu/qemu/build/../tests/qapi-schema/returns-unknown.json
C:/work/xemu/qemu/build/../tests/qapi-schema/returns-whitelist.json
C:/work/xemu/qemu/build/../tests/qapi-schema/string-code-point-31.json
C:/work/xemu/qemu/build/../tests/qapi-schema/string-code-point-127.json
C:/work/xemu/qemu/build/../tests/qapi-schema/struct-base-clash-deep.json
C:/work/xemu/qemu/build/../tests/qapi-schema/struct-base-clash.json
C:/work/xemu/qemu/build/../tests/qapi-schema/struct-data-invalid.json
C:/work/xemu/qemu/build/../tests/qapi-schema/struct-member-if-invalid.json
C:/work/xemu/qemu/build/../tests/qapi-schema/struct-member-invalid-dict.json
C:/work/xemu/qemu/build/../tests/qapi-schema/struct-member-invalid.json
C:/work/xemu/qemu/build/../tests/qapi-schema/trailing-comma-list.json
C:/work/xemu/qemu/build/../tests/qapi-schema/trailing-comma-object.json
C:/work/xemu/qemu/build/../tests/qapi-schema/type-bypass-bad-gen.json
C:/work/xemu/qemu/build/../tests/qapi-schema/unclosed-list.json
C:/work/xemu/qemu/build/../tests/qapi-schema/unclosed-object.json
C:/work/xemu/qemu/build/../tests/qapi-schema/unclosed-string.json
C:/work/xemu/qemu/build/../tests/qapi-schema/union-base-empty.json
C:/work/xemu/qemu/build/../tests/qapi-schema/union-base-no-discriminator.json
C:/work/xemu/qemu/build/../tests/qapi-schema/union-branch-case.json
C:/work/xemu/qemu/build/../tests/qapi-schema/union-branch-if-invalid.json
C:/work/xemu/qemu/build/../tests/qapi-schema/union-branch-invalid-dict.json
C:/work/xemu/qemu/build/../tests/qapi-schema/union-clash-branches.json
C:/work/xemu/qemu/build/../tests/qapi-schema/union-empty.json
C:/work/xemu/qemu/build/../tests/qapi-schema/union-invalid-base.json
C:/work/xemu/qemu/build/../tests/qapi-schema/union-optional-branch.json
C:/work/xemu/qemu/build/../tests/qapi-schema/union-unknown.json
C:/work/xemu/qemu/build/../tests/qapi-schema/unknown-escape.json
C:/work/xemu/qemu/build/../tests/qapi-schema/unknown-expr-key.json
"C:/CI-Tools/msys64/mingw64/bin/python3.exe"
"C:/work/xemu/qemu/meson/meson.py" "--internal" "exe" "--capture"
"tests/qapi-schema/doc-good.ref.nocr" "--" "perl" "-pe" "$x = chr 13;
s/$x$//" "../tests/qapi-schema/doc-good.txt" && if test -e
tests/qapi-schema/doc-good.ref.nocr; then printf '%s\n'
tests/qapi-schema/doc-good.ref.nocr >
tests/qapi-schema/doc-good.ref.nocr.stamp; fi
syntax error at -e line 1, near "="
Execution of -e aborted due to compilation errors.
make: *** [Makefile.ninja:2572:tests/qapi-schema/doc-good.ref.nocr.stamp]
错误 255
>
> > diff --git a/tests/qapi-schema/meson.build
b/tests/qapi-schema/meson.build
> > index 1f222a7a13..20a7641af8 100644
> > --- a/tests/qapi-schema/meson.build
> > +++ b/tests/qapi-schema/meson.build
> > @@ -251,18 +251,19 @@ qapi_doc_out = custom_target('QAPI rST doc',
> >  # using an explicit '\' character in the command arguments to
> >  # a custom_target(), as Meson will unhelpfully replace it with a '/'
> >  # (https://github.com/mesonbuild/meson/issues/1564)
> > +rst_sanitize_cmd = [find_program('../../scripts/rst-sanitize.py'),
'@INPUT@']
> >  qapi_doc_out_nocr = custom_target('QAPI rST doc newline-sanitized',
> >                                    output: ['doc-good.txt.nocr'],
> >                                    input: qapi_doc_out[0],
> >                                    build_by_default: build_docs,
> > -                                  command: ['perl', '-pe', '$x = chr
13; s/$x$//', '@INPUT@'],
> > +                                  command: rst_sanitize_cmd,
> >                                    capture: true)
> >
> >  qapi_doc_ref_nocr = custom_target('QAPI rST doc reference
newline-sanitized',
> >                                    output: ['doc-good.ref.nocr'],
> >                                    input: files('doc-good.txt'),
> >                                    build_by_default: build_docs,
> > -                                  command: ['perl', '-pe', '$x = chr
13; s/$x$//', '@INPUT@'],
> > +                                  command: rst_sanitize_cmd,
> >                                    capture: true)
>
> thanks
> -- PMM



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

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

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 1/4] docs: Fixes build docs on msys2/mingw
  2020-10-15 20:30   ` Peter Maydell
  2020-10-15 20:38     ` 罗勇刚(Yonggang Luo)
@ 2020-10-15 21:22     ` Paolo Bonzini
  2020-10-15 21:33       ` 罗勇刚(Yonggang Luo)
  1 sibling, 1 reply; 13+ messages in thread
From: Paolo Bonzini @ 2020-10-15 21:22 UTC (permalink / raw)
  To: Peter Maydell; +Cc: Yonggang Luo, QEMU Developers

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

Il gio 15 ott 2020, 22:30 Peter Maydell <peter.maydell@linaro.org> ha
scritto:

> On Thu, 15 Oct 2020 at 21:13, Yonggang Luo <luoyonggang@gmail.com> wrote:
> >
> > Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
> > ---
> >  docs/conf.py                  |  2 +-
> >  docs/sphinx/kerneldoc.py      |  2 +-
> >  scripts/rst-sanitize.py       | 21 +++++++++++++++++++++
> >  tests/qapi-schema/meson.build |  5 +++--
> >  4 files changed, 26 insertions(+), 4 deletions(-)
> >  create mode 100644 scripts/rst-sanitize.py
> >
> > diff --git a/scripts/rst-sanitize.py b/scripts/rst-sanitize.py
> > new file mode 100644
> > index 0000000000..26060f1208
> > --- /dev/null
> > +++ b/scripts/rst-sanitize.py
> > @@ -0,0 +1,21 @@
> > +#!/usr/bin/env python3
> > +
> > +#
> > +# Script for remove cr line ending in file
> > +#
> > +# Authors:
> > +#  Yonggang Luo <luoyonggang@gmail.com>
> > +#
> > +# This work is licensed under the terms of the GNU GPL, version 2
> > +# or, at your option, any later version.  See the COPYING file in
> > +# the top-level directory.
> > +
> > +import sys
> > +
> > +def main(_program, file, *unused):
> > +    with open(file, 'rb') as content_file:
> > +        content = content_file.read()
> > +        sys.stdout.buffer.write(content.replace(b'\r', b''))
> > +
> > +if __name__ == "__main__":
> > +    main(*sys.argv)
>
> Why doesn't the perl rune work? Your commit message doesn't say.
>

Ninjatool gets confused by Windows escapes. So it's a QEMU-ism and
switching to ninja fixes it. There's no need to use a separate script for
this.

Paolo


> > diff --git a/tests/qapi-schema/meson.build
> b/tests/qapi-schema/meson.build
> > index 1f222a7a13..20a7641af8 100644
> > --- a/tests/qapi-schema/meson.build
> > +++ b/tests/qapi-schema/meson.build
> > @@ -251,18 +251,19 @@ qapi_doc_out = custom_target('QAPI rST doc',
> >  # using an explicit '\' character in the command arguments to
> >  # a custom_target(), as Meson will unhelpfully replace it with a '/'
> >  # (https://github.com/mesonbuild/meson/issues/1564)
> > +rst_sanitize_cmd = [find_program('../../scripts/rst-sanitize.py'),
> '@INPUT@']
> >  qapi_doc_out_nocr = custom_target('QAPI rST doc newline-sanitized',
> >                                    output: ['doc-good.txt.nocr'],
> >                                    input: qapi_doc_out[0],
> >                                    build_by_default: build_docs,
> > -                                  command: ['perl', '-pe', '$x = chr
> 13; s/$x$//', '@INPUT@'],
> > +                                  command: rst_sanitize_cmd,
> >                                    capture: true)
> >
> >  qapi_doc_ref_nocr = custom_target('QAPI rST doc reference
> newline-sanitized',
> >                                    output: ['doc-good.ref.nocr'],
> >                                    input: files('doc-good.txt'),
> >                                    build_by_default: build_docs,
> > -                                  command: ['perl', '-pe', '$x = chr
> 13; s/$x$//', '@INPUT@'],
> > +                                  command: rst_sanitize_cmd,
> >                                    capture: true)
>
> thanks
> -- PMM
>
>

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

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 2/4] configure: the docdir option should passed to meson as is.
  2020-10-15 20:10 ` [PATCH v2 2/4] configure: the docdir option should passed to meson as is Yonggang Luo
@ 2020-10-15 21:23   ` Paolo Bonzini
  2020-10-15 21:39     ` 罗勇刚(Yonggang Luo)
  0 siblings, 1 reply; 13+ messages in thread
From: Paolo Bonzini @ 2020-10-15 21:23 UTC (permalink / raw)
  To: Yonggang Luo; +Cc: qemu-devel

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

Why?

Paolo

Il gio 15 ott 2020, 22:11 Yonggang Luo <luoyonggang@gmail.com> ha scritto:

> Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
> ---
>  configure | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/configure b/configure
> index f839c2a557..1ce31f97b4 100755
> --- a/configure
> +++ b/configure
> @@ -971,7 +971,7 @@ for opt do
>    ;;
>    --with-suffix=*) qemu_suffix="$optarg"
>    ;;
> -  --docdir=*) qemu_docdir="$optarg"
> +  --docdir=*) docdir="$optarg"
>    ;;
>    --sysconfdir=*) sysconfdir="$optarg"
>    ;;
> @@ -5770,7 +5770,6 @@ fi
>  qemu_confdir="$sysconfdir/$qemu_suffix"
>  qemu_moddir="$libdir/$qemu_suffix"
>  qemu_datadir="$datadir/$qemu_suffix"
> -qemu_docdir="$docdir/$qemu_suffix"
>  qemu_localedir="$datadir/locale"
>  qemu_icondir="$datadir/icons"
>  qemu_desktopdir="$datadir/applications"
> --
> 2.28.0.windows.1
>
>

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

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 1/4] docs: Fixes build docs on msys2/mingw
  2020-10-15 21:22     ` Paolo Bonzini
@ 2020-10-15 21:33       ` 罗勇刚(Yonggang Luo)
  0 siblings, 0 replies; 13+ messages in thread
From: 罗勇刚(Yonggang Luo) @ 2020-10-15 21:33 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: Peter Maydell, QEMU Developers

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

It's tests, running by make

On Fri, Oct 16, 2020 at 5:23 AM Paolo Bonzini <pbonzini@redhat.com> wrote:
>
>
>
> Il gio 15 ott 2020, 22:30 Peter Maydell <peter.maydell@linaro.org> ha
scritto:
>>
>> On Thu, 15 Oct 2020 at 21:13, Yonggang Luo <luoyonggang@gmail.com> wrote:
>> >
>> > Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
>> > ---
>> >  docs/conf.py                  |  2 +-
>> >  docs/sphinx/kerneldoc.py      |  2 +-
>> >  scripts/rst-sanitize.py       | 21 +++++++++++++++++++++
>> >  tests/qapi-schema/meson.build |  5 +++--
>> >  4 files changed, 26 insertions(+), 4 deletions(-)
>> >  create mode 100644 scripts/rst-sanitize.py
>> >
>> > diff --git a/scripts/rst-sanitize.py b/scripts/rst-sanitize.py
>> > new file mode 100644
>> > index 0000000000..26060f1208
>> > --- /dev/null
>> > +++ b/scripts/rst-sanitize.py
>> > @@ -0,0 +1,21 @@
>> > +#!/usr/bin/env python3
>> > +
>> > +#
>> > +# Script for remove cr line ending in file
>> > +#
>> > +# Authors:
>> > +#  Yonggang Luo <luoyonggang@gmail.com>
>> > +#
>> > +# This work is licensed under the terms of the GNU GPL, version 2
>> > +# or, at your option, any later version.  See the COPYING file in
>> > +# the top-level directory.
>> > +
>> > +import sys
>> > +
>> > +def main(_program, file, *unused):
>> > +    with open(file, 'rb') as content_file:
>> > +        content = content_file.read()
>> > +        sys.stdout.buffer.write(content.replace(b'\r', b''))
>> > +
>> > +if __name__ == "__main__":
>> > +    main(*sys.argv)
>>
>> Why doesn't the perl rune work? Your commit message doesn't say.
>
>
> Ninjatool gets confused by Windows escapes. So it's a QEMU-ism and
switching to ninja fixes it. There's no need to use a separate script for
this.
>
> Paolo
>
>>
>> > diff --git a/tests/qapi-schema/meson.build
b/tests/qapi-schema/meson.build
>> > index 1f222a7a13..20a7641af8 100644
>> > --- a/tests/qapi-schema/meson.build
>> > +++ b/tests/qapi-schema/meson.build
>> > @@ -251,18 +251,19 @@ qapi_doc_out = custom_target('QAPI rST doc',
>> >  # using an explicit '\' character in the command arguments to
>> >  # a custom_target(), as Meson will unhelpfully replace it with a '/'
>> >  # (https://github.com/mesonbuild/meson/issues/1564)
>> > +rst_sanitize_cmd = [find_program('../../scripts/rst-sanitize.py'),
'@INPUT@']
>> >  qapi_doc_out_nocr = custom_target('QAPI rST doc newline-sanitized',
>> >                                    output: ['doc-good.txt.nocr'],
>> >                                    input: qapi_doc_out[0],
>> >                                    build_by_default: build_docs,
>> > -                                  command: ['perl', '-pe', '$x = chr
13; s/$x$//', '@INPUT@'],
>> > +                                  command: rst_sanitize_cmd,
>> >                                    capture: true)
>> >
>> >  qapi_doc_ref_nocr = custom_target('QAPI rST doc reference
newline-sanitized',
>> >                                    output: ['doc-good.ref.nocr'],
>> >                                    input: files('doc-good.txt'),
>> >                                    build_by_default: build_docs,
>> > -                                  command: ['perl', '-pe', '$x = chr
13; s/$x$//', '@INPUT@'],
>> > +                                  command: rst_sanitize_cmd,
>> >                                    capture: true)
>>
>> thanks
>> -- PMM
>>


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

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

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 2/4] configure: the docdir option should passed to meson as is.
  2020-10-15 21:23   ` Paolo Bonzini
@ 2020-10-15 21:39     ` 罗勇刚(Yonggang Luo)
  0 siblings, 0 replies; 13+ messages in thread
From: 罗勇刚(Yonggang Luo) @ 2020-10-15 21:39 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: qemu-devel

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

Grep  qemu_docdir and docdir  in configure, you will know why,  qemu_docdir
not used at all in configure,

On Fri, Oct 16, 2020 at 5:24 AM Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> Why?
>
> Paolo
>
> Il gio 15 ott 2020, 22:11 Yonggang Luo <luoyonggang@gmail.com> ha scritto:
>>
>> Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
>> ---
>>  configure | 3 +--
>>  1 file changed, 1 insertion(+), 2 deletions(-)
>>
>> diff --git a/configure b/configure
>> index f839c2a557..1ce31f97b4 100755
>> --- a/configure
>> +++ b/configure
>> @@ -971,7 +971,7 @@ for opt do
>>    ;;
>>    --with-suffix=*) qemu_suffix="$optarg"
>>    ;;
>> -  --docdir=*) qemu_docdir="$optarg"
>> +  --docdir=*) docdir="$optarg"
>>    ;;
>>    --sysconfdir=*) sysconfdir="$optarg"
>>    ;;
>> @@ -5770,7 +5770,6 @@ fi
>>  qemu_confdir="$sysconfdir/$qemu_suffix"
>>  qemu_moddir="$libdir/$qemu_suffix"
>>  qemu_datadir="$datadir/$qemu_suffix"
>> -qemu_docdir="$docdir/$qemu_suffix"
>>  qemu_localedir="$datadir/locale"
>>  qemu_icondir="$datadir/icons"
>>  qemu_desktopdir="$datadir/applications"
>> --
>> 2.28.0.windows.1
>>


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

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

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 0/4] Fixes docs building on msys2/mingw
  2020-10-15 20:10 [PATCH v2 0/4] Fixes docs building on msys2/mingw Yonggang Luo
                   ` (3 preceding siblings ...)
  2020-10-15 20:10 ` [PATCH v2 4/4] cirrus: Enable doc build on msys2/mingw Yonggang Luo
@ 2020-10-15 21:52 ` Paolo Bonzini
  2020-10-15 21:55   ` 罗勇刚(Yonggang Luo)
  4 siblings, 1 reply; 13+ messages in thread
From: Paolo Bonzini @ 2020-10-15 21:52 UTC (permalink / raw)
  To: Yonggang Luo; +Cc: qemu-devel

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

Looks good, apart from the CR removal patch that can simply be dropped.

Paolo

Il gio 15 ott 2020, 22:10 Yonggang Luo <luoyonggang@gmail.com> ha scritto:

> v1 - v2
> Also move the docs configure part from
> configure to meson, this also fixed the pending
> ninjatool removal caused issue that docs  can
> not be build under msys2/mingw
>
> Yonggang Luo (4):
>   docs: Fixes build docs on msys2/mingw
>   configure: the docdir option should passed to meson as is.
>   meson: Move the detection logic for sphinx to meson
>   cirrus: Enable doc build on msys2/mingw
>
>  .cirrus.yml                   |  6 +++-
>  configure                     | 62 +++--------------------------------
>  docs/conf.py                  |  2 +-
>  docs/meson.build              |  4 +--
>  docs/sphinx/kerneldoc.py      |  2 +-
>  meson.build                   | 59 +++++++++++++++++++++++++++++----
>  meson_options.txt             |  5 ++-
>  scripts/rst-sanitize.py       | 21 ++++++++++++
>  tests/qapi-schema/meson.build |  7 ++--
>  9 files changed, 95 insertions(+), 73 deletions(-)
>  create mode 100644 scripts/rst-sanitize.py
>
> --
> 2.28.0.windows.1
>
>
>

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

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 0/4] Fixes docs building on msys2/mingw
  2020-10-15 21:52 ` [PATCH v2 0/4] Fixes docs building " Paolo Bonzini
@ 2020-10-15 21:55   ` 罗勇刚(Yonggang Luo)
  0 siblings, 0 replies; 13+ messages in thread
From: 罗勇刚(Yonggang Luo) @ 2020-10-15 21:55 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: qemu-devel

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

On Fri, Oct 16, 2020 at 5:53 AM Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> Looks good, apart from the CR removal patch that can simply be dropped.
Resend with fixes, the CR removal patch composite two part.

>
> Paolo
>
> Il gio 15 ott 2020, 22:10 Yonggang Luo <luoyonggang@gmail.com> ha scritto:
>>
>> v1 - v2
>> Also move the docs configure part from
>> configure to meson, this also fixed the pending
>> ninjatool removal caused issue that docs  can
>> not be build under msys2/mingw
>>
>> Yonggang Luo (4):
>>   docs: Fixes build docs on msys2/mingw
>>   configure: the docdir option should passed to meson as is.
>>   meson: Move the detection logic for sphinx to meson
>>   cirrus: Enable doc build on msys2/mingw
>>
>>  .cirrus.yml                   |  6 +++-
>>  configure                     | 62 +++--------------------------------
>>  docs/conf.py                  |  2 +-
>>  docs/meson.build              |  4 +--
>>  docs/sphinx/kerneldoc.py      |  2 +-
>>  meson.build                   | 59 +++++++++++++++++++++++++++++----
>>  meson_options.txt             |  5 ++-
>>  scripts/rst-sanitize.py       | 21 ++++++++++++
>>  tests/qapi-schema/meson.build |  7 ++--
>>  9 files changed, 95 insertions(+), 73 deletions(-)
>>  create mode 100644 scripts/rst-sanitize.py
>>
>> --
>> 2.28.0.windows.1
>>
>>


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

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

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2020-10-15 21:58 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-15 20:10 [PATCH v2 0/4] Fixes docs building on msys2/mingw Yonggang Luo
2020-10-15 20:10 ` [PATCH v2 1/4] docs: Fixes build docs " Yonggang Luo
2020-10-15 20:30   ` Peter Maydell
2020-10-15 20:38     ` 罗勇刚(Yonggang Luo)
2020-10-15 21:22     ` Paolo Bonzini
2020-10-15 21:33       ` 罗勇刚(Yonggang Luo)
2020-10-15 20:10 ` [PATCH v2 2/4] configure: the docdir option should passed to meson as is Yonggang Luo
2020-10-15 21:23   ` Paolo Bonzini
2020-10-15 21:39     ` 罗勇刚(Yonggang Luo)
2020-10-15 20:10 ` [PATCH v2 3/4] meson: Move the detection logic for sphinx to meson Yonggang Luo
2020-10-15 20:10 ` [PATCH v2 4/4] cirrus: Enable doc build on msys2/mingw Yonggang Luo
2020-10-15 21:52 ` [PATCH v2 0/4] Fixes docs building " Paolo Bonzini
2020-10-15 21:55   ` 罗勇刚(Yonggang Luo)

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).