All of lore.kernel.org
 help / color / mirror / Atom feed
* [PULL 00/17] Build system changes and misc fixes for QEMU 5.2 soft freeze
@ 2020-10-26 13:51 Paolo Bonzini
  2020-10-26 13:51 ` [PULL 01/17] build: fix macOS --enable-modules build Paolo Bonzini
                   ` (17 more replies)
  0 siblings, 18 replies; 26+ messages in thread
From: Paolo Bonzini @ 2020-10-26 13:51 UTC (permalink / raw)
  To: qemu-devel

The following changes since commit 4c5b97bfd0dd54dc27717ae8d1cd10e14eef1430:

  Merge remote-tracking branch 'remotes/kraxel/tags/modules-20201022-pull-request' into staging (2020-10-22 12:33:21 +0100)

are available in the Git repository at:

  https://gitlab.com/bonzini/qemu.git tags/for-upstream

for you to fetch changes up to 8b0e484c8bf82e07bb0439bff04e248c63cdc86a:

  machine: move SMP initialization from vl.c (2020-10-26 07:08:40 -0400)

----------------------------------------------------------------
* fix --disable-tcg builds (Claudio)
* Fixes for macOS --enable-modules build and OpenBSD curses/iconv detection (myself)
* Start preparing for meson 0.56 (myself)
* Move directory configuration to meson (myself)
* Start untangling qemu_init (myself)
* Windows fixes (Sunil)
* Remove -no-kbm (Thomas)

----------------------------------------------------------------
Claudio Fontana (2):
      qtest: unbreak non-TCG builds in bios-tables-test
      replay: do not build if TCG is not available

Luc Michel (1):
      hw/core/qdev-clock: add a reference on aliased clocks

Paolo Bonzini (11):
      build: fix macOS --enable-modules build
      meson: rewrite curses/iconv test
      do not use colons in test names
      Makefile: separate meson rerun from the rest of the ninja invocation
      configure: allow configuring localedir
      configure: move directory options from config-host.mak to meson
      configure: remove unused variable from config-host.mak
      configure: move install_blobs from configure to meson
      machine: remove deprecated -machine enforce-config-section option
      machine: move UP defaults to class_base_init
      machine: move SMP initialization from vl.c

Sunil Muthuswamy (2):
      WHPX: Fix WHPX build break
      win32: boot broken when bind & data dir are the same

Thomas Huth (1):
      Remove deprecated -no-kvm option

 .cirrus.yml                        |   2 +-
 Makefile                           |  44 ++++++---
 block/meson.build                  |   3 +-
 configure                          |  64 +++----------
 contrib/vhost-user-gpu/meson.build |   2 +-
 docs/system/deprecated.rst         |  23 ++---
 hw/core/machine.c                  |  36 +++-----
 hw/core/qdev-clock.c               |   8 ++
 include/hw/boards.h                |   1 -
 meson.build                        | 178 ++++++++++++++++++++++---------------
 meson_options.txt                  |   4 +
 migration/migration.c              |  10 ---
 net/meson.build                    |   3 +-
 pc-bios/descriptors/meson.build    |   4 +-
 pc-bios/meson.build                |  15 ++--
 qemu-options.hx                    |  11 ---
 replay/meson.build                 |   4 +-
 replay/stubs-system.c              |  96 ++++++++++++++++++++
 scripts/undefsym.py                |  11 ++-
 softmmu/vl.c                       |  16 ----
 stubs/meson.build                  |   4 +-
 stubs/replay-tools.c               |  83 +++++++++++++++++
 stubs/replay-user.c                |   9 --
 stubs/replay.c                     |  78 ----------------
 tests/fp/meson.build               |   6 +-
 tests/ptimer-test-stubs.c          |   5 --
 tests/qtest/bios-tables-test.c     |  10 +++
 tests/qtest/meson.build            |   2 +-
 tests/qtest/qmp-cmd-test.c         |   3 +
 tools/virtiofsd/meson.build        |   2 +-
 ui/icons/meson.build               |   6 +-
 ui/meson.build                     |   2 +-
 util/cutils.c                      |   2 +-
 version.texi.in                    |   2 -
 34 files changed, 416 insertions(+), 333 deletions(-)
 create mode 100644 replay/stubs-system.c
 create mode 100644 stubs/replay-tools.c
 delete mode 100644 stubs/replay-user.c
 delete mode 100644 version.texi.in
-- 
2.26.2



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

* [PULL 01/17] build: fix macOS --enable-modules build
  2020-10-26 13:51 [PULL 00/17] Build system changes and misc fixes for QEMU 5.2 soft freeze Paolo Bonzini
@ 2020-10-26 13:51 ` Paolo Bonzini
  2020-10-27  9:27   ` Philippe Mathieu-Daudé
  2020-10-26 13:51 ` [PULL 02/17] meson: rewrite curses/iconv test Paolo Bonzini
                   ` (16 subsequent siblings)
  17 siblings, 1 reply; 26+ messages in thread
From: Paolo Bonzini @ 2020-10-26 13:51 UTC (permalink / raw)
  To: qemu-devel; +Cc: Emmanuel Blot

Apple's nm implementation includes empty lines in the output that are not
found in GNU binutils.  This confuses scripts/undefsym.py, though it did
not confuse the scripts/undefsym.sh script that it replaced.  To fix
this, ignore lines that do not have two fields.

Reported-by: Emmanuel Blot <eblot.ml@gmail.com>
Tested-by: Emmanuel Blot <eblot.ml@gmail.com>
Fixes: 604f3e4e90 ("meson: Convert undefsym.sh to undefsym.py", 2020-09-08)
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 .cirrus.yml         |  2 +-
 scripts/undefsym.py | 11 +++++------
 2 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/.cirrus.yml b/.cirrus.yml
index 81a2960b1a..900437dd2a 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -40,7 +40,7 @@ macos_xcode_task:
   script:
     - mkdir build
     - cd build
-    - ../configure --extra-cflags='-Wno-error=deprecated-declarations'
+    - ../configure --extra-cflags='-Wno-error=deprecated-declarations' --enable-modules
                    --enable-werror --cc=clang || { cat config.log meson-logs/meson-log.txt; exit 1; }
     - gmake -j$(sysctl -n hw.ncpu)
     - gmake check V=1
diff --git a/scripts/undefsym.py b/scripts/undefsym.py
index 69a895cd26..4b6a72d95f 100644
--- a/scripts/undefsym.py
+++ b/scripts/undefsym.py
@@ -15,12 +15,11 @@ def filter_lines_set(stdout, from_staticlib):
     linesSet = set()
     for line in stdout.splitlines():
         tokens = line.split(b' ')
-        if len(tokens) >= 1:
-            if len(tokens) > 1:
-                if from_staticlib and tokens[1] == b'U':
-                    continue
-                if not from_staticlib and tokens[1] != b'U':
-                    continue
+        if len(tokens) >= 2:
+            if from_staticlib and tokens[1] == b'U':
+                continue
+            if not from_staticlib and tokens[1] != b'U':
+                continue
             new_line = b'-Wl,-u,' + tokens[0]
             if not new_line in linesSet:
                 linesSet.add(new_line)
-- 
2.26.2




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

* [PULL 02/17] meson: rewrite curses/iconv test
  2020-10-26 13:51 [PULL 00/17] Build system changes and misc fixes for QEMU 5.2 soft freeze Paolo Bonzini
  2020-10-26 13:51 ` [PULL 01/17] build: fix macOS --enable-modules build Paolo Bonzini
@ 2020-10-26 13:51 ` Paolo Bonzini
  2020-10-26 13:51 ` [PULL 03/17] do not use colons in test names Paolo Bonzini
                   ` (15 subsequent siblings)
  17 siblings, 0 replies; 26+ messages in thread
From: Paolo Bonzini @ 2020-10-26 13:51 UTC (permalink / raw)
  To: qemu-devel

Redo the curses test to do the same tests that the configure
check used to do.  OpenBSD triggers the warning because
it does not support NCURSES_WIDECHAR and thus the cc.links
test fails.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 meson.build | 127 ++++++++++++++++++++++++++++++----------------------
 1 file changed, 73 insertions(+), 54 deletions(-)

diff --git a/meson.build b/meson.build
index 7627a0ae46..0edde14ad7 100644
--- a/meson.build
+++ b/meson.build
@@ -465,70 +465,89 @@ endif
 iconv = not_found
 curses = not_found
 if have_system and not get_option('curses').disabled()
-  if not get_option('iconv').disabled()
-    libiconv = cc.find_library('iconv',
-                               required: false,
-                               static: enable_static)
-    if cc.links('''
-      #include <iconv.h>
-      int main(void) {
-        iconv_t conv = iconv_open("WCHAR_T", "UCS-2");
-        return conv != (iconv_t) -1;
-      }''', dependencies: [libiconv])
-      iconv = declare_dependency(dependencies: [libiconv])
+  curses_test = '''
+    #include <locale.h>
+    #include <curses.h>
+    #include <wchar.h>
+    int main(void) {
+      wchar_t wch = L'w';
+      setlocale(LC_ALL, "");
+      resize_term(0, 0);
+      addwstr(L"wide chars\n");
+      addnwstr(&wch, 1);
+      add_wch(WACS_DEGREE);
+      return 0;
+    }'''
+
+  curses = dependency((targetos == 'windows' ? 'ncurses' : 'ncursesw'),
+                      required: false,
+                      method: 'pkg-config',
+                      static: enable_static)
+  msg = get_option('curses').enabled() ? 'curses library not found' : ''
+  if curses.found()
+    if cc.links(curses_test, dependencies: [curses])
+      curses = declare_dependency(compile_args: '-DNCURSES_WIDECHAR', dependencies: [curses])
+    else
+      msg = 'curses package not usable'
+      curses = not_found
     endif
   endif
-  if get_option('iconv').enabled() and not iconv.found()
-    error('Cannot detect iconv API')
-  endif
-  if iconv.found()
-    curses_libname_list = ['ncursesw', 'ncurses', 'cursesw', 'pdcurses']
-    curses_test = '''
-      #include <locale.h>
-      #include <curses.h>
-      #include <wchar.h>
-      int main(void) {
-        wchar_t wch = L'w';
-        setlocale(LC_ALL, "");
-        resize_term(0, 0);
-        addwstr(L"wide chars\n");
-        addnwstr(&wch, 1);
-        add_wch(WACS_DEGREE);
-        return 0;
-      }'''
-    foreach curses_libname : curses_libname_list
-      libcurses = dependency(curses_libname,
-                             required: false,
-                             method: 'pkg-config',
-                             static: enable_static)
-
-      if not libcurses.found()
-        dirs = ['/usr/include/ncursesw']
-        if targetos == 'windows'
-          dirs = []
-        endif
+  if not curses.found()
+    curses_compile_args = ['-DNCURSES_WIDECHAR']
+    has_curses_h = cc.has_header('curses.h', args: curses_compile_args)
+    if targetos != 'windows' and not has_curses_h
+      message('Trying with /usr/include/ncursesw')
+      curses_compile_args += ['-I/usr/include/ncursesw']
+      has_curses_h = cc.has_header('curses.h', args: curses_compile_args)
+    endif
+    if has_curses_h
+      curses_libname_list = (targetos == 'windows' ? ['pdcurses'] : ['ncursesw', 'cursesw'])
+      foreach curses_libname : curses_libname_list
         libcurses = cc.find_library(curses_libname,
                                     required: false,
-                                    dirs: dirs,
                                     static: enable_static)
-      endif
-      if libcurses.found()
-        if cc.links(curses_test, dependencies: [libcurses])
-          curses = declare_dependency(compile_args: '-DNCURSES_WIDECHAR', dependencies: [libcurses])
-          break
+        if libcurses.found()
+          if cc.links(curses_test, args: curses_compile_args, dependencies: libcurses)
+            curses = declare_dependency(compile_args: curses_compile_args,
+                                        dependencies: [libcurses])
+            break
+          else
+            msg = 'curses library not usable'
+          endif
         endif
+      endforeach
+    endif
+  endif
+  if not get_option('iconv').disabled()
+    foreach link_args : [ ['-liconv'], [] ]
+      # Programs will be linked with glib and this will bring in libiconv on FreeBSD.
+      # We need to use libiconv if available because mixing libiconv's headers with
+      # the system libc does not work.
+      # However, without adding glib to the dependencies -L/usr/local/lib will not be
+      # included in the command line and libiconv will not be found.
+      if cc.links('''
+        #include <iconv.h>
+        int main(void) {
+          iconv_t conv = iconv_open("WCHAR_T", "UCS-2");
+          return conv != (iconv_t) -1;
+        }''', args: config_host['GLIB_CFLAGS'].split() + config_host['GLIB_LIBS'].split() + link_args)
+        iconv = declare_dependency(link_args: link_args, dependencies: glib)
+        break
       endif
     endforeach
   endif
-  if not curses.found()
-    if iconv.found()
-      if get_option('curses').enabled()
-        error('Cannot find curses')
-      endif
-    elif get_option('curses').enabled()
-      error('iconv required for curses UI but not available')
+  if curses.found() and not iconv.found()
+    if get_option('iconv').enabled()
+      error('iconv not available')
+    endif
+    msg = 'iconv required for curses UI but not available'
+    curses = not_found
+  endif
+  if not curses.found() and msg != ''
+    if get_option('curses').enabled()
+      error(msg)
     else
-      warning('iconv required for curses UI but not available, disabling')
+      warning(msg + ', disabling')
     endif
   endif
 endif
-- 
2.26.2




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

* [PULL 03/17] do not use colons in test names
  2020-10-26 13:51 [PULL 00/17] Build system changes and misc fixes for QEMU 5.2 soft freeze Paolo Bonzini
  2020-10-26 13:51 ` [PULL 01/17] build: fix macOS --enable-modules build Paolo Bonzini
  2020-10-26 13:51 ` [PULL 02/17] meson: rewrite curses/iconv test Paolo Bonzini
@ 2020-10-26 13:51 ` Paolo Bonzini
  2020-10-26 13:51 ` [PULL 04/17] hw/core/qdev-clock: add a reference on aliased clocks Paolo Bonzini
                   ` (14 subsequent siblings)
  17 siblings, 0 replies; 26+ messages in thread
From: Paolo Bonzini @ 2020-10-26 13:51 UTC (permalink / raw)
  To: qemu-devel

Starting with meson 0.56, colons are used to separate the subproject name
from the test name.  Use dash or slash depending on what looks nicer.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 tests/fp/meson.build    | 6 +++---
 tests/qtest/meson.build | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/tests/fp/meson.build b/tests/fp/meson.build
index 24739ad421..3d4fb00f9d 100644
--- a/tests/fp/meson.build
+++ b/tests/fp/meson.build
@@ -603,7 +603,7 @@ fptest_rounding_args = ['-r', 'all']
 # FIXME: i32_to_extF80 (broken), i64_to_extF80 (broken)
 #        extF80_roundToInt (broken)
 foreach k, v : softfloat_conv_tests
-  test('fp-test:' + k, fptest,
+  test('fp-test-' + k, fptest,
        args: fptest_args + fptest_rounding_args + v.split(),
        suite: ['softfloat', 'softfloat-conv'])
 endforeach
@@ -612,13 +612,13 @@ endforeach
 #        extF80_{mulAdd} (missing)
 foreach k, v : softfloat_tests
   extF80_broken = ['lt_quiet', 'rem'].contains(k)
-  test('fp-test:' + k, fptest,
+  test('fp-test-' + k, fptest,
        args: fptest_args + fptest_rounding_args +
              ['f16_' + k, 'f32_' + k, 'f64_' + k, 'f128_' + k] +
              (extF80_broken ? [] : ['extF80_' + k]),
        suite: ['softfloat', 'softfloat-' + v])
 endforeach
-test('fp-test:mulAdd', fptest,
+test('fp-test-mulAdd', fptest,
      # no fptest_rounding_args
      args: fptest_args +
            ['f16_mulAdd', 'f32_mulAdd', 'f64_mulAdd', 'f128_mulAdd'],
diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build
index 28d4068718..4e0d9e24aa 100644
--- a/tests/qtest/meson.build
+++ b/tests/qtest/meson.build
@@ -251,7 +251,7 @@ foreach dir : target_dirs
       }
     endif
     # FIXME: missing dependency on the emulator binary and qemu-img
-    test('qtest-@0@: @1@'.format(target_base, test),
+    test('qtest-@0@/@1@'.format(target_base, test),
          qtest_executables[test],
          depends: [test_deps, qtest_emulator],
          env: qtest_env,
-- 
2.26.2




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

* [PULL 04/17] hw/core/qdev-clock: add a reference on aliased clocks
  2020-10-26 13:51 [PULL 00/17] Build system changes and misc fixes for QEMU 5.2 soft freeze Paolo Bonzini
                   ` (2 preceding siblings ...)
  2020-10-26 13:51 ` [PULL 03/17] do not use colons in test names Paolo Bonzini
@ 2020-10-26 13:51 ` Paolo Bonzini
  2020-10-26 13:51 ` [PULL 05/17] qtest: unbreak non-TCG builds in bios-tables-test Paolo Bonzini
                   ` (13 subsequent siblings)
  17 siblings, 0 replies; 26+ messages in thread
From: Paolo Bonzini @ 2020-10-26 13:51 UTC (permalink / raw)
  To: qemu-devel; +Cc: Luc Michel, Philippe Mathieu-Daudé

From: Luc Michel <luc@lmichel.fr>

When aliasing a clock with the qdev_alias_clock() function, a new link
property is created on the device aliasing the clock. The link points
to the aliased clock and use the OBJ_PROP_LINK_STRONG flag. This
property is read only since it does not provide a check callback for
modifications.

The object_property_add_link() documentation stats that with
OBJ_PROP_LINK_STRONG properties, the linked object reference count get
decremented when the property is deleted. But it is _not_ incremented on
creation (object_property_add_link() does not actually know the link).

This commit increments the reference count on the aliased clock to
ensure the aliased clock stays alive during the property lifetime, and
to avoid a double-free memory error when the property gets deleted.

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Luc Michel <luc@lmichel.fr>
Message-Id: <20201020091024.320381-1-luc@lmichel.fr>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 hw/core/qdev-clock.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/hw/core/qdev-clock.c b/hw/core/qdev-clock.c
index 6a9a340d0f..eb05f2a13c 100644
--- a/hw/core/qdev-clock.c
+++ b/hw/core/qdev-clock.c
@@ -61,6 +61,14 @@ static NamedClockList *qdev_init_clocklist(DeviceState *dev, const char *name,
                                  object_get_typename(OBJECT(clk)),
                                  (Object **) &ncl->clock,
                                  NULL, OBJ_PROP_LINK_STRONG);
+        /*
+         * Since the link property has the OBJ_PROP_LINK_STRONG flag, the clk
+         * object reference count gets decremented on property deletion.
+         * However object_property_add_link does not increment it since it
+         * doesn't know the linked object. Increment it here to ensure the
+         * aliased clock stays alive during this device life-time.
+         */
+        object_ref(OBJECT(clk));
     }
 
     ncl->clock = clk;
-- 
2.26.2




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

* [PULL 05/17] qtest: unbreak non-TCG builds in bios-tables-test
  2020-10-26 13:51 [PULL 00/17] Build system changes and misc fixes for QEMU 5.2 soft freeze Paolo Bonzini
                   ` (3 preceding siblings ...)
  2020-10-26 13:51 ` [PULL 04/17] hw/core/qdev-clock: add a reference on aliased clocks Paolo Bonzini
@ 2020-10-26 13:51 ` Paolo Bonzini
  2020-10-26 13:51 ` [PULL 06/17] replay: do not build if TCG is not available Paolo Bonzini
                   ` (12 subsequent siblings)
  17 siblings, 0 replies; 26+ messages in thread
From: Paolo Bonzini @ 2020-10-26 13:51 UTC (permalink / raw)
  To: qemu-devel; +Cc: Claudio Fontana

From: Claudio Fontana <cfontana@suse.de>

the tests assume TCG is available, thus breaking
for TCG-only tests, where only the TCG accelerator option
is passed to the QEMU binary.

Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Claudio Fontana <cfontana@suse.de>
Message-Id: <20201013192123.22632-3-cfontana@suse.de>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 tests/qtest/bios-tables-test.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
index 3830a40d10..f23a5335a8 100644
--- a/tests/qtest/bios-tables-test.c
+++ b/tests/qtest/bios-tables-test.c
@@ -127,6 +127,9 @@ static void free_test_data(test_data *data)
 {
     int i;
 
+    if (!data->tables) {
+        return;
+    }
     for (i = 0; i < data->tables->len; ++i) {
         cleanup_table_descriptor(&g_array_index(data->tables, AcpiSdtTable, i));
     }
@@ -656,6 +659,13 @@ static void test_acpi_one(const char *params, test_data *data)
     char *args;
     bool use_uefi = data->uefi_fl1 && data->uefi_fl2;
 
+#ifndef CONFIG_TCG
+    if (data->tcg_only) {
+        g_test_skip("TCG disabled, skipping ACPI tcg_only test");
+        return;
+    }
+#endif /* CONFIG_TCG */
+
     if (use_uefi) {
         /*
          * TODO: convert '-drive if=pflash' to new syntax (see e33763be7cd3)
-- 
2.26.2




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

* [PULL 06/17] replay: do not build if TCG is not available
  2020-10-26 13:51 [PULL 00/17] Build system changes and misc fixes for QEMU 5.2 soft freeze Paolo Bonzini
                   ` (4 preceding siblings ...)
  2020-10-26 13:51 ` [PULL 05/17] qtest: unbreak non-TCG builds in bios-tables-test Paolo Bonzini
@ 2020-10-26 13:51 ` Paolo Bonzini
  2020-10-26 13:51 ` [PULL 07/17] Remove deprecated -no-kvm option Paolo Bonzini
                   ` (11 subsequent siblings)
  17 siblings, 0 replies; 26+ messages in thread
From: Paolo Bonzini @ 2020-10-26 13:51 UTC (permalink / raw)
  To: qemu-devel; +Cc: Claudio Fontana

From: Claudio Fontana <cfontana@suse.de>

this fixes non-TCG builds broken recently by replay reverse debugging.

Stub the needed functions in stub/, splitting roughly between functions
needed only by system emulation, by system emulation and tools,
and by everyone.  This includes duplicating some code in replay/, and
puts the logic for non-replay related events in the replay/ module (+
the stubs), so this should be revisited in the future.

Surprisingly, only _one_ qtest was affected by this, ide-test.c, which
resulted in a buzz as the bh events were never delivered, and the bh
never executed.

Many other subsystems _should_ have been affected.

This fixes the immediate issue, however a better way to group replay
functionality to TCG-only code could be developed in the long term.

Signed-off-by: Claudio Fontana <cfontana@suse.de>
Message-Id: <20201013192123.22632-4-cfontana@suse.de>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 block/meson.build          |  3 +-
 net/meson.build            |  3 +-
 replay/meson.build         |  4 +-
 replay/stubs-system.c      | 96 ++++++++++++++++++++++++++++++++++++++
 stubs/meson.build          |  4 +-
 stubs/replay-tools.c       | 83 ++++++++++++++++++++++++++++++++
 stubs/replay-user.c        |  9 ----
 stubs/replay.c             | 78 -------------------------------
 tests/ptimer-test-stubs.c  |  5 --
 tests/qtest/qmp-cmd-test.c |  3 ++
 10 files changed, 191 insertions(+), 97 deletions(-)
 create mode 100644 replay/stubs-system.c
 create mode 100644 stubs/replay-tools.c
 delete mode 100644 stubs/replay-user.c

diff --git a/block/meson.build b/block/meson.build
index 78e8b25232..5dcc1e5cce 100644
--- a/block/meson.build
+++ b/block/meson.build
@@ -7,7 +7,6 @@ block_ss.add(files(
   'backup-top.c',
   'blkdebug.c',
   'blklogwrites.c',
-  'blkreplay.c',
   'blkverify.c',
   'block-backend.c',
   'block-copy.c',
@@ -42,6 +41,8 @@ block_ss.add(files(
   'write-threshold.c',
 ), zstd, zlib)
 
+softmmu_ss.add(when: 'CONFIG_TCG', if_true: files('blkreplay.c'))
+
 block_ss.add(when: 'CONFIG_QCOW1', if_true: files('qcow.c'))
 block_ss.add(when: 'CONFIG_VDI', if_true: files('vdi.c'))
 block_ss.add(when: 'CONFIG_CLOOP', if_true: files('cloop.c'))
diff --git a/net/meson.build b/net/meson.build
index 1c7e3a3cb9..1076b0a7ab 100644
--- a/net/meson.build
+++ b/net/meson.build
@@ -7,7 +7,6 @@ softmmu_ss.add(files(
   'eth.c',
   'filter-buffer.c',
   'filter-mirror.c',
-  'filter-replay.c',
   'filter-rewriter.c',
   'filter.c',
   'hub.c',
@@ -17,6 +16,8 @@ softmmu_ss.add(files(
   'util.c',
 ))
 
+softmmu_ss.add(when: 'CONFIG_TCG', if_true: files('filter-replay.c'))
+
 softmmu_ss.add(when: 'CONFIG_L2TPV3', if_true: files('l2tpv3.c'))
 softmmu_ss.add(when: slirp, if_true: files('slirp.c'))
 softmmu_ss.add(when: ['CONFIG_VDE', vde], if_true: files('vde.c'))
diff --git a/replay/meson.build b/replay/meson.build
index f91163fb1e..21aefad220 100644
--- a/replay/meson.build
+++ b/replay/meson.build
@@ -1,4 +1,4 @@
-softmmu_ss.add(files(
+softmmu_ss.add(when: 'CONFIG_TCG', if_true: files(
   'replay.c',
   'replay-internal.c',
   'replay-events.c',
@@ -10,4 +10,4 @@ softmmu_ss.add(files(
   'replay-audio.c',
   'replay-random.c',
   'replay-debugging.c',
-))
+), if_false: files('stubs-system.c'))
diff --git a/replay/stubs-system.c b/replay/stubs-system.c
new file mode 100644
index 0000000000..5c262b08f1
--- /dev/null
+++ b/replay/stubs-system.c
@@ -0,0 +1,96 @@
+#include "qemu/osdep.h"
+#include "sysemu/replay.h"
+#include "ui/input.h"
+
+void replay_input_event(QemuConsole *src, InputEvent *evt)
+{
+    qemu_input_event_send_impl(src, evt);
+}
+
+void replay_input_sync_event(void)
+{
+    qemu_input_event_sync_impl();
+}
+
+void replay_add_blocker(Error *reason)
+{
+}
+void replay_audio_in(size_t *recorded, void *samples, size_t *wpos, size_t size)
+{
+}
+void replay_audio_out(size_t *played)
+{
+}
+void replay_breakpoint(void)
+{
+}
+bool replay_can_snapshot(void)
+{
+    return true;
+}
+void replay_configure(struct QemuOpts *opts)
+{
+}
+void replay_flush_events(void)
+{
+}
+void replay_gdb_attached(void)
+{
+}
+bool replay_running_debug(void)
+{
+    return false;
+}
+void replay_shutdown_request(ShutdownCause cause)
+{
+}
+void replay_start(void)
+{
+}
+void replay_vmstate_init(void)
+{
+}
+
+#include "monitor/monitor.h"
+#include "monitor/hmp.h"
+#include "qapi/qapi-commands-replay.h"
+#include "qapi/error.h"
+#include "qemu/error-report.h"
+
+void hmp_info_replay(Monitor *mon, const QDict *qdict)
+{
+    error_report("replay support not available");
+}
+void hmp_replay_break(Monitor *mon, const QDict *qdict)
+{
+    error_report("replay support not available");
+}
+void hmp_replay_delete_break(Monitor *mon, const QDict *qdict)
+{
+    error_report("replay support not available");
+}
+void hmp_replay_seek(Monitor *mon, const QDict *qdict)
+{
+    error_report("replay support not available");
+}
+ReplayInfo *qmp_query_replay(Error **errp)
+{
+    error_set(errp, ERROR_CLASS_COMMAND_NOT_FOUND,
+              "replay support not available");
+    return NULL;
+}
+void qmp_replay_break(int64_t icount, Error **errp)
+{
+    error_set(errp, ERROR_CLASS_COMMAND_NOT_FOUND,
+              "replay support not available");
+}
+void qmp_replay_delete_break(Error **errp)
+{
+    error_set(errp, ERROR_CLASS_COMMAND_NOT_FOUND,
+              "replay support not available");
+}
+void qmp_replay_seek(int64_t icount, Error **errp)
+{
+    error_set(errp, ERROR_CLASS_COMMAND_NOT_FOUND,
+              "replay support not available");
+}
diff --git a/stubs/meson.build b/stubs/meson.build
index 67f2a8c069..057d7682e5 100644
--- a/stubs/meson.build
+++ b/stubs/meson.build
@@ -32,7 +32,6 @@ stub_ss.add(files('qtest.c'))
 stub_ss.add(files('ram-block.c'))
 stub_ss.add(files('ramfb.c'))
 stub_ss.add(files('replay.c'))
-stub_ss.add(files('replay-user.c'))
 stub_ss.add(files('runstate-check.c'))
 stub_ss.add(files('set-fd-handler.c'))
 stub_ss.add(files('sysbus.c'))
@@ -46,6 +45,9 @@ stub_ss.add(files('vmstate.c'))
 stub_ss.add(files('vm-stop.c'))
 stub_ss.add(files('win32-kbd-hook.c'))
 stub_ss.add(files('cpu-synchronize-state.c'))
+if have_block
+  stub_ss.add(files('replay-tools.c'))
+endif
 if have_system
   stub_ss.add(files('semihost.c'))
   stub_ss.add(files('xen-hw-stub.c'))
diff --git a/stubs/replay-tools.c b/stubs/replay-tools.c
new file mode 100644
index 0000000000..c06b360e22
--- /dev/null
+++ b/stubs/replay-tools.c
@@ -0,0 +1,83 @@
+#include "qemu/osdep.h"
+#include "sysemu/replay.h"
+#include "block/aio.h"
+
+bool replay_events_enabled(void)
+{
+    return false;
+}
+
+int64_t replay_save_clock(unsigned int kind, int64_t clock, int64_t raw_icount)
+{
+    abort();
+    return 0;
+}
+
+int64_t replay_read_clock(unsigned int kind)
+{
+    abort();
+    return 0;
+}
+
+uint64_t replay_get_current_icount(void)
+{
+    return 0;
+}
+
+void replay_bh_schedule_event(QEMUBH *bh)
+{
+    qemu_bh_schedule(bh);
+}
+
+void replay_bh_schedule_oneshot_event(AioContext *ctx,
+     QEMUBHFunc *cb, void *opaque)
+{
+    aio_bh_schedule_oneshot(ctx, cb, opaque);
+}
+
+bool replay_checkpoint(ReplayCheckpoint checkpoint)
+{
+    return true;
+}
+
+void replay_mutex_lock(void)
+{
+}
+
+void replay_mutex_unlock(void)
+{
+}
+
+void replay_register_char_driver(Chardev *chr)
+{
+}
+
+void replay_chr_be_write(Chardev *s, uint8_t *buf, int len)
+{
+    abort();
+}
+
+void replay_char_write_event_save(int res, int offset)
+{
+    abort();
+}
+
+void replay_char_write_event_load(int *res, int *offset)
+{
+    abort();
+}
+
+int replay_char_read_all_load(uint8_t *buf)
+{
+    abort();
+}
+
+void replay_char_read_all_save_error(int res)
+{
+    abort();
+}
+
+void replay_char_read_all_save_buf(uint8_t *buf, int offset)
+{
+    abort();
+}
diff --git a/stubs/replay-user.c b/stubs/replay-user.c
deleted file mode 100644
index 2ad9e27203..0000000000
--- a/stubs/replay-user.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "qemu/osdep.h"
-#include "sysemu/replay.h"
-#include "sysemu/sysemu.h"
-
-void replay_bh_schedule_oneshot_event(AioContext *ctx,
-    QEMUBHFunc *cb, void *opaque)
-{
-    aio_bh_schedule_oneshot(ctx, cb, opaque);
-}
diff --git a/stubs/replay.c b/stubs/replay.c
index 45ebe77fb9..9d5b4be339 100644
--- a/stubs/replay.c
+++ b/stubs/replay.c
@@ -3,83 +3,10 @@
 
 ReplayMode replay_mode;
 
-int64_t replay_save_clock(unsigned int kind, int64_t clock, int64_t raw_icount)
-{
-    abort();
-    return 0;
-}
-
-int64_t replay_read_clock(unsigned int kind)
-{
-    abort();
-    return 0;
-}
-
-bool replay_checkpoint(ReplayCheckpoint checkpoint)
-{
-    return true;
-}
-
-bool replay_events_enabled(void)
-{
-    return false;
-}
-
 void replay_finish(void)
 {
 }
 
-void replay_register_char_driver(Chardev *chr)
-{
-}
-
-void replay_chr_be_write(Chardev *s, uint8_t *buf, int len)
-{
-    abort();
-}
-
-void replay_char_write_event_save(int res, int offset)
-{
-    abort();
-}
-
-void replay_char_write_event_load(int *res, int *offset)
-{
-    abort();
-}
-
-int replay_char_read_all_load(uint8_t *buf)
-{
-    abort();
-}
-
-void replay_char_read_all_save_error(int res)
-{
-    abort();
-}
-
-void replay_char_read_all_save_buf(uint8_t *buf, int offset)
-{
-    abort();
-}
-
-void replay_block_event(QEMUBH *bh, uint64_t id)
-{
-}
-
-uint64_t blkreplay_next_id(void)
-{
-    return 0;
-}
-
-void replay_mutex_lock(void)
-{
-}
-
-void replay_mutex_unlock(void)
-{
-}
-
 void replay_save_random(int ret, void *buf, size_t len)
 {
 }
@@ -89,11 +16,6 @@ int replay_read_random(void *buf, size_t len)
     return 0;
 }
 
-uint64_t replay_get_current_icount(void)
-{
-    return 0;
-}
-
 bool replay_reverse_step(void)
 {
     return false;
diff --git a/tests/ptimer-test-stubs.c b/tests/ptimer-test-stubs.c
index e935a1395e..7f801a4d09 100644
--- a/tests/ptimer-test-stubs.c
+++ b/tests/ptimer-test-stubs.c
@@ -122,8 +122,3 @@ void qemu_bh_delete(QEMUBH *bh)
 {
     g_free(bh);
 }
-
-void replay_bh_schedule_event(QEMUBH *bh)
-{
-    bh->cb(bh->opaque);
-}
diff --git a/tests/qtest/qmp-cmd-test.c b/tests/qtest/qmp-cmd-test.c
index 8a4c570e83..1c7186e53c 100644
--- a/tests/qtest/qmp-cmd-test.c
+++ b/tests/qtest/qmp-cmd-test.c
@@ -31,6 +31,9 @@ static int query_error_class(const char *cmd)
 #ifndef CONFIG_SPICE
         { "query-spice", ERROR_CLASS_COMMAND_NOT_FOUND },
 #endif
+#ifndef CONFIG_TCG
+        { "query-replay", ERROR_CLASS_COMMAND_NOT_FOUND },
+#endif
 #ifndef CONFIG_VNC
         { "query-vnc", ERROR_CLASS_GENERIC_ERROR },
         { "query-vnc-servers", ERROR_CLASS_GENERIC_ERROR },
-- 
2.26.2




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

* [PULL 07/17] Remove deprecated -no-kvm option
  2020-10-26 13:51 [PULL 00/17] Build system changes and misc fixes for QEMU 5.2 soft freeze Paolo Bonzini
                   ` (5 preceding siblings ...)
  2020-10-26 13:51 ` [PULL 06/17] replay: do not build if TCG is not available Paolo Bonzini
@ 2020-10-26 13:51 ` Paolo Bonzini
  2020-10-26 13:51 ` [PULL 08/17] Makefile: separate meson rerun from the rest of the ninja invocation Paolo Bonzini
                   ` (10 subsequent siblings)
  17 siblings, 0 replies; 26+ messages in thread
From: Paolo Bonzini @ 2020-10-26 13:51 UTC (permalink / raw)
  To: qemu-devel; +Cc: Thomas Huth

From: Thomas Huth <thuth@redhat.com>

The option has never been mentioned in our documentation, it's been
deprecated since years, it's marked with QEMU_ARCH_I386 (which does
not make sense anymore since KVM is available on other architectures,
too), it does not do anything by default in upstream QEMU (since TCG
is the default here anyway), and we're spending too much precious time
each year discussing whether it makes sense to keep this option as a
nice suger or not... let's finally put an end on this and remove it.

Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-Id: <20201020160504.62460-1-thuth@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 docs/system/deprecated.rst | 11 ++++++-----
 qemu-options.hx            |  3 ---
 softmmu/vl.c               |  4 ----
 3 files changed, 6 insertions(+), 12 deletions(-)

diff --git a/docs/system/deprecated.rst b/docs/system/deprecated.rst
index 905628f3a0..895433c356 100644
--- a/docs/system/deprecated.rst
+++ b/docs/system/deprecated.rst
@@ -27,11 +27,6 @@ System emulator command line arguments
 The ``enforce-config-section`` parameter is replaced by the
 ``-global migration.send-configuration={on|off}`` option.
 
-``-no-kvm`` (since 1.3.0)
-'''''''''''''''''''''''''
-
-The ``-no-kvm`` argument is now a synonym for setting ``-accel tcg``.
-
 ``-usbdevice`` (since 2.10.0)
 '''''''''''''''''''''''''''''
 
@@ -504,6 +499,12 @@ System emulator command line arguments
 The ``name`` parameter of the ``-net`` option was a synonym
 for the ``id`` parameter, which should now be used instead.
 
+``-no-kvm`` (removed in 5.2)
+''''''''''''''''''''''''''''
+
+The ``-no-kvm`` argument was a synonym for setting ``-machine accel=tcg``.
+
+
 QEMU Machine Protocol (QMP) commands
 ------------------------------------
 
diff --git a/qemu-options.hx b/qemu-options.hx
index 1da52a269c..9e1ace04f7 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -4351,9 +4351,6 @@ SRST
     Enable FIPS 140-2 compliance mode.
 ERST
 
-HXCOMM Deprecated by -accel tcg
-DEF("no-kvm", 0, QEMU_OPTION_no_kvm, "", QEMU_ARCH_I386)
-
 DEF("msg", HAS_ARG, QEMU_OPTION_msg,
     "-msg [timestamp[=on|off]][,guest-name=[on|off]]\n"
     "                control error message format\n"
diff --git a/softmmu/vl.c b/softmmu/vl.c
index 14fc527fc6..09b033ff73 100644
--- a/softmmu/vl.c
+++ b/softmmu/vl.c
@@ -3502,10 +3502,6 @@ void qemu_init(int argc, char **argv, char **envp)
                     exit(1);
                 }
                 break;
-             case QEMU_OPTION_no_kvm:
-                olist = qemu_find_opts("machine");
-                qemu_opts_parse_noisily(olist, "accel=tcg", false);
-                break;
             case QEMU_OPTION_accel:
                 accel_opts = qemu_opts_parse_noisily(qemu_find_opts("accel"),
                                                      optarg, true);
-- 
2.26.2




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

* [PULL 08/17] Makefile: separate meson rerun from the rest of the ninja invocation
  2020-10-26 13:51 [PULL 00/17] Build system changes and misc fixes for QEMU 5.2 soft freeze Paolo Bonzini
                   ` (6 preceding siblings ...)
  2020-10-26 13:51 ` [PULL 07/17] Remove deprecated -no-kvm option Paolo Bonzini
@ 2020-10-26 13:51 ` Paolo Bonzini
  2020-10-26 13:51 ` [PULL 09/17] configure: allow configuring localedir Paolo Bonzini
                   ` (9 subsequent siblings)
  17 siblings, 0 replies; 26+ messages in thread
From: Paolo Bonzini @ 2020-10-26 13:51 UTC (permalink / raw)
  To: qemu-devel; +Cc: Havard Skinnemoen

The rules to build Makefile.mtest are suffering from the "tunnel vision"
problem that is common with recursive makefiles.  Makefile.mtest depends
on build.ninja, but Make does not know when build.ninja needs to be
rebuilt before creating Makefile.mtest.

To fix this, separate the ninja invocation into the "regenerate build
files" phase and the QEMU build phase.  Sentinel files such as
meson-private/coredata.dat or build.ninja are used to figure out the
phases that haven't run yet; however, because those files' timestamps
are not guaranteed to be touched, the usual makefile stamp-file trick
is used on top.

Reported-by: Havard Skinnemoen <hskinnemoen@gmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 Makefile | 40 +++++++++++++++++++++++++++++-----------
 1 file changed, 29 insertions(+), 11 deletions(-)

diff --git a/Makefile b/Makefile
index 18f026eac3..5236464d1f 100644
--- a/Makefile
+++ b/Makefile
@@ -92,6 +92,8 @@ endif
 ifeq ($(NINJA),)
 .PHONY: config-host.mak
 x := $(shell rm -rf meson-private meson-info meson-logs)
+else
+export NINJA
 endif
 ifeq ($(wildcard build.ninja),)
 .PHONY: config-host.mak
@@ -100,31 +102,44 @@ endif
 
 # 1. ensure config-host.mak is up-to-date
 config-host.mak: $(SRC_PATH)/configure $(SRC_PATH)/pc-bios $(SRC_PATH)/VERSION
-	@echo $@ is out-of-date, running configure
+	@echo config-host.mak is out-of-date, running configure
 	@if test -f meson-private/coredata.dat; then \
 	  ./config.status --skip-meson; \
 	else \
-	  ./config.status; \
+	  ./config.status && touch build.ninja.stamp; \
 	fi
 
-# 2. ensure generated build files are up-to-date
+# 2. meson.stamp exists if meson has run at least once (so ninja reconfigure
+# works), but otherwise never needs to be updated
+meson-private/coredata.dat: meson.stamp
+meson.stamp: config-host.mak
+	@touch meson.stamp
+
+# 3. ensure generated build files are up-to-date
 
 ifneq ($(NINJA),)
-# A separate rule is needed for Makefile dependencies to avoid -n
-export NINJA
 Makefile.ninja: build.ninja
-	$(quiet-@){ echo 'ninja-targets = \'; $(NINJA) -t targets all | sed 's/:.*//; $$!s/$$/ \\/'; } > $@
+	$(quiet-@){ \
+	  echo 'ninja-targets = \'; \
+	  $(NINJA) -t targets all | sed 's/:.*//; $$!s/$$/ \\/'; \
+	  echo 'build-files = \'; \
+	  $(NINJA) -t query build.ninja | sed -n '1,/^  input:/d; /^  outputs:/q; s/$$/ \\/p'; \
+	} > $@.tmp && mv $@.tmp $@
 -include Makefile.ninja
+
+# A separate rule is needed for Makefile dependencies to avoid -n
+build.ninja: build.ninja.stamp
+build.ninja.stamp: meson.stamp $(build-files)
+	$(NINJA) $(if $V,-v,) build.ninja && touch $@
 endif
 
 ifneq ($(MESON),)
-# The dependency on config-host.mak ensures that meson has run
-Makefile.mtest: build.ninja scripts/mtest2make.py config-host.mak
+Makefile.mtest: build.ninja scripts/mtest2make.py
 	$(MESON) introspect --targets --tests --benchmarks | $(PYTHON) scripts/mtest2make.py > $@
 -include Makefile.mtest
 endif
 
-# 3. Rules to bridge to other makefiles
+# 4. Rules to bridge to other makefiles
 
 ifneq ($(NINJA),)
 NINJAFLAGS = $(if $V,-v,) \
@@ -135,7 +150,10 @@ ninja-cmd-goals = $(or $(MAKECMDGOALS), all)
 ninja-cmd-goals += $(foreach t, $(.tests), $(.test.deps.$t))
 
 makefile-targets := build.ninja ctags TAGS cscope dist clean uninstall
-ninja-targets := $(filter-out $(makefile-targets), $(ninja-targets))
+# "ninja -t targets" also lists all prerequisites.  If build system
+# files are marked as PHONY, however, Make will always try to execute
+# "ninja build.ninja".
+ninja-targets := $(filter-out $(build-files) $(makefile-targets), $(ninja-targets))
 .PHONY: $(ninja-targets) run-ninja
 $(ninja-targets): run-ninja
 
@@ -214,7 +232,7 @@ distclean: clean
 	rm -f qemu-plugins-ld.symbols qemu-plugins-ld64.symbols
 	rm -f *-config-target.h *-config-devices.mak *-config-devices.h
 	rm -rf meson-private meson-logs meson-info compile_commands.json
-	rm -f Makefile.ninja Makefile.mtest
+	rm -f Makefile.ninja Makefile.mtest build.ninja.stamp meson.stamp
 	rm -f config.log
 	rm -f linux-headers/asm
 	rm -Rf .sdk
-- 
2.26.2




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

* [PULL 09/17] configure: allow configuring localedir
  2020-10-26 13:51 [PULL 00/17] Build system changes and misc fixes for QEMU 5.2 soft freeze Paolo Bonzini
                   ` (7 preceding siblings ...)
  2020-10-26 13:51 ` [PULL 08/17] Makefile: separate meson rerun from the rest of the ninja invocation Paolo Bonzini
@ 2020-10-26 13:51 ` Paolo Bonzini
  2020-10-26 13:51 ` [PULL 10/17] configure: move directory options from config-host.mak to meson Paolo Bonzini
                   ` (8 subsequent siblings)
  17 siblings, 0 replies; 26+ messages in thread
From: Paolo Bonzini @ 2020-10-26 13:51 UTC (permalink / raw)
  To: qemu-devel

Meson has a localedir option, so passing the path through that option
is the cleanest way when we move directories out of config-host.mak.
In preparation for doing that without changing semantics and without
special-casing localedir code, add a configure option.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 configure | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/configure b/configure
index e6754c1e87..c214e9b38e 100755
--- a/configure
+++ b/configure
@@ -962,6 +962,8 @@ for opt do
   ;;
   --docdir=*) docdir="$optarg"
   ;;
+  --localedir=*) localedir="$optarg"
+  ;;
   --sysconfdir=*) sysconfdir="$optarg"
   ;;
   --localstatedir=*) local_statedir="$optarg"
@@ -971,7 +973,7 @@ for opt do
   --host=*|--build=*|\
   --disable-dependency-tracking|\
   --sbindir=*|--sharedstatedir=*|\
-  --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
+  --oldincludedir=*|--datarootdir=*|--infodir=*|\
   --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
     # These switches are silently ignored, for compatibility with
     # autoconf-generated configure scripts. This allows QEMU's
@@ -1525,6 +1527,7 @@ firmwarepath="${firmwarepath:-$prefix/share/qemu-firmware}"
 libdir="${libdir:-$prefix/lib}"
 libexecdir="${libexecdir:-$prefix/libexec}"
 includedir="${includedir:-$prefix/include}"
+localedir="${localedir:-$datadir/locale}"
 
 if test "$mingw32" = "yes" ; then
     mandir="$prefix"
@@ -1670,6 +1673,7 @@ Advanced options (experts only):
   --static                 enable static build [$static]
   --mandir=PATH            install man pages in PATH
   --datadir=PATH           install firmware in PATH/$qemu_suffix
+  --localedir=PATH         install translation in PATH/$qemu_suffix
   --docdir=PATH            install documentation in PATH/$qemu_suffix
   --bindir=PATH            install binaries in PATH
   --libdir=PATH            install libraries in PATH
@@ -5728,7 +5732,6 @@ fi
 qemu_confdir="$sysconfdir/$qemu_suffix"
 qemu_moddir="$libdir/$qemu_suffix"
 qemu_datadir="$datadir/$qemu_suffix"
-qemu_localedir="$datadir/locale"
 qemu_icondir="$datadir/icons"
 qemu_desktopdir="$datadir/applications"
 
@@ -5912,7 +5915,7 @@ if test "$mingw32" = "no" ; then
   echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
 fi
 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
-echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
+echo "qemu_localedir=$localedir" >> $config_host_mak
 echo "qemu_icondir=$qemu_icondir" >> $config_host_mak
 echo "qemu_desktopdir=$qemu_desktopdir" >> $config_host_mak
 echo "GIT=$git" >> $config_host_mak
-- 
2.26.2




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

* [PULL 10/17] configure: move directory options from config-host.mak to meson
  2020-10-26 13:51 [PULL 00/17] Build system changes and misc fixes for QEMU 5.2 soft freeze Paolo Bonzini
                   ` (8 preceding siblings ...)
  2020-10-26 13:51 ` [PULL 09/17] configure: allow configuring localedir Paolo Bonzini
@ 2020-10-26 13:51 ` Paolo Bonzini
  2020-10-26 13:51 ` [PULL 11/17] configure: remove unused variable from config-host.mak Paolo Bonzini
                   ` (7 subsequent siblings)
  17 siblings, 0 replies; 26+ messages in thread
From: Paolo Bonzini @ 2020-10-26 13:51 UTC (permalink / raw)
  To: qemu-devel

Since installation is not part of Makefiles anymore, Make need not
know the directories anymore.  Meson already knows them through
built-in options, do everything using them instead of the config_host
dictionary.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 Makefile                           |  4 +++
 configure                          | 31 ++++----------------
 contrib/vhost-user-gpu/meson.build |  2 +-
 meson.build                        | 47 ++++++++++++++++++++----------
 meson_options.txt                  |  2 ++
 pc-bios/descriptors/meson.build    |  2 +-
 pc-bios/meson.build                |  2 +-
 tools/virtiofsd/meson.build        |  2 +-
 ui/icons/meson.build               |  6 ++--
 ui/meson.build                     |  2 +-
 version.texi.in                    |  2 --
 11 files changed, 51 insertions(+), 51 deletions(-)
 delete mode 100644 version.texi.in

diff --git a/Makefile b/Makefile
index 5236464d1f..4d1fa8bb3d 100644
--- a/Makefile
+++ b/Makefile
@@ -99,6 +99,10 @@ ifeq ($(wildcard build.ninja),)
 .PHONY: config-host.mak
 x := $(shell rm -rf meson-private meson-info meson-logs)
 endif
+ifeq ($(origin prefix),file)
+.PHONY: config-host.mak
+x := $(shell rm -rf meson-private meson-info meson-logs)
+endif
 
 # 1. ensure config-host.mak is up-to-date
 config-host.mak: $(SRC_PATH)/configure $(SRC_PATH)/pc-bios $(SRC_PATH)/VERSION
diff --git a/configure b/configure
index c214e9b38e..29e6732f47 100755
--- a/configure
+++ b/configure
@@ -1523,11 +1523,9 @@ for opt do
   esac
 done
 
-firmwarepath="${firmwarepath:-$prefix/share/qemu-firmware}"
 libdir="${libdir:-$prefix/lib}"
 libexecdir="${libexecdir:-$prefix/libexec}"
 includedir="${includedir:-$prefix/include}"
-localedir="${localedir:-$datadir/locale}"
 
 if test "$mingw32" = "yes" ; then
     mandir="$prefix"
@@ -1535,7 +1533,7 @@ if test "$mingw32" = "yes" ; then
     docdir="$prefix"
     bindir="$prefix"
     sysconfdir="$prefix"
-    local_statedir=
+    local_statedir="$prefix"
 else
     mandir="${mandir:-$prefix/share/man}"
     datadir="${datadir:-$prefix/share}"
@@ -1544,6 +1542,8 @@ else
     sysconfdir="${sysconfdir:-$prefix/etc}"
     local_statedir="${local_statedir:-$prefix/var}"
 fi
+firmwarepath="${firmwarepath:-$datadir/qemu-firmware}"
+localedir="${localedir:-$datadir/locale}"
 
 case "$cpu" in
     ppc)
@@ -5729,12 +5729,6 @@ if test "$mingw32" = "yes" ; then
     done
 fi
 
-qemu_confdir="$sysconfdir/$qemu_suffix"
-qemu_moddir="$libdir/$qemu_suffix"
-qemu_datadir="$datadir/$qemu_suffix"
-qemu_icondir="$datadir/icons"
-qemu_desktopdir="$datadir/applications"
-
 # We can only support ivshmem if we have eventfd
 if [ "$eventfd" = "yes" ]; then
   ivshmem=yes
@@ -5901,23 +5895,6 @@ echo "# Automatically generated by configure - do not modify" > $config_host_mak
 echo >> $config_host_mak
 
 echo all: >> $config_host_mak
-echo "prefix=$prefix" >> $config_host_mak
-echo "bindir=$bindir" >> $config_host_mak
-echo "libdir=$libdir" >> $config_host_mak
-echo "libexecdir=$libexecdir" >> $config_host_mak
-echo "includedir=$includedir" >> $config_host_mak
-echo "sysconfdir=$sysconfdir" >> $config_host_mak
-echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
-echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
-echo "qemu_firmwarepath=$firmwarepath" >> $config_host_mak
-echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
-if test "$mingw32" = "no" ; then
-  echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
-fi
-echo "qemu_helperdir=$libexecdir" >> $config_host_mak
-echo "qemu_localedir=$localedir" >> $config_host_mak
-echo "qemu_icondir=$qemu_icondir" >> $config_host_mak
-echo "qemu_desktopdir=$qemu_desktopdir" >> $config_host_mak
 echo "GIT=$git" >> $config_host_mak
 echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak
 echo "GIT_UPDATE=$git_update" >> $config_host_mak
@@ -7000,8 +6977,10 @@ NINJA=$ninja $meson setup \
         --datadir "$datadir" \
         --mandir "$mandir" \
         --sysconfdir "$sysconfdir" \
+        --localedir "$localedir" \
         --localstatedir "$local_statedir" \
         -Ddocdir="$docdir" \
+        -Dqemu_firmwarepath="$firmwarepath" \
         -Dqemu_suffix="$qemu_suffix" \
         -Doptimization=$(if test "$debug" = yes; then echo 0; else echo 2; fi) \
         -Ddebug=$(if test "$debug_info" = yes; then echo true; else echo false; fi) \
diff --git a/contrib/vhost-user-gpu/meson.build b/contrib/vhost-user-gpu/meson.build
index 7d9b29da8b..37ecca13ca 100644
--- a/contrib/vhost-user-gpu/meson.build
+++ b/contrib/vhost-user-gpu/meson.build
@@ -9,6 +9,6 @@ if 'CONFIG_TOOLS' in config_host and 'CONFIG_VIRGL' in config_host \
 
   configure_file(input: '50-qemu-gpu.json.in',
                  output: '50-qemu-gpu.json',
-                 configuration: config_host,
+                 configuration: { 'libexecdir' : get_option('libexecdir') },
                  install_dir: qemu_datadir / 'vhost-user')
 endif
diff --git a/meson.build b/meson.build
index 0edde14ad7..4b6cca9238 100644
--- a/meson.build
+++ b/meson.build
@@ -29,8 +29,14 @@ if get_option('qemu_suffix').startswith('/')
   error('qemu_suffix cannot start with a /')
 endif
 
+qemu_confdir = get_option('sysconfdir') / get_option('qemu_suffix')
 qemu_datadir = get_option('datadir') / get_option('qemu_suffix')
 qemu_docdir = get_option('docdir') / get_option('qemu_suffix')
+qemu_moddir = get_option('libdir') / get_option('qemu_suffix')
+
+qemu_desktopdir = get_option('datadir') / 'applications'
+qemu_icondir = get_option('datadir') / 'icons'
+
 config_host_data = configuration_data()
 genh = []
 
@@ -734,6 +740,19 @@ endif
 # config-host.h #
 #################
 
+config_host_data.set_quoted('CONFIG_BINDIR', get_option('prefix') / get_option('bindir'))
+config_host_data.set_quoted('CONFIG_PREFIX', get_option('prefix'))
+config_host_data.set_quoted('CONFIG_QEMU_CONFDIR', get_option('prefix') / qemu_confdir)
+config_host_data.set_quoted('CONFIG_QEMU_DATADIR', get_option('prefix') / qemu_datadir)
+config_host_data.set_quoted('CONFIG_QEMU_DESKTOPDIR', get_option('prefix') / qemu_desktopdir)
+config_host_data.set_quoted('CONFIG_QEMU_FIRMWAREPATH', get_option('qemu_firmwarepath'))
+config_host_data.set_quoted('CONFIG_QEMU_HELPERDIR', get_option('prefix') / get_option('libexecdir'))
+config_host_data.set_quoted('CONFIG_QEMU_ICONDIR', get_option('prefix') / qemu_icondir)
+config_host_data.set_quoted('CONFIG_QEMU_LOCALEDIR', get_option('prefix') / get_option('localedir'))
+config_host_data.set_quoted('CONFIG_QEMU_LOCALSTATEDIR', get_option('prefix') / get_option('localstatedir'))
+config_host_data.set_quoted('CONFIG_QEMU_MODDIR', get_option('prefix') / qemu_moddir)
+config_host_data.set_quoted('CONFIG_SYSCONFDIR', get_option('prefix') / get_option('sysconfdir'))
+
 config_host_data.set('CONFIG_COCOA', cocoa.found())
 config_host_data.set('CONFIG_LIBUDEV', libudev.found())
 config_host_data.set('CONFIG_MPATH', mpathpersist.found())
@@ -756,9 +775,7 @@ config_host_data.set('QEMU_VERSION_MICRO', meson.project_version().split('.')[2]
 
 ignored = ['CONFIG_QEMU_INTERP_PREFIX'] # actually per-target
 arrays = ['CONFIG_AUDIO_DRIVERS', 'CONFIG_BDRV_RW_WHITELIST', 'CONFIG_BDRV_RO_WHITELIST']
-strings = ['HOST_DSOSUF', 'CONFIG_IASL', 'bindir', 'prefix', 'qemu_confdir', 'qemu_datadir',
-           'qemu_moddir', 'qemu_localstatedir', 'qemu_helperdir', 'qemu_localedir',
-           'qemu_icondir', 'qemu_desktopdir', 'qemu_firmwarepath', 'sysconfdir']
+strings = ['HOST_DSOSUF', 'CONFIG_IASL']
 foreach k, v: config_host
   if ignored.contains(k)
     # do nothing
@@ -1639,7 +1656,7 @@ foreach m : block_mods + softmmu_mods
                 name_prefix: '',
                 link_whole: m,
                 install: true,
-                install_dir: config_host['qemu_moddir'])
+                install_dir: qemu_moddir)
 endforeach
 
 softmmu_ss.add(authz, block, chardev, crypto, io, qmp)
@@ -1800,7 +1817,7 @@ foreach target : target_dirs
                       output: exe['name'] + stp['ext'],
                       capture: true,
                       install: stp['install'],
-                      install_dir: qemu_datadir / '../systemtap/tapset',
+                      install_dir: get_option('datadir') / 'systemtap/tapset',
                       command: [
                         tracetool, '--group=all', '--format=' + stp['fmt'],
                         '--binary=' + stp['bin'],
@@ -1913,17 +1930,17 @@ endif
 #########################
 
 summary_info = {}
-summary_info += {'Install prefix':    config_host['prefix']}
-summary_info += {'BIOS directory':    config_host['qemu_datadir']}
-summary_info += {'firmware path':     config_host['qemu_firmwarepath']}
-summary_info += {'binary directory':  config_host['bindir']}
-summary_info += {'library directory': config_host['libdir']}
-summary_info += {'module directory':  config_host['qemu_moddir']}
-summary_info += {'libexec directory': config_host['libexecdir']}
-summary_info += {'include directory': config_host['includedir']}
-summary_info += {'config directory':  config_host['sysconfdir']}
+summary_info += {'Install prefix':    get_option('prefix')}
+summary_info += {'BIOS directory':    qemu_datadir}
+summary_info += {'firmware path':     get_option('qemu_firmwarepath')}
+summary_info += {'binary directory':  get_option('bindir')}
+summary_info += {'library directory': get_option('libdir')}
+summary_info += {'module directory':  qemu_moddir}
+summary_info += {'libexec directory': get_option('libexecdir')}
+summary_info += {'include directory': get_option('includedir')}
+summary_info += {'config directory':  get_option('sysconfdir')}
 if targetos != 'windows'
-  summary_info += {'local state directory': config_host['qemu_localstatedir']}
+  summary_info += {'local state directory': get_option('localstatedir')}
   summary_info += {'Manual directory':      get_option('mandir')}
 else
   summary_info += {'local state directory': 'queried at runtime'}
diff --git a/meson_options.txt b/meson_options.txt
index 967229b66e..02b446013a 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -2,6 +2,8 @@ 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('qemu_firmwarepath', type : 'string', value : '',
+       description: 'search PATH for firmware files')
 option('sphinx_build', type : 'string', value : '',
        description: 'Use specified sphinx-build [$sphinx_build] for building document (default to be empty)')
 
diff --git a/pc-bios/descriptors/meson.build b/pc-bios/descriptors/meson.build
index 3798d32372..a200e5ebc3 100644
--- a/pc-bios/descriptors/meson.build
+++ b/pc-bios/descriptors/meson.build
@@ -8,7 +8,7 @@ foreach f: [
 ]
   configure_file(input: files(f),
                  output: f,
-                 configuration: {'DATADIR': config_host['qemu_datadir']},
+                 configuration: {'DATADIR': qemu_datadir},
                  install: install_blobs,
                  install_dir: qemu_datadir / 'firmware')
 endforeach
diff --git a/pc-bios/meson.build b/pc-bios/meson.build
index a0d21be432..03df50c485 100644
--- a/pc-bios/meson.build
+++ b/pc-bios/meson.build
@@ -86,7 +86,7 @@ blobs = files(
 )
 
 if install_blobs
-  install_data(blobs, install_dir: config_host['qemu_datadir'])
+  install_data(blobs, install_dir: qemu_datadir)
 endif
 
 subdir('descriptors')
diff --git a/tools/virtiofsd/meson.build b/tools/virtiofsd/meson.build
index 50022ed89e..e1a4dc98d9 100644
--- a/tools/virtiofsd/meson.build
+++ b/tools/virtiofsd/meson.build
@@ -15,5 +15,5 @@ executable('virtiofsd', files(
 
 configure_file(input: '50-qemu-virtiofsd.json.in',
                output: '50-qemu-virtiofsd.json',
-               configuration: config_host,
+               configuration: { 'libexecdir' : get_option('libexecdir') },
                install_dir: qemu_datadir / 'vhost-user')
diff --git a/ui/icons/meson.build b/ui/icons/meson.build
index b6e21f6ad7..12c52080eb 100644
--- a/ui/icons/meson.build
+++ b/ui/icons/meson.build
@@ -2,12 +2,12 @@ foreach s: [16, 24, 32, 48, 64, 128, 256, 512]
   s = '@0@x@0@'.format(s.to_string())
   install_data('qemu_@0@.png'.format(s),
                rename: 'qemu.png',
-               install_dir: config_host['qemu_icondir'] / 'hicolor' / s / 'apps')
+               install_dir: qemu_icondir / 'hicolor' / s / 'apps')
 endforeach
 
 install_data('qemu_32x32.bmp',
              rename: 'qemu.bmp',
-             install_dir: config_host['qemu_icondir'] / 'hicolor' / '32x32' / 'apps')
+             install_dir: qemu_icondir / 'hicolor' / '32x32' / 'apps')
 
 install_data('qemu.svg',
-             install_dir: config_host['qemu_icondir'] / 'hicolor' / 'scalable' / 'apps')
+             install_dir: qemu_icondir / 'hicolor' / 'scalable' / 'apps')
diff --git a/ui/meson.build b/ui/meson.build
index 5d4906c023..013258a01c 100644
--- a/ui/meson.build
+++ b/ui/meson.build
@@ -139,7 +139,7 @@ subdir('shader')
 if have_system
   subdir('icons')
 
-  install_data('qemu.desktop', install_dir: config_host['qemu_desktopdir'])
+  install_data('qemu.desktop', install_dir: qemu_desktopdir)
 endif
 
 modules += {'ui': ui_modules}
diff --git a/version.texi.in b/version.texi.in
deleted file mode 100644
index 0a723b8be6..0000000000
--- a/version.texi.in
+++ /dev/null
@@ -1,2 +0,0 @@
-@set VERSION @VERSION@
-@set CONFDIR @qemu_confdir@
-- 
2.26.2




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

* [PULL 11/17] configure: remove unused variable from config-host.mak
  2020-10-26 13:51 [PULL 00/17] Build system changes and misc fixes for QEMU 5.2 soft freeze Paolo Bonzini
                   ` (9 preceding siblings ...)
  2020-10-26 13:51 ` [PULL 10/17] configure: move directory options from config-host.mak to meson Paolo Bonzini
@ 2020-10-26 13:51 ` Paolo Bonzini
  2020-10-26 13:51 ` [PULL 12/17] configure: move install_blobs from configure to meson Paolo Bonzini
                   ` (6 subsequent siblings)
  17 siblings, 0 replies; 26+ messages in thread
From: Paolo Bonzini @ 2020-10-26 13:51 UTC (permalink / raw)
  To: qemu-devel

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 configure | 2 --
 1 file changed, 2 deletions(-)

diff --git a/configure b/configure
index 29e6732f47..6bd2cafb33 100755
--- a/configure
+++ b/configure
@@ -3612,7 +3612,6 @@ else
       if test "$found" = "no"; then
         LIBS="$pthread_lib $LIBS"
       fi
-      PTHREAD_LIB="$pthread_lib"
       break
     fi
   done
@@ -6742,7 +6741,6 @@ echo "GLIB_LIBS=$glib_libs" >> $config_host_mak
 echo "QEMU_LDFLAGS=$QEMU_LDFLAGS" >> $config_host_mak
 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
 echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
-echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
 echo "EXESUF=$EXESUF" >> $config_host_mak
 echo "HOST_DSOSUF=$HOST_DSOSUF" >> $config_host_mak
 echo "LIBS_QGA=$libs_qga" >> $config_host_mak
-- 
2.26.2




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

* [PULL 12/17] configure: move install_blobs from configure to meson
  2020-10-26 13:51 [PULL 00/17] Build system changes and misc fixes for QEMU 5.2 soft freeze Paolo Bonzini
                   ` (10 preceding siblings ...)
  2020-10-26 13:51 ` [PULL 11/17] configure: remove unused variable from config-host.mak Paolo Bonzini
@ 2020-10-26 13:51 ` Paolo Bonzini
  2020-10-26 13:51 ` [PULL 13/17] WHPX: Fix WHPX build break Paolo Bonzini
                   ` (5 subsequent siblings)
  17 siblings, 0 replies; 26+ messages in thread
From: Paolo Bonzini @ 2020-10-26 13:51 UTC (permalink / raw)
  To: qemu-devel

Move the conditions under which edk2 blobs are decompressed
and installed to pc-bios/meson.build.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 configure                       | 26 +++-----------------------
 meson.build                     |  2 +-
 meson_options.txt               |  2 ++
 pc-bios/descriptors/meson.build |  2 +-
 pc-bios/meson.build             | 13 +++++++------
 5 files changed, 14 insertions(+), 31 deletions(-)

diff --git a/configure b/configure
index 6bd2cafb33..55e07c82dd 100755
--- a/configure
+++ b/configure
@@ -362,8 +362,7 @@ cocoa="auto"
 softmmu="yes"
 linux_user="no"
 bsd_user="no"
-blobs="yes"
-edk2_blobs="no"
+blobs="true"
 pkgversion=""
 pie=""
 qom_cast_debug="yes"
@@ -1205,7 +1204,7 @@ for opt do
   ;;
   --enable-membarrier) membarrier="yes"
   ;;
-  --disable-blobs) blobs="no"
+  --disable-blobs) blobs="false"
   ;;
   --with-pkgversion=*) pkgversion="$optarg"
   ;;
@@ -2221,18 +2220,6 @@ case " $target_list " in
   ;;
 esac
 
-for target in $target_list; do
-  case "$target" in
-    arm-softmmu | aarch64-softmmu | i386-softmmu | x86_64-softmmu)
-      edk2_blobs="yes"
-      ;;
-  esac
-done
-# The EDK2 binaries are compressed with bzip2
-if test "$edk2_blobs" = "yes" && ! has bzip2; then
-  error_exit "The bzip2 program is required for building QEMU"
-fi
-
 feature_not_found() {
   feature=$1
   remedy=$2
@@ -6276,9 +6263,6 @@ fi
 if test "$vhost_user_fs" = "yes" ; then
   echo "CONFIG_VHOST_USER_FS=y" >> $config_host_mak
 fi
-if test "$blobs" = "yes" ; then
-  echo "INSTALL_BLOBS=yes" >> $config_host_mak
-fi
 if test "$iovec" = "yes" ; then
   echo "CONFIG_IOVEC=y" >> $config_host_mak
 fi
@@ -6755,10 +6739,6 @@ if test "$fuzzing" != "no"; then
 fi
 echo "FUZZ_EXE_LDFLAGS=$FUZZ_EXE_LDFLAGS" >> $config_host_mak
 
-if test "$edk2_blobs" = "yes" ; then
-  echo "DECOMPRESS_EDK2_BLOBS=y" >> $config_host_mak
-fi
-
 if test "$rng_none" = "yes"; then
   echo "CONFIG_RNG_NONE=y" >> $config_host_mak
 fi
@@ -6995,7 +6975,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 \
+        -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
         $cross_arg \
         "$PWD" "$source_path"
 
diff --git a/meson.build b/meson.build
index 4b6cca9238..342b8bcab5 100644
--- a/meson.build
+++ b/meson.build
@@ -2052,7 +2052,7 @@ summary_info += {'netmap support':    config_host.has_key('CONFIG_NETMAP')}
 summary_info += {'Linux AIO support': config_host.has_key('CONFIG_LINUX_AIO')}
 summary_info += {'Linux io_uring support': config_host.has_key('CONFIG_LINUX_IO_URING')}
 summary_info += {'ATTR/XATTR support': config_host.has_key('CONFIG_ATTR')}
-summary_info += {'Install blobs':     config_host.has_key('INSTALL_BLOBS')}
+summary_info += {'Install blobs':     get_option('install_blobs')}
 summary_info += {'KVM support':       config_all.has_key('CONFIG_KVM')}
 summary_info += {'HAX support':       config_all.has_key('CONFIG_HAX')}
 summary_info += {'HVF support':       config_all.has_key('CONFIG_HVF')}
diff --git a/meson_options.txt b/meson_options.txt
index 02b446013a..48ab4ce7d0 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -11,6 +11,8 @@ option('docs', type : 'feature', value : 'auto',
        description: 'Documentations build support')
 option('gettext', type : 'boolean', value : true,
        description: 'Localization of the GTK+ user interface')
+option('install_blobs', type : 'boolean', value : true,
+       description: 'install provided firmware blobs')
 option('sparse', type : 'feature', value : 'auto',
        description: 'sparse checker')
 
diff --git a/pc-bios/descriptors/meson.build b/pc-bios/descriptors/meson.build
index a200e5ebc3..7040834573 100644
--- a/pc-bios/descriptors/meson.build
+++ b/pc-bios/descriptors/meson.build
@@ -9,6 +9,6 @@ foreach f: [
   configure_file(input: files(f),
                  output: f,
                  configuration: {'DATADIR': qemu_datadir},
-                 install: install_blobs,
+                 install: get_option('install_blobs'),
                  install_dir: qemu_datadir / 'firmware')
 endforeach
diff --git a/pc-bios/meson.build b/pc-bios/meson.build
index 03df50c485..fab323af84 100644
--- a/pc-bios/meson.build
+++ b/pc-bios/meson.build
@@ -1,7 +1,8 @@
-bzip2 = find_program('bzip2')
-
-install_blobs = 'INSTALL_BLOBS' in config_host
-if 'DECOMPRESS_EDK2_BLOBS' in config_host
+if 'arm-softmmu' in target_dirs or \
+    'aarch64-softmmu' in target_dirs or \
+    'i386-softmmu' in target_dirs or \
+    'x86_64-softmmu' in target_dirs
+  bzip2 = find_program('bzip2', required: true)
   fds = [
     'edk2-aarch64-code.fd',
     'edk2-arm-code.fd',
@@ -18,7 +19,7 @@ if 'DECOMPRESS_EDK2_BLOBS' in config_host
                   output: f,
                   input: '@0@.bz2'.format(f),
                   capture: true,
-                  install: install_blobs,
+                  install: get_option('install_blobs'),
                   install_dir: qemu_datadir,
                   command: [ bzip2, '-dc', '@INPUT0@' ])
   endforeach
@@ -85,7 +86,7 @@ blobs = files(
   'npcm7xx_bootrom.bin',
 )
 
-if install_blobs
+if get_option('install_blobs')
   install_data(blobs, install_dir: qemu_datadir)
 endif
 
-- 
2.26.2




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

* [PULL 13/17] WHPX: Fix WHPX build break
  2020-10-26 13:51 [PULL 00/17] Build system changes and misc fixes for QEMU 5.2 soft freeze Paolo Bonzini
                   ` (11 preceding siblings ...)
  2020-10-26 13:51 ` [PULL 12/17] configure: move install_blobs from configure to meson Paolo Bonzini
@ 2020-10-26 13:51 ` Paolo Bonzini
  2020-10-26 13:51 ` [PULL 14/17] win32: boot broken when bind & data dir are the same Paolo Bonzini
                   ` (4 subsequent siblings)
  17 siblings, 0 replies; 26+ messages in thread
From: Paolo Bonzini @ 2020-10-26 13:51 UTC (permalink / raw)
  To: qemu-devel; +Cc: Sunil Muthuswamy

From: Sunil Muthuswamy <sunilmut@microsoft.com>

With upstream commit#8a19980e3fc4, logic was introduced to only
allow WHPX build on x64. But, the logic checks for the cpu family
and not the cpu. On my fedora container build, the cpu family is
x86 and the cpu is x86_64. Fixing the build break by checking for
the cpu, instead of the cpu family.

Signed-off-by: Sunil Muthuswamy <sunilmut@microsoft.com>
Message-Id: <SN4PR2101MB0880D706A85793DDFC411304C01D0@SN4PR2101MB0880.namprd21.prod.outlook.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 meson.build | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meson.build b/meson.build
index 342b8bcab5..61919c024a 100644
--- a/meson.build
+++ b/meson.build
@@ -204,7 +204,7 @@ else
   have_xen_pci_passthrough = false
 endif
 if not get_option('whpx').disabled() and targetos == 'windows'
-  if get_option('whpx').enabled() and cpu != 'x86_64'
+  if get_option('whpx').enabled() and host_machine.cpu() != 'x86_64'
     error('WHPX requires 64-bit host')
   elif cc.has_header('WinHvPlatform.h', required: get_option('whpx')) and \
        cc.has_header('WinHvEmulation.h', required: get_option('whpx'))
-- 
2.26.2




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

* [PULL 14/17] win32: boot broken when bind & data dir are the same
  2020-10-26 13:51 [PULL 00/17] Build system changes and misc fixes for QEMU 5.2 soft freeze Paolo Bonzini
                   ` (12 preceding siblings ...)
  2020-10-26 13:51 ` [PULL 13/17] WHPX: Fix WHPX build break Paolo Bonzini
@ 2020-10-26 13:51 ` Paolo Bonzini
  2020-10-26 13:51 ` [PULL 15/17] machine: remove deprecated -machine enforce-config-section option Paolo Bonzini
                   ` (3 subsequent siblings)
  17 siblings, 0 replies; 26+ messages in thread
From: Paolo Bonzini @ 2020-10-26 13:51 UTC (permalink / raw)
  To: qemu-devel; +Cc: Sunil Muthuswamy

From: Sunil Muthuswamy <sunilmut@microsoft.com>

With upstream commit#ea1edcd7da1a "vl: relocate paths to data
directories", the data dir logic was unified between POSIX &
Win32. That patch moved to using 'get_relocated_path()', to
find the data dir. There is a latent bug in get_relocated_path
which can cause it to spin indefinitely, when the bind dir is
the same as the passed in dir (in this case, it was the data
dir).

Signed-off-by: Sunil Muthuswamy <sunilmut@microsoft.com>
Message-Id: <SN4PR2101MB08802BF242C429A15DDB32ACC01B0@SN4PR2101MB0880.namprd21.prod.outlook.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 util/cutils.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/util/cutils.c b/util/cutils.c
index be4e43a9ef..c395974fab 100644
--- a/util/cutils.c
+++ b/util/cutils.c
@@ -949,7 +949,7 @@ char *get_relocated_path(const char *dir)
         bindir += len_bindir;
         dir = next_component(dir, &len_dir);
         bindir = next_component(bindir, &len_bindir);
-    } while (len_dir == len_bindir && !memcmp(dir, bindir, len_dir));
+    } while (len_dir && len_dir == len_bindir && !memcmp(dir, bindir, len_dir));
 
     /* Ascend from bindir to the common prefix with dir.  */
     while (len_bindir) {
-- 
2.26.2




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

* [PULL 15/17] machine: remove deprecated -machine enforce-config-section option
  2020-10-26 13:51 [PULL 00/17] Build system changes and misc fixes for QEMU 5.2 soft freeze Paolo Bonzini
                   ` (13 preceding siblings ...)
  2020-10-26 13:51 ` [PULL 14/17] win32: boot broken when bind & data dir are the same Paolo Bonzini
@ 2020-10-26 13:51 ` Paolo Bonzini
  2020-10-26 13:51 ` [PULL 16/17] machine: move UP defaults to class_base_init Paolo Bonzini
                   ` (2 subsequent siblings)
  17 siblings, 0 replies; 26+ messages in thread
From: Paolo Bonzini @ 2020-10-26 13:51 UTC (permalink / raw)
  To: qemu-devel

Deprecated since 3.1 and complicates the initialization sequence,
remove it.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 docs/system/deprecated.rst | 12 ++++++------
 hw/core/machine.c          | 23 -----------------------
 include/hw/boards.h        |  1 -
 migration/migration.c      | 10 ----------
 qemu-options.hx            |  8 --------
 5 files changed, 6 insertions(+), 48 deletions(-)

diff --git a/docs/system/deprecated.rst b/docs/system/deprecated.rst
index 895433c356..0ebce37a19 100644
--- a/docs/system/deprecated.rst
+++ b/docs/system/deprecated.rst
@@ -21,12 +21,6 @@ deprecated.
 System emulator command line arguments
 --------------------------------------
 
-``-machine enforce-config-section=on|off`` (since 3.1)
-''''''''''''''''''''''''''''''''''''''''''''''''''''''
-
-The ``enforce-config-section`` parameter is replaced by the
-``-global migration.send-configuration={on|off}`` option.
-
 ``-usbdevice`` (since 2.10.0)
 '''''''''''''''''''''''''''''
 
@@ -689,6 +683,12 @@ Support for invalid topologies is removed, the user must ensure
 topologies described with -smp include all possible cpus, i.e.
 *sockets* * *cores* * *threads* = *maxcpus*.
 
+``-machine enforce-config-section=on|off`` (removed 5.2)
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+The ``enforce-config-section`` property was replaced by the
+``-global migration.send-configuration={on|off}`` option.
+
 Block devices
 -------------
 
diff --git a/hw/core/machine.c b/hw/core/machine.c
index d740a7e963..7a0b263cda 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -411,24 +411,6 @@ static bool machine_get_suppress_vmdesc(Object *obj, Error **errp)
     return ms->suppress_vmdesc;
 }
 
-static void machine_set_enforce_config_section(Object *obj, bool value,
-                                             Error **errp)
-{
-    MachineState *ms = MACHINE(obj);
-
-    warn_report("enforce-config-section is deprecated, please use "
-                "-global migration.send-configuration=on|off instead");
-
-    ms->enforce_config_section = value;
-}
-
-static bool machine_get_enforce_config_section(Object *obj, Error **errp)
-{
-    MachineState *ms = MACHINE(obj);
-
-    return ms->enforce_config_section;
-}
-
 static char *machine_get_memory_encryption(Object *obj, Error **errp)
 {
     MachineState *ms = MACHINE(obj);
@@ -857,11 +839,6 @@ static void machine_class_init(ObjectClass *oc, void *data)
     object_class_property_set_description(oc, "suppress-vmdesc",
         "Set on to disable self-describing migration");
 
-    object_class_property_add_bool(oc, "enforce-config-section",
-        machine_get_enforce_config_section, machine_set_enforce_config_section);
-    object_class_property_set_description(oc, "enforce-config-section",
-        "Set on to enforce configuration section migration");
-
     object_class_property_add_str(oc, "memory-encryption",
         machine_get_memory_encryption, machine_set_memory_encryption);
     object_class_property_set_description(oc, "memory-encryption",
diff --git a/include/hw/boards.h b/include/hw/boards.h
index bf53e8a16e..a49e3a6b44 100644
--- a/include/hw/boards.h
+++ b/include/hw/boards.h
@@ -268,7 +268,6 @@ struct MachineState {
     char *firmware;
     bool iommu;
     bool suppress_vmdesc;
-    bool enforce_config_section;
     bool enable_graphics;
     char *memory_encryption;
     char *ram_memdev_id;
diff --git a/migration/migration.c b/migration/migration.c
index 0575ecb379..deb6005b8d 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -145,7 +145,6 @@ static void migrate_fd_cancel(MigrationState *s);
 
 void migration_object_init(void)
 {
-    MachineState *ms = MACHINE(qdev_get_machine());
     Error *err = NULL;
 
     /* This can only be called once. */
@@ -170,15 +169,6 @@ void migration_object_init(void)
         error_report_err(err);
         exit(1);
     }
-
-    /*
-     * We cannot really do this in migration_instance_init() since at
-     * that time global properties are not yet applied, then this
-     * value will be definitely replaced by something else.
-     */
-    if (ms->enforce_config_section) {
-        current_migration->send_configuration = true;
-    }
 }
 
 void migration_shutdown(void)
diff --git a/qemu-options.hx b/qemu-options.hx
index 9e1ace04f7..2c83390504 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -34,7 +34,6 @@ DEF("machine", HAS_ARG, QEMU_OPTION_machine, \
     "                dea-key-wrap=on|off controls support for DEA key wrapping (default=on)\n"
     "                suppress-vmdesc=on|off disables self-describing migration (default=off)\n"
     "                nvdimm=on|off controls NVDIMM support (default=off)\n"
-    "                enforce-config-section=on|off enforce configuration section migration (default=off)\n"
     "                memory-encryption=@var{} memory encryption object to use (default=none)\n"
     "                hmat=on|off controls ACPI HMAT support (default=off)\n",
     QEMU_ARCH_ALL)
@@ -91,13 +90,6 @@ SRST
     ``nvdimm=on|off``
         Enables or disables NVDIMM support. The default is off.
 
-    ``enforce-config-section=on|off``
-        If ``enforce-config-section`` is set to on, force migration code
-        to send configuration section even if the machine-type sets the
-        ``migration.send-configuration`` property to off. NOTE: this
-        parameter is deprecated. Please use ``-global``
-        ``migration.send-configuration``\ =on\|off instead.
-
     ``memory-encryption=``
         Memory encryption object to use. The default is none.
 
-- 
2.26.2




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

* [PULL 16/17] machine: move UP defaults to class_base_init
  2020-10-26 13:51 [PULL 00/17] Build system changes and misc fixes for QEMU 5.2 soft freeze Paolo Bonzini
                   ` (14 preceding siblings ...)
  2020-10-26 13:51 ` [PULL 15/17] machine: remove deprecated -machine enforce-config-section option Paolo Bonzini
@ 2020-10-26 13:51 ` Paolo Bonzini
  2020-10-26 13:51 ` [PULL 17/17] machine: move SMP initialization from vl.c Paolo Bonzini
  2020-10-26 17:18 ` [PULL 00/17] Build system changes and misc fixes for QEMU 5.2 soft freeze Peter Maydell
  17 siblings, 0 replies; 26+ messages in thread
From: Paolo Bonzini @ 2020-10-26 13:51 UTC (permalink / raw)
  To: qemu-devel; +Cc: Thomas Huth

Clean up vl.c, default min/max/default_cpus to uniprocessor
directly in the QOM class initialization code.

Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 hw/core/machine.c | 6 +++++-
 softmmu/vl.c      | 5 -----
 2 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/hw/core/machine.c b/hw/core/machine.c
index 7a0b263cda..57463ad77a 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -853,8 +853,12 @@ static void machine_class_init(ObjectClass *oc, void *data)
 
 static void machine_class_base_init(ObjectClass *oc, void *data)
 {
+    MachineClass *mc = MACHINE_CLASS(oc);
+    mc->max_cpus = mc->max_cpus ?: 1;
+    mc->min_cpus = mc->min_cpus ?: 1;
+    mc->default_cpus = mc->default_cpus ?: 1;
+
     if (!object_class_is_abstract(oc)) {
-        MachineClass *mc = MACHINE_CLASS(oc);
         const char *cname = object_class_get_name(oc);
         assert(g_str_has_suffix(cname, TYPE_MACHINE_SUFFIX));
         mc->name = g_strndup(cname,
diff --git a/softmmu/vl.c b/softmmu/vl.c
index 09b033ff73..9b67ea300e 100644
--- a/softmmu/vl.c
+++ b/softmmu/vl.c
@@ -3970,11 +3970,6 @@ void qemu_init(int argc, char **argv, char **envp)
         exit(0);
     }
 
-    /* machine_class: default to UP */
-    machine_class->max_cpus = machine_class->max_cpus ?: 1;
-    machine_class->min_cpus = machine_class->min_cpus ?: 1;
-    machine_class->default_cpus = machine_class->default_cpus ?: 1;
-
     /* default to machine_class->default_cpus */
     current_machine->smp.cpus = machine_class->default_cpus;
     current_machine->smp.max_cpus = machine_class->default_cpus;
-- 
2.26.2




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

* [PULL 17/17] machine: move SMP initialization from vl.c
  2020-10-26 13:51 [PULL 00/17] Build system changes and misc fixes for QEMU 5.2 soft freeze Paolo Bonzini
                   ` (15 preceding siblings ...)
  2020-10-26 13:51 ` [PULL 16/17] machine: move UP defaults to class_base_init Paolo Bonzini
@ 2020-10-26 13:51 ` Paolo Bonzini
  2020-10-26 17:18 ` [PULL 00/17] Build system changes and misc fixes for QEMU 5.2 soft freeze Peter Maydell
  17 siblings, 0 replies; 26+ messages in thread
From: Paolo Bonzini @ 2020-10-26 13:51 UTC (permalink / raw)
  To: qemu-devel; +Cc: Philippe Mathieu-Daudé

Initialize the object's values from the class when the object is
created, no need to have vl.c do it for us.

Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 hw/core/machine.c | 7 +++++++
 softmmu/vl.c      | 7 -------
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/hw/core/machine.c b/hw/core/machine.c
index 57463ad77a..c5e0e79e6d 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -907,6 +907,13 @@ static void machine_initfn(Object *obj)
     /* Register notifier when init is done for sysbus sanity checks */
     ms->sysbus_notifier.notify = machine_init_notify;
     qemu_add_machine_init_done_notifier(&ms->sysbus_notifier);
+
+    /* default to mc->default_cpus */
+    ms->smp.cpus = mc->default_cpus;
+    ms->smp.max_cpus = mc->default_cpus;
+    ms->smp.cores = 1;
+    ms->smp.threads = 1;
+    ms->smp.sockets = 1;
 }
 
 static void machine_finalize(Object *obj)
diff --git a/softmmu/vl.c b/softmmu/vl.c
index 9b67ea300e..b7d7f43c88 100644
--- a/softmmu/vl.c
+++ b/softmmu/vl.c
@@ -3970,13 +3970,6 @@ void qemu_init(int argc, char **argv, char **envp)
         exit(0);
     }
 
-    /* default to machine_class->default_cpus */
-    current_machine->smp.cpus = machine_class->default_cpus;
-    current_machine->smp.max_cpus = machine_class->default_cpus;
-    current_machine->smp.cores = 1;
-    current_machine->smp.threads = 1;
-    current_machine->smp.sockets = 1;
-
     machine_class->smp_parse(current_machine,
         qemu_opts_find(qemu_find_opts("smp-opts"), NULL));
 
-- 
2.26.2



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

* Re: [PULL 00/17] Build system changes and misc fixes for QEMU 5.2 soft freeze
  2020-10-26 13:51 [PULL 00/17] Build system changes and misc fixes for QEMU 5.2 soft freeze Paolo Bonzini
                   ` (16 preceding siblings ...)
  2020-10-26 13:51 ` [PULL 17/17] machine: move SMP initialization from vl.c Paolo Bonzini
@ 2020-10-26 17:18 ` Peter Maydell
  2020-10-26 18:59   ` 罗勇刚(Yonggang Luo)
  17 siblings, 1 reply; 26+ messages in thread
From: Peter Maydell @ 2020-10-26 17:18 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: QEMU Developers

On Mon, 26 Oct 2020 at 14:04, Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> The following changes since commit 4c5b97bfd0dd54dc27717ae8d1cd10e14eef1430:
>
>   Merge remote-tracking branch 'remotes/kraxel/tags/modules-20201022-pull-request' into staging (2020-10-22 12:33:21 +0100)
>
> are available in the Git repository at:
>
>   https://gitlab.com/bonzini/qemu.git tags/for-upstream
>
> for you to fetch changes up to 8b0e484c8bf82e07bb0439bff04e248c63cdc86a:
>
>   machine: move SMP initialization from vl.c (2020-10-26 07:08:40 -0400)
>
> ----------------------------------------------------------------
> * fix --disable-tcg builds (Claudio)
> * Fixes for macOS --enable-modules build and OpenBSD curses/iconv detection (myself)
> * Start preparing for meson 0.56 (myself)
> * Move directory configuration to meson (myself)
> * Start untangling qemu_init (myself)
> * Windows fixes (Sunil)
> * Remove -no-kbm (Thomas)
>
> ----------------------------------------------------------------


Applied, thanks.

Please update the changelog at https://wiki.qemu.org/ChangeLog/5.2
for any user-visible changes.

-- PMM


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

* Re: [PULL 00/17] Build system changes and misc fixes for QEMU 5.2 soft freeze
  2020-10-26 17:18 ` [PULL 00/17] Build system changes and misc fixes for QEMU 5.2 soft freeze Peter Maydell
@ 2020-10-26 18:59   ` 罗勇刚(Yonggang Luo)
  2020-10-26 20:58     ` Paolo Bonzini
  0 siblings, 1 reply; 26+ messages in thread
From: 罗勇刚(Yonggang Luo) @ 2020-10-26 18:59 UTC (permalink / raw)
  To: Peter Maydell; +Cc: Paolo Bonzini, QEMU Developers

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

This pull request confused me, the windows msys2 build time slow down from
40min to more than one hour.

On Tue, Oct 27, 2020 at 1:54 AM Peter Maydell <peter.maydell@linaro.org>
wrote:
>
> On Mon, 26 Oct 2020 at 14:04, Paolo Bonzini <pbonzini@redhat.com> wrote:
> >
> > The following changes since commit
4c5b97bfd0dd54dc27717ae8d1cd10e14eef1430:
> >
> >   Merge remote-tracking branch
'remotes/kraxel/tags/modules-20201022-pull-request' into staging
(2020-10-22 12:33:21 +0100)
> >
> > are available in the Git repository at:
> >
> >   https://gitlab.com/bonzini/qemu.git tags/for-upstream
> >
> > for you to fetch changes up to 8b0e484c8bf82e07bb0439bff04e248c63cdc86a:
> >
> >   machine: move SMP initialization from vl.c (2020-10-26 07:08:40 -0400)
> >
> > ----------------------------------------------------------------
> > * fix --disable-tcg builds (Claudio)
> > * Fixes for macOS --enable-modules build and OpenBSD curses/iconv
detection (myself)
> > * Start preparing for meson 0.56 (myself)
> > * Move directory configuration to meson (myself)
> > * Start untangling qemu_init (myself)
> > * Windows fixes (Sunil)
> > * Remove -no-kbm (Thomas)
> >
> > ----------------------------------------------------------------
>
>
> Applied, thanks.
>
> Please update the changelog at https://wiki.qemu.org/ChangeLog/5.2
> for any user-visible changes.
>
> -- PMM
>


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

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

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

* Re: [PULL 00/17] Build system changes and misc fixes for QEMU 5.2 soft freeze
  2020-10-26 18:59   ` 罗勇刚(Yonggang Luo)
@ 2020-10-26 20:58     ` Paolo Bonzini
  2020-10-26 21:04       ` 罗勇刚(Yonggang Luo)
  0 siblings, 1 reply; 26+ messages in thread
From: Paolo Bonzini @ 2020-10-26 20:58 UTC (permalink / raw)
  To: Yonggang Luo; +Cc: Peter Maydell, QEMU Developers

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

Il lun 26 ott 2020, 19:59 罗勇刚(Yonggang Luo) <luoyonggang@gmail.com> ha
scritto:

> This pull request confused me, the windows msys2 build time slow down from
> 40min to more than one hour.
>

Probably just the cache being rebuilt. Cirrus CI times seem to vary a lot
but 40min and 1h5min seem to be the common cases before or after these
changes:

https://cirrus-ci.com/task/5531259461959680
With this PR: 35+2 (build+test)

https://cirrus-ci.com/task/4570682912669696
With this PR: 10+4

https://cirrus-ci.com/task/6662289128423424
With this PR: 35+2, +20 to rebuild cirrus cache

https://cirrus-ci.com/task/5383432727429120
Without this PR: 30+2, +18 to rebuild cirrus cache

Paolo

>

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

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

* Re: [PULL 00/17] Build system changes and misc fixes for QEMU 5.2 soft freeze
  2020-10-26 20:58     ` Paolo Bonzini
@ 2020-10-26 21:04       ` 罗勇刚(Yonggang Luo)
  0 siblings, 0 replies; 26+ messages in thread
From: 罗勇刚(Yonggang Luo) @ 2020-10-26 21:04 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: Peter Maydell, QEMU Developers

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

On Tue, Oct 27, 2020 at 4:58 AM Paolo Bonzini <pbonzini@redhat.com> wrote:
>
>
>
> Il lun 26 ott 2020, 19:59 罗勇刚(Yonggang Luo) <luoyonggang@gmail.com> ha
scritto:
>>
>> This pull request confused me, the windows msys2 build time slow down
from 40min to more than one hour.
>
>
> Probably just the cache being rebuilt. Cirrus CI times seem to vary a lot
but 40min and 1h5min seem to be the common cases before or after these
changes:
>
> https://cirrus-ci.com/task/5531259461959680
> With this PR: 35+2 (build+test)
>
> https://cirrus-ci.com/task/4570682912669696
> With this PR: 10+4
>
> https://cirrus-ci.com/task/6662289128423424
> With this PR: 35+2, +20 to rebuild cirrus cache
>
> https://cirrus-ci.com/task/5383432727429120
> Without this PR: 30+2, +18 to rebuild cirrus cache
>
> Paolo
That's correct, cirrus's building time are not stable. My own build are
already passed.
https://cirrus-ci.com/task/5357017537708032, if the cache are works, then
it's definitely won't exceed the time


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

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

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

* Re: [PULL 01/17] build: fix macOS --enable-modules build
  2020-10-26 13:51 ` [PULL 01/17] build: fix macOS --enable-modules build Paolo Bonzini
@ 2020-10-27  9:27   ` Philippe Mathieu-Daudé
  2020-10-27 13:27     ` Paolo Bonzini
  0 siblings, 1 reply; 26+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-10-27  9:27 UTC (permalink / raw)
  To: Paolo Bonzini, qemu-devel; +Cc: Thomas Huth, Emmanuel Blot, Gerd Hoffmann

On 10/26/20 2:51 PM, Paolo Bonzini wrote:
> Apple's nm implementation includes empty lines in the output that are not
> found in GNU binutils.  This confuses scripts/undefsym.py, though it did
> not confuse the scripts/undefsym.sh script that it replaced.  To fix
> this, ignore lines that do not have two fields.
> 
> Reported-by: Emmanuel Blot <eblot.ml@gmail.com>
> Tested-by: Emmanuel Blot <eblot.ml@gmail.com>
> Fixes: 604f3e4e90 ("meson: Convert undefsym.sh to undefsym.py", 2020-09-08)
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  .cirrus.yml         |  2 +-
>  scripts/undefsym.py | 11 +++++------
>  2 files changed, 6 insertions(+), 7 deletions(-)
> 
> diff --git a/.cirrus.yml b/.cirrus.yml
> index 81a2960b1a..900437dd2a 100644
> --- a/.cirrus.yml
> +++ b/.cirrus.yml
> @@ -40,7 +40,7 @@ macos_xcode_task:
>    script:
>      - mkdir build
>      - cd build
> -    - ../configure --extra-cflags='-Wno-error=deprecated-declarations'
> +    - ../configure --extra-cflags='-Wno-error=deprecated-declarations' --enable-modules
>                     --enable-werror --cc=clang || { cat config.log meson-logs/meson-log.txt; exit 1; }

I'm confused as this broke the catalina-xcode test:

PASS 5 qtest-aarch64/device-introspect-test
/aarch64/device/introspect/abstract-interfaces
missing object type 'virtio-gpu-device'
Broken pipe
../tests/qtest/libqtest.c:176: kill_qemu() detected QEMU death from
signal 6 (Abort trap: 6)
ERROR qtest-aarch64/device-introspect-test - too few tests run (expected
6, got 5)
gmake: *** [Makefile.mtest:905: run-test-111] Error 1


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

* Re: [PULL 01/17] build: fix macOS --enable-modules build
  2020-10-27  9:27   ` Philippe Mathieu-Daudé
@ 2020-10-27 13:27     ` Paolo Bonzini
  2020-10-27 15:21       ` Gerd Hoffmann
  0 siblings, 1 reply; 26+ messages in thread
From: Paolo Bonzini @ 2020-10-27 13:27 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel
  Cc: Thomas Huth, Emmanuel Blot, Gerd Hoffmann

On 27/10/20 10:27, Philippe Mathieu-Daudé wrote:
> I'm confused as this broke the catalina-xcode test:
> 
> PASS 5 qtest-aarch64/device-introspect-test
> /aarch64/device/introspect/abstract-interfaces
> missing object type 'virtio-gpu-device'
> Broken pipe
> ../tests/qtest/libqtest.c:176: kill_qemu() detected QEMU death from
> signal 6 (Abort trap: 6)
> ERROR qtest-aarch64/device-introspect-test - too few tests run (expected
> 6, got 5)
> gmake: *** [Makefile.mtest:905: run-test-111] Error 1
> 

It's showing that there is still a bug with macOS modules, Gerd was
looking at it (Emmanuel could so as well :)).

Paolo



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

* Re: [PULL 01/17] build: fix macOS --enable-modules build
  2020-10-27 13:27     ` Paolo Bonzini
@ 2020-10-27 15:21       ` Gerd Hoffmann
  2020-10-27 15:33         ` Gerd Hoffmann
  0 siblings, 1 reply; 26+ messages in thread
From: Gerd Hoffmann @ 2020-10-27 15:21 UTC (permalink / raw)
  To: Paolo Bonzini
  Cc: Thomas Huth, Emmanuel Blot, Philippe Mathieu-Daudé, qemu-devel

On Tue, Oct 27, 2020 at 02:27:42PM +0100, Paolo Bonzini wrote:
> On 27/10/20 10:27, Philippe Mathieu-Daudé wrote:
> > I'm confused as this broke the catalina-xcode test:
> > 
> > PASS 5 qtest-aarch64/device-introspect-test
> > /aarch64/device/introspect/abstract-interfaces
> > missing object type 'virtio-gpu-device'
> > Broken pipe
> > ../tests/qtest/libqtest.c:176: kill_qemu() detected QEMU death from
> > signal 6 (Abort trap: 6)
> > ERROR qtest-aarch64/device-introspect-test - too few tests run (expected
> > 6, got 5)
> > gmake: *** [Makefile.mtest:905: run-test-111] Error 1
> > 
> 
> It's showing that there is still a bug with macOS modules, Gerd was
> looking at it (Emmanuel could so as well :)).

Turned out to be simple.

https://patchwork.ozlabs.org/project/qemu-devel/patch/20201027120603.3625-1-kraxel@redhat.com/

take care,
  Gerd



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

* Re: [PULL 01/17] build: fix macOS --enable-modules build
  2020-10-27 15:21       ` Gerd Hoffmann
@ 2020-10-27 15:33         ` Gerd Hoffmann
  0 siblings, 0 replies; 26+ messages in thread
From: Gerd Hoffmann @ 2020-10-27 15:33 UTC (permalink / raw)
  To: Paolo Bonzini
  Cc: Thomas Huth, Emmanuel Blot, Philippe Mathieu-Daudé, qemu-devel

On Tue, Oct 27, 2020 at 04:21:50PM +0100, Gerd Hoffmann wrote:
> https://patchwork.ozlabs.org/project/qemu-devel/patch/20201027120603.3625-1-kraxel@redhat.com/

FYI: have pending pull req with this and 3 more module patches,
     ci running atm, probably goes out tomorrow ... )

take care,
  Gerd



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

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

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-26 13:51 [PULL 00/17] Build system changes and misc fixes for QEMU 5.2 soft freeze Paolo Bonzini
2020-10-26 13:51 ` [PULL 01/17] build: fix macOS --enable-modules build Paolo Bonzini
2020-10-27  9:27   ` Philippe Mathieu-Daudé
2020-10-27 13:27     ` Paolo Bonzini
2020-10-27 15:21       ` Gerd Hoffmann
2020-10-27 15:33         ` Gerd Hoffmann
2020-10-26 13:51 ` [PULL 02/17] meson: rewrite curses/iconv test Paolo Bonzini
2020-10-26 13:51 ` [PULL 03/17] do not use colons in test names Paolo Bonzini
2020-10-26 13:51 ` [PULL 04/17] hw/core/qdev-clock: add a reference on aliased clocks Paolo Bonzini
2020-10-26 13:51 ` [PULL 05/17] qtest: unbreak non-TCG builds in bios-tables-test Paolo Bonzini
2020-10-26 13:51 ` [PULL 06/17] replay: do not build if TCG is not available Paolo Bonzini
2020-10-26 13:51 ` [PULL 07/17] Remove deprecated -no-kvm option Paolo Bonzini
2020-10-26 13:51 ` [PULL 08/17] Makefile: separate meson rerun from the rest of the ninja invocation Paolo Bonzini
2020-10-26 13:51 ` [PULL 09/17] configure: allow configuring localedir Paolo Bonzini
2020-10-26 13:51 ` [PULL 10/17] configure: move directory options from config-host.mak to meson Paolo Bonzini
2020-10-26 13:51 ` [PULL 11/17] configure: remove unused variable from config-host.mak Paolo Bonzini
2020-10-26 13:51 ` [PULL 12/17] configure: move install_blobs from configure to meson Paolo Bonzini
2020-10-26 13:51 ` [PULL 13/17] WHPX: Fix WHPX build break Paolo Bonzini
2020-10-26 13:51 ` [PULL 14/17] win32: boot broken when bind & data dir are the same Paolo Bonzini
2020-10-26 13:51 ` [PULL 15/17] machine: remove deprecated -machine enforce-config-section option Paolo Bonzini
2020-10-26 13:51 ` [PULL 16/17] machine: move UP defaults to class_base_init Paolo Bonzini
2020-10-26 13:51 ` [PULL 17/17] machine: move SMP initialization from vl.c Paolo Bonzini
2020-10-26 17:18 ` [PULL 00/17] Build system changes and misc fixes for QEMU 5.2 soft freeze Peter Maydell
2020-10-26 18:59   ` 罗勇刚(Yonggang Luo)
2020-10-26 20:58     ` Paolo Bonzini
2020-10-26 21:04       ` 罗勇刚(Yonggang Luo)

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.