All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/5] meson: mingw installation fixes & nsis conversion
@ 2020-08-25 17:58 marcandre.lureau
  2020-08-25 17:58 ` [PATCH v2 1/5] meson: pass confsuffix option marcandre.lureau
                   ` (4 more replies)
  0 siblings, 5 replies; 14+ messages in thread
From: marcandre.lureau @ 2020-08-25 17:58 UTC (permalink / raw)
  To: qemu-devel; +Cc: sw, berrange, Marc-André Lureau, pbonzini

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Hi,

The following patches fix installation path when cross-compiling Windows
version, and move the NSIS build rule to meson.

v2:
 - replaced the shell script by a python version
 - add copyright/license for the new python script

Marc-André Lureau (5):
  meson: pass confsuffix option
  meson: use meson datadir instead of qemu_datadir
  meson: add docdir option and pass pre-prefix qemu_docdir
  meson: use meson mandir instead of qemu_mandir
  meson: add NSIS building

 Makefile                           | 56 ---------------------
 configure                          |  2 +
 contrib/vhost-user-gpu/meson.build |  2 +-
 docs/meson.build                   |  4 +-
 meson.build                        | 33 +++++++++++--
 meson_options.txt                  |  2 +
 pc-bios/descriptors/meson.build    |  2 +-
 pc-bios/keymaps/meson.build        |  6 +--
 pc-bios/meson.build                |  2 +-
 scripts/nsis.py                    | 78 ++++++++++++++++++++++++++++++
 tools/virtiofsd/meson.build        |  2 +-
 trace/meson.build                  |  2 +-
 12 files changed, 122 insertions(+), 69 deletions(-)
 create mode 100644 scripts/nsis.py

-- 
2.26.2




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

* [PATCH v2 1/5] meson: pass confsuffix option
  2020-08-25 17:58 [PATCH v2 0/5] meson: mingw installation fixes & nsis conversion marcandre.lureau
@ 2020-08-25 17:58 ` marcandre.lureau
  2020-08-26  8:28   ` Daniel P. Berrangé
  2020-08-25 17:58 ` [PATCH v2 2/5] meson: use meson datadir instead of qemu_datadir marcandre.lureau
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 14+ messages in thread
From: marcandre.lureau @ 2020-08-25 17:58 UTC (permalink / raw)
  To: qemu-devel; +Cc: sw, berrange, Marc-André Lureau, pbonzini

From: Marc-André Lureau <marcandre.lureau@redhat.com>

The following patches will make use of it to fix installation paths.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 configure         | 1 +
 meson_options.txt | 1 +
 2 files changed, 2 insertions(+)

diff --git a/configure b/configure
index b1e11397a8..e19e2de2f0 100755
--- a/configure
+++ b/configure
@@ -8222,6 +8222,7 @@ NINJA=$PWD/ninjatool $meson setup \
         --mandir "${pre_prefix}$mandir" \
         --sysconfdir "${pre_prefix}$sysconfdir" \
         --localstatedir "${pre_prefix}$local_statedir" \
+        -Dconfsuffix="$confsuffix" \
         -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) \
         -Dwerror=$(if test "$werror" = yes; then echo true; else echo false; fi) \
diff --git a/meson_options.txt b/meson_options.txt
index c55f9cd94c..7bb2c0fca9 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,3 +1,4 @@
+option('confsuffix', type : 'string', value: 'qemu')
 option('gettext', type : 'boolean', value : true)
 option('sdl', type : 'feature', value : 'auto')
 option('sdl_image', type : 'feature', value : 'auto')
-- 
2.26.2



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

* [PATCH v2 2/5] meson: use meson datadir instead of qemu_datadir
  2020-08-25 17:58 [PATCH v2 0/5] meson: mingw installation fixes & nsis conversion marcandre.lureau
  2020-08-25 17:58 ` [PATCH v2 1/5] meson: pass confsuffix option marcandre.lureau
@ 2020-08-25 17:58 ` marcandre.lureau
  2020-08-26  8:29   ` Daniel P. Berrangé
  2020-08-25 17:58 ` [PATCH v2 3/5] meson: add docdir option and pass pre-prefix qemu_docdir marcandre.lureau
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 14+ messages in thread
From: marcandre.lureau @ 2020-08-25 17:58 UTC (permalink / raw)
  To: qemu-devel; +Cc: sw, berrange, Marc-André Lureau, pbonzini

From: Marc-André Lureau <marcandre.lureau@redhat.com>

When cross-compiling, by default qemu_datadir is 'c:\Program
Files\QEMU', which is not recognized as being an absolute path, and
meson will end up adding the prefix again.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 contrib/vhost-user-gpu/meson.build | 2 +-
 meson.build                        | 3 ++-
 pc-bios/descriptors/meson.build    | 2 +-
 pc-bios/keymaps/meson.build        | 6 +++---
 pc-bios/meson.build                | 2 +-
 tools/virtiofsd/meson.build        | 2 +-
 trace/meson.build                  | 2 +-
 7 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/contrib/vhost-user-gpu/meson.build b/contrib/vhost-user-gpu/meson.build
index 6c1459f54a..8df4c13bc5 100644
--- a/contrib/vhost-user-gpu/meson.build
+++ b/contrib/vhost-user-gpu/meson.build
@@ -9,5 +9,5 @@ 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,
-                 install_dir: config_host['qemu_datadir'] / 'vhost-user')
+                 install_dir: qemu_datadir / 'vhost-user')
 endif
diff --git a/meson.build b/meson.build
index f0fe5f8799..20f20a7bfc 100644
--- a/meson.build
+++ b/meson.build
@@ -17,6 +17,7 @@ config_all_disas = keyval.load(meson.current_build_dir() / 'config-all-disas.mak
 enable_modules = 'CONFIG_MODULES' in config_host
 enable_static = 'CONFIG_STATIC' in config_host
 build_docs = 'BUILD_DOCS' in config_host
+qemu_datadir = get_option('datadir') + get_option('confsuffix')
 config_host_data = configuration_data()
 genh = []
 
@@ -1039,7 +1040,7 @@ foreach target : target_dirs
                       output: exe_name + stp['ext'],
                       capture: true,
                       install: stp['install'],
-                      install_dir: config_host['qemu_datadir'] / '../systemtap/tapset',
+                      install_dir: qemu_datadir / '../systemtap/tapset',
                       command: [
                         tracetool, '--group=all', '--format=' + stp['fmt'],
                         '--binary=' + stp['bin'],
diff --git a/pc-bios/descriptors/meson.build b/pc-bios/descriptors/meson.build
index 7c715bace8..3798d32372 100644
--- a/pc-bios/descriptors/meson.build
+++ b/pc-bios/descriptors/meson.build
@@ -10,5 +10,5 @@ foreach f: [
                  output: f,
                  configuration: {'DATADIR': config_host['qemu_datadir']},
                  install: install_blobs,
-                 install_dir: config_host['qemu_datadir'] / 'firmware')
+                 install_dir: qemu_datadir / 'firmware')
 endforeach
diff --git a/pc-bios/keymaps/meson.build b/pc-bios/keymaps/meson.build
index b737c82230..bbac83ece3 100644
--- a/pc-bios/keymaps/meson.build
+++ b/pc-bios/keymaps/meson.build
@@ -44,13 +44,13 @@ foreach km, args: keymaps
                      build_by_default: true,
                      output: km,
                      command: [native_qemu_keymap, '-f', '@OUTPUT@', args.split()],
-                     install_dir: config_host['qemu_datadir'] / 'keymaps')
+                     install_dir: qemu_datadir / 'keymaps')
 endforeach
 if t.length() > 0
   alias_target('update-keymaps', t)
 else
   # install from the source tree
-  install_data(keymaps.keys(), install_dir: config_host['qemu_datadir'] / 'keymaps')
+  install_data(keymaps.keys(), install_dir: qemu_datadir / 'keymaps')
 endif
 
-install_data(['sl', 'sv'], install_dir: config_host['qemu_datadir'] / 'keymaps')
+install_data(['sl', 'sv'], install_dir: qemu_datadir / 'keymaps')
diff --git a/pc-bios/meson.build b/pc-bios/meson.build
index b6389f5148..c11e52ba26 100644
--- a/pc-bios/meson.build
+++ b/pc-bios/meson.build
@@ -19,7 +19,7 @@ if 'DECOMPRESS_EDK2_BLOBS' in config_host
                   input: '@0@.bz2'.format(f),
                   capture: true,
                   install: install_blobs,
-                  install_dir: config_host['qemu_datadir'],
+                  install_dir: qemu_datadir,
                   command: [ bzip2, '-dc', '@INPUT0@' ])
   endforeach
 endif
diff --git a/tools/virtiofsd/meson.build b/tools/virtiofsd/meson.build
index d1e23c5760..50022ed89e 100644
--- a/tools/virtiofsd/meson.build
+++ b/tools/virtiofsd/meson.build
@@ -16,4 +16,4 @@ executable('virtiofsd', files(
 configure_file(input: '50-qemu-virtiofsd.json.in',
                output: '50-qemu-virtiofsd.json',
                configuration: config_host,
-               install_dir: config_host['qemu_datadir'] / 'vhost-user')
+               install_dir: qemu_datadir / 'vhost-user')
diff --git a/trace/meson.build b/trace/meson.build
index 56e870848e..5f0bf11cb5 100644
--- a/trace/meson.build
+++ b/trace/meson.build
@@ -55,7 +55,7 @@ trace_events_all = custom_target('trace-events-all',
                                  command: [ 'cat', '@INPUT@' ],
                                  capture: true,
                                  install: true,
-                                 install_dir: config_host['qemu_datadir'])
+                                 install_dir: qemu_datadir)
 
 foreach d : [
   ['generated-tcg-tracers.h', 'tcg-h'],
-- 
2.26.2



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

* [PATCH v2 3/5] meson: add docdir option and pass pre-prefix qemu_docdir
  2020-08-25 17:58 [PATCH v2 0/5] meson: mingw installation fixes & nsis conversion marcandre.lureau
  2020-08-25 17:58 ` [PATCH v2 1/5] meson: pass confsuffix option marcandre.lureau
  2020-08-25 17:58 ` [PATCH v2 2/5] meson: use meson datadir instead of qemu_datadir marcandre.lureau
@ 2020-08-25 17:58 ` marcandre.lureau
  2020-08-26  8:32   ` Daniel P. Berrangé
  2020-08-25 17:58 ` [PATCH v2 4/5] meson: use meson mandir instead of qemu_mandir marcandre.lureau
  2020-08-25 17:58 ` [PATCH v2 5/5] meson: add NSIS building marcandre.lureau
  4 siblings, 1 reply; 14+ messages in thread
From: marcandre.lureau @ 2020-08-25 17:58 UTC (permalink / raw)
  To: qemu-devel; +Cc: sw, berrange, Marc-André Lureau, pbonzini

From: Marc-André Lureau <marcandre.lureau@redhat.com>

When cross-compiling, by default qemu_docdir is 'c:\Program Files\QEMU\'
which is not recognized as being an absolute path, and meson will end up
adding the prefix again.

Add an option to pass docdir location to meson, pre-prefixed like we do
with other directories and use that instead of config_host['qemu_docdir'].

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 configure         | 1 +
 docs/meson.build  | 4 ++--
 meson.build       | 3 ++-
 meson_options.txt | 1 +
 4 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/configure b/configure
index e19e2de2f0..e644841299 100755
--- a/configure
+++ b/configure
@@ -8223,6 +8223,7 @@ NINJA=$PWD/ninjatool $meson setup \
         --sysconfdir "${pre_prefix}$sysconfdir" \
         --localstatedir "${pre_prefix}$local_statedir" \
         -Dconfsuffix="$confsuffix" \
+        -Ddocdir="${pre_prefix}$qemu_docdir" \
         -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) \
         -Dwerror=$(if test "$werror" = yes; then echo true; else echo false; fi) \
diff --git a/docs/meson.build b/docs/meson.build
index 8b059a8e39..e27f4632dc 100644
--- a/docs/meson.build
+++ b/docs/meson.build
@@ -10,7 +10,7 @@ if build_docs
   configure_file(output: 'index.html',
                  input: files('index.html.in'),
                  configuration: {'VERSION': meson.project_version()},
-                 install_dir: config_host['qemu_docdir'])
+                 install_dir: get_option('docdir'))
   manuals = [ 'devel', 'interop', 'tools', 'specs', 'system', 'user' ]
   man_pages = {
     'interop' : {
@@ -48,7 +48,7 @@ if build_docs
                           input_dir, output_dir])
     sphinxdocs += this_manual
     if build_docs and manual != 'devel'
-      install_subdir(output_dir, install_dir: config_host['qemu_docdir'])
+      install_subdir(output_dir, install_dir: get_option('docdir'))
     endif
 
     these_man_pages = []
diff --git a/meson.build b/meson.build
index 20f20a7bfc..33281cecc3 100644
--- a/meson.build
+++ b/meson.build
@@ -1170,7 +1170,7 @@ if build_docs
                       input: input,
                       output: output,
                       install: true,
-                      install_dir: config_host['qemu_docdir'] / 'interop',
+                      install_dir: get_option('docdir') / 'interop',
                       command: cmd + args)
       endforeach
       alias_target(ext, t)
@@ -1233,6 +1233,7 @@ if targetos != 'windows'
 else
   summary_info += {'local state directory': 'queried at runtime'}
 endif
+summary_info += {'Doc directory':     get_option('docdir')}
 summary_info += {'Build directory':   meson.current_build_dir()}
 summary_info += {'Source path':       meson.current_source_dir()}
 summary_info += {'GIT binary':        config_host['GIT']}
diff --git a/meson_options.txt b/meson_options.txt
index 7bb2c0fca9..fb9312fddd 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,4 +1,5 @@
 option('confsuffix', type : 'string', value: 'qemu')
+option('docdir', type : 'string', value : 'doc/qemu')
 option('gettext', type : 'boolean', value : true)
 option('sdl', type : 'feature', value : 'auto')
 option('sdl_image', type : 'feature', value : 'auto')
-- 
2.26.2



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

* [PATCH v2 4/5] meson: use meson mandir instead of qemu_mandir
  2020-08-25 17:58 [PATCH v2 0/5] meson: mingw installation fixes & nsis conversion marcandre.lureau
                   ` (2 preceding siblings ...)
  2020-08-25 17:58 ` [PATCH v2 3/5] meson: add docdir option and pass pre-prefix qemu_docdir marcandre.lureau
@ 2020-08-25 17:58 ` marcandre.lureau
  2020-08-26  8:33   ` Daniel P. Berrangé
  2020-08-25 17:58 ` [PATCH v2 5/5] meson: add NSIS building marcandre.lureau
  4 siblings, 1 reply; 14+ messages in thread
From: marcandre.lureau @ 2020-08-25 17:58 UTC (permalink / raw)
  To: qemu-devel; +Cc: sw, berrange, Marc-André Lureau, pbonzini

From: Marc-André Lureau <marcandre.lureau@redhat.com>

When cross-compiling, by default qemu_mandir is 'c:\Program
Files\QEMU', which is not recognized as being an absolute path, and
meson will end up adding the prefix again.

Use the pre-prefixed meson mandir option instead.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 meson.build | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meson.build b/meson.build
index 33281cecc3..0720a7d684 100644
--- a/meson.build
+++ b/meson.build
@@ -1210,7 +1210,7 @@ if build_docs
                           output: man,
                           capture: true,
                           install: true,
-                          install_dir: config_host['mandir'] / 'man7',
+                          install_dir: get_option('mandir') / 'man7',
                           command: [pod2man, '--utf8', '--section=7', '--center=" "',
                                     '--release=" "', '@INPUT@'])
     endforeach
-- 
2.26.2



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

* [PATCH v2 5/5] meson: add NSIS building
  2020-08-25 17:58 [PATCH v2 0/5] meson: mingw installation fixes & nsis conversion marcandre.lureau
                   ` (3 preceding siblings ...)
  2020-08-25 17:58 ` [PATCH v2 4/5] meson: use meson mandir instead of qemu_mandir marcandre.lureau
@ 2020-08-25 17:58 ` marcandre.lureau
  2020-08-26  8:40   ` Daniel P. Berrangé
  4 siblings, 1 reply; 14+ messages in thread
From: marcandre.lureau @ 2020-08-25 17:58 UTC (permalink / raw)
  To: qemu-devel; +Cc: sw, berrange, Marc-André Lureau, pbonzini

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 Makefile        | 56 -----------------------------------
 meson.build     | 25 ++++++++++++++++
 scripts/nsis.py | 78 +++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 103 insertions(+), 56 deletions(-)
 create mode 100644 scripts/nsis.py

diff --git a/Makefile b/Makefile
index 81794d5c34..3ebd6929b4 100644
--- a/Makefile
+++ b/Makefile
@@ -294,62 +294,6 @@ endif
 		"$(DESTDIR)$(qemu_desktopdir)/qemu.desktop"
 	$(INSTALL_DIR) "$(DESTDIR)$(qemu_datadir)/keymaps"
 
-ifdef CONFIG_WIN32
-
-INSTALLER = qemu-setup-$(VERSION)$(EXESUF)
-
-nsisflags = -V2 -NOCD
-
-ifneq ($(wildcard $(SRC_PATH)/dll),)
-ifeq ($(ARCH),x86_64)
-# 64 bit executables
-DLL_PATH = $(SRC_PATH)/dll/w64
-nsisflags += -DW64
-else
-# 32 bit executables
-DLL_PATH = $(SRC_PATH)/dll/w32
-endif
-endif
-
-.PHONY: installer
-installer: $(INSTALLER)
-
-INSTDIR=/tmp/qemu-nsis
-
-$(INSTALLER): $(SRC_PATH)/qemu.nsi
-	$(MAKE) install DESTDIR=${INSTDIR}
-ifdef SIGNCODE
-	(cd ${INSTDIR}/${bindir}; \
-         for i in *.exe; do \
-           $(SIGNCODE) $${i}; \
-         done \
-        )
-endif # SIGNCODE
-	(cd ${INSTDIR}/${bindir}; \
-         for i in qemu-system-*.exe; do \
-           arch=$${i%.exe}; \
-           arch=$${arch#qemu-system-}; \
-           echo Section \"$$arch\" Section_$$arch; \
-           echo SetOutPath \"\$$INSTDIR\"; \
-           echo File \"\$${BINDIR}\\$$i\"; \
-           echo SectionEnd; \
-         done \
-        ) >${INSTDIR}/${bindir}/system-emulations.nsh
-	makensis $(nsisflags) \
-                $(if $(BUILD_DOCS),-DCONFIG_DOCUMENTATION="y") \
-                $(if $(CONFIG_GTK),-DCONFIG_GTK="y") \
-                -DBINDIR="${INSTDIR}/${bindir}" \
-                $(if $(DLL_PATH),-DDLLDIR="$(DLL_PATH)") \
-                -DSRCDIR="$(SRC_PATH)" \
-                -DOUTFILE="$(INSTALLER)" \
-                -DDISPLAYVERSION="$(VERSION)" \
-                $(SRC_PATH)/qemu.nsi
-	rm -r ${INSTDIR}
-ifdef SIGNCODE
-	$(SIGNCODE) $(INSTALLER)
-endif # SIGNCODE
-endif # CONFIG_WIN
-
 # Add a dependency on the generated files, so that they are always
 # rebuilt before other object files
 ifneq ($(wildcard config-host.mak),)
diff --git a/meson.build b/meson.build
index 0720a7d684..bc2bea23b2 100644
--- a/meson.build
+++ b/meson.build
@@ -1217,6 +1217,31 @@ if build_docs
   endif
 endif
 
+if host_machine.system() == 'windows'
+  nsis_cmd = [
+    find_program('scripts/nsis.py'),
+    '@OUTPUT@',
+    get_option('prefix'),
+    meson.current_source_dir(),
+    host_machine.cpu_family(),
+    '--',
+    '-DDISPLAYVERSION=' + meson.project_version(),
+  ]
+  if build_docs
+    nsis_cmd += '-DCONFIG_DOCUMENTATION=y'
+  endif
+  if 'CONFIG_GTK' in config_host
+    nsis_cmd += '-DCONFIG_GTK=y'
+  endif
+
+  nsis = custom_target('nsis',
+                       output: 'qemu-setup-' + meson.project_version() + '.exe',
+                       input: files('qemu.nsi'),
+                       build_always_stale: true,
+                       command: nsis_cmd + ['@INPUT@'])
+  alias_target('installer', nsis)
+endif
+
 summary_info = {}
 summary_info += {'Install prefix':    config_host['prefix']}
 summary_info += {'BIOS directory':    config_host['qemu_datadir']}
diff --git a/scripts/nsis.py b/scripts/nsis.py
new file mode 100644
index 0000000000..e1c409344e
--- /dev/null
+++ b/scripts/nsis.py
@@ -0,0 +1,78 @@
+#!/usr/bin/env python3
+#
+# Copyright (C) 2020 Red Hat, Inc.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+import argparse
+import glob
+import os
+import shutil
+import subprocess
+import tempfile
+
+
+def signcode(path):
+    cmd = os.environ.get("SIGNCODE")
+    if not cmd:
+        return
+    subprocess.run([cmd, path])
+
+
+def main():
+    parser = argparse.ArgumentParser(description="QEMU NSIS build helper.")
+    parser.add_argument("outfile")
+    parser.add_argument("prefix")
+    parser.add_argument("srcdir")
+    parser.add_argument("cpu")
+    parser.add_argument("nsisargs", nargs="*")
+    args = parser.parse_args()
+
+    destdir = tempfile.mkdtemp()
+    try:
+        subprocess.run(["make", "install", "DESTDIR=" + destdir + os.path.sep])
+        with open(
+            os.path.join(destdir + args.prefix, "system-emulations.nsh"), "w"
+        ) as nsh:
+            for exe in glob.glob(
+                os.path.join(destdir + args.prefix, "qemu-system-*.exe")
+            ):
+                exe = os.path.basename(exe)
+                arch = exe[12:-4]
+                nsh.write(
+                    """
+                Section "{0}" Section_{0}
+                SetOutPath "$INSTDIR"
+                File "${{BINDIR}}\\{1}"
+                SectionEnd
+                """.format(
+                        arch, exe
+                    )
+                )
+
+        for exe in glob.glob(os.path.join(destdir + args.prefix, "*.exe")):
+            signcode(exe)
+
+        makensis = [
+            "makensis",
+            "-V2",
+            "-NOCD",
+            "-DSRCDIR=" + args.srcdir,
+            "-DBINDIR=" + destdir + args.prefix,
+        ]
+        dlldir = "w32"
+        if args.cpu == "x86_64":
+            dlldir = "w64"
+            makensis += ["-DW64"]
+        if os.path.exists(os.path.join(args.srcdir, "dll")):
+            makensis += "-DDLLDIR={0}/dll/{1}".format(args.srcdir, dlldir)
+
+        makensis += ["-DOUTFILE=" + args.outfile] + args.nsisargs
+        subprocess.run(makensis)
+        signcode(args.outfile)
+    finally:
+        shutil.rmtree(destdir)
+
+
+if __name__ == "__main__":
+    main()
-- 
2.26.2



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

* Re: [PATCH v2 1/5] meson: pass confsuffix option
  2020-08-25 17:58 ` [PATCH v2 1/5] meson: pass confsuffix option marcandre.lureau
@ 2020-08-26  8:28   ` Daniel P. Berrangé
  0 siblings, 0 replies; 14+ messages in thread
From: Daniel P. Berrangé @ 2020-08-26  8:28 UTC (permalink / raw)
  To: marcandre.lureau; +Cc: sw, qemu-devel, pbonzini

On Tue, Aug 25, 2020 at 09:58:23PM +0400, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> The following patches will make use of it to fix installation paths.
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  configure         | 1 +
>  meson_options.txt | 1 +
>  2 files changed, 2 insertions(+)
> 
> diff --git a/configure b/configure
> index b1e11397a8..e19e2de2f0 100755
> --- a/configure
> +++ b/configure
> @@ -8222,6 +8222,7 @@ NINJA=$PWD/ninjatool $meson setup \
>          --mandir "${pre_prefix}$mandir" \
>          --sysconfdir "${pre_prefix}$sysconfdir" \
>          --localstatedir "${pre_prefix}$local_statedir" \
> +        -Dconfsuffix="$confsuffix" \
>          -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) \
>          -Dwerror=$(if test "$werror" = yes; then echo true; else echo false; fi) \
> diff --git a/meson_options.txt b/meson_options.txt
> index c55f9cd94c..7bb2c0fca9 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -1,3 +1,4 @@
> +option('confsuffix', type : 'string', value: 'qemu')

In "configure",  $confsuffix defaults to "/qemu", but here is misses the
"/".  Not having the "/" is better as meson will add the correct platform
specific dir separator, but it makes me think that configure needs updating
to strip a leading "/" when passing it into meson ?  

>  option('gettext', type : 'boolean', value : true)
>  option('sdl', type : 'feature', value : 'auto')
>  option('sdl_image', type : 'feature', value : 'auto')
> -- 
> 2.26.2
> 

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|



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

* Re: [PATCH v2 2/5] meson: use meson datadir instead of qemu_datadir
  2020-08-25 17:58 ` [PATCH v2 2/5] meson: use meson datadir instead of qemu_datadir marcandre.lureau
@ 2020-08-26  8:29   ` Daniel P. Berrangé
  2020-08-26  8:53     ` Marc-André Lureau
  0 siblings, 1 reply; 14+ messages in thread
From: Daniel P. Berrangé @ 2020-08-26  8:29 UTC (permalink / raw)
  To: marcandre.lureau; +Cc: sw, qemu-devel, pbonzini

On Tue, Aug 25, 2020 at 09:58:24PM +0400, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> When cross-compiling, by default qemu_datadir is 'c:\Program
> Files\QEMU', which is not recognized as being an absolute path, and
> meson will end up adding the prefix again.
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  contrib/vhost-user-gpu/meson.build | 2 +-
>  meson.build                        | 3 ++-
>  pc-bios/descriptors/meson.build    | 2 +-
>  pc-bios/keymaps/meson.build        | 6 +++---
>  pc-bios/meson.build                | 2 +-
>  tools/virtiofsd/meson.build        | 2 +-
>  trace/meson.build                  | 2 +-
>  7 files changed, 10 insertions(+), 9 deletions(-)
> 

> diff --git a/meson.build b/meson.build
> index f0fe5f8799..20f20a7bfc 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -17,6 +17,7 @@ config_all_disas = keyval.load(meson.current_build_dir() / 'config-all-disas.mak
>  enable_modules = 'CONFIG_MODULES' in config_host
>  enable_static = 'CONFIG_STATIC' in config_host
>  build_docs = 'BUILD_DOCS' in config_host
> +qemu_datadir = get_option('datadir') + get_option('confsuffix')

This needs to be

   get_option('datadir') / get_option('confsuffix')

to add the dir separator if we're using the default meson value
for "confsuffix" which lacks a leading "/".


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|



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

* Re: [PATCH v2 3/5] meson: add docdir option and pass pre-prefix qemu_docdir
  2020-08-25 17:58 ` [PATCH v2 3/5] meson: add docdir option and pass pre-prefix qemu_docdir marcandre.lureau
@ 2020-08-26  8:32   ` Daniel P. Berrangé
  2020-08-26  8:38     ` Marc-André Lureau
  0 siblings, 1 reply; 14+ messages in thread
From: Daniel P. Berrangé @ 2020-08-26  8:32 UTC (permalink / raw)
  To: marcandre.lureau; +Cc: sw, qemu-devel, pbonzini

On Tue, Aug 25, 2020 at 09:58:25PM +0400, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> When cross-compiling, by default qemu_docdir is 'c:\Program Files\QEMU\'
> which is not recognized as being an absolute path, and meson will end up
> adding the prefix again.
> 
> Add an option to pass docdir location to meson, pre-prefixed like we do
> with other directories and use that instead of config_host['qemu_docdir'].
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  configure         | 1 +
>  docs/meson.build  | 4 ++--
>  meson.build       | 3 ++-
>  meson_options.txt | 1 +
>  4 files changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/configure b/configure
> index e19e2de2f0..e644841299 100755
> --- a/configure
> +++ b/configure
> @@ -8223,6 +8223,7 @@ NINJA=$PWD/ninjatool $meson setup \
>          --sysconfdir "${pre_prefix}$sysconfdir" \
>          --localstatedir "${pre_prefix}$local_statedir" \
>          -Dconfsuffix="$confsuffix" \
> +        -Ddocdir="${pre_prefix}$qemu_docdir" \

This is passing an absolute path.....


> diff --git a/meson_options.txt b/meson_options.txt
> index 7bb2c0fca9..fb9312fddd 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -1,4 +1,5 @@
>  option('confsuffix', type : 'string', value: 'qemu')
> +option('docdir', type : 'string', value : 'doc/qemu')

...but this default is a relative dir, presumably relative to
datadir.  The code expects an absolute dir.


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|



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

* Re: [PATCH v2 4/5] meson: use meson mandir instead of qemu_mandir
  2020-08-25 17:58 ` [PATCH v2 4/5] meson: use meson mandir instead of qemu_mandir marcandre.lureau
@ 2020-08-26  8:33   ` Daniel P. Berrangé
  0 siblings, 0 replies; 14+ messages in thread
From: Daniel P. Berrangé @ 2020-08-26  8:33 UTC (permalink / raw)
  To: marcandre.lureau; +Cc: sw, qemu-devel, pbonzini

On Tue, Aug 25, 2020 at 09:58:26PM +0400, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> When cross-compiling, by default qemu_mandir is 'c:\Program
> Files\QEMU', which is not recognized as being an absolute path, and
> meson will end up adding the prefix again.
> 
> Use the pre-prefixed meson mandir option instead.
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  meson.build | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|



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

* Re: [PATCH v2 3/5] meson: add docdir option and pass pre-prefix qemu_docdir
  2020-08-26  8:32   ` Daniel P. Berrangé
@ 2020-08-26  8:38     ` Marc-André Lureau
  0 siblings, 0 replies; 14+ messages in thread
From: Marc-André Lureau @ 2020-08-26  8:38 UTC (permalink / raw)
  To: Daniel P. Berrangé; +Cc: Stefan Weil, QEMU, Paolo Bonzini

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

Hi

On Wed, Aug 26, 2020 at 12:32 PM Daniel P. Berrangé <berrange@redhat.com>
wrote:

> On Tue, Aug 25, 2020 at 09:58:25PM +0400, marcandre.lureau@redhat.com
> wrote:
> > From: Marc-André Lureau <marcandre.lureau@redhat.com>
> >
> > When cross-compiling, by default qemu_docdir is 'c:\Program Files\QEMU\'
> > which is not recognized as being an absolute path, and meson will end up
> > adding the prefix again.
> >
> > Add an option to pass docdir location to meson, pre-prefixed like we do
> > with other directories and use that instead of
> config_host['qemu_docdir'].
> >
> > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> > ---
> >  configure         | 1 +
> >  docs/meson.build  | 4 ++--
> >  meson.build       | 3 ++-
> >  meson_options.txt | 1 +
> >  4 files changed, 6 insertions(+), 3 deletions(-)
> >
> > diff --git a/configure b/configure
> > index e19e2de2f0..e644841299 100755
> > --- a/configure
> > +++ b/configure
> > @@ -8223,6 +8223,7 @@ NINJA=$PWD/ninjatool $meson setup \
> >          --sysconfdir "${pre_prefix}$sysconfdir" \
> >          --localstatedir "${pre_prefix}$local_statedir" \
> >          -Dconfsuffix="$confsuffix" \
> > +        -Ddocdir="${pre_prefix}$qemu_docdir" \
>
> This is passing an absolute path.....
>
>
> > diff --git a/meson_options.txt b/meson_options.txt
> > index 7bb2c0fca9..fb9312fddd 100644
> > --- a/meson_options.txt
> > +++ b/meson_options.txt
> > @@ -1,4 +1,5 @@
> >  option('confsuffix', type : 'string', value: 'qemu')
> > +option('docdir', type : 'string', value : 'doc/qemu')
>
> ...but this default is a relative dir, presumably relative to
> datadir.  The code expects an absolute dir.
>


Meson accepts both absolute and relative path for installation location. If
it's relative, it will be under the $prefix directory.


>
> Regards,
> Daniel
> --
> |: https://berrange.com      -o-
> https://www.flickr.com/photos/dberrange :|
> |: https://libvirt.org         -o-
> https://fstop138.berrange.com :|
> |: https://entangle-photo.org    -o-
> https://www.instagram.com/dberrange :|
>
>
>

-- 
Marc-André Lureau

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

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

* Re: [PATCH v2 5/5] meson: add NSIS building
  2020-08-25 17:58 ` [PATCH v2 5/5] meson: add NSIS building marcandre.lureau
@ 2020-08-26  8:40   ` Daniel P. Berrangé
  0 siblings, 0 replies; 14+ messages in thread
From: Daniel P. Berrangé @ 2020-08-26  8:40 UTC (permalink / raw)
  To: marcandre.lureau; +Cc: sw, qemu-devel, pbonzini

On Tue, Aug 25, 2020 at 09:58:27PM +0400, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  Makefile        | 56 -----------------------------------
>  meson.build     | 25 ++++++++++++++++
>  scripts/nsis.py | 78 +++++++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 103 insertions(+), 56 deletions(-)
>  create mode 100644 scripts/nsis.py

> diff --git a/scripts/nsis.py b/scripts/nsis.py
> new file mode 100644
> index 0000000000..e1c409344e
> --- /dev/null
> +++ b/scripts/nsis.py
> @@ -0,0 +1,78 @@
> +#!/usr/bin/env python3
> +#
> +# Copyright (C) 2020 Red Hat, Inc.
> +#
> +# SPDX-License-Identifier: GPL-2.0-or-later
> +
> +import argparse
> +import glob
> +import os
> +import shutil
> +import subprocess
> +import tempfile
> +
> +
> +def signcode(path):
> +    cmd = os.environ.get("SIGNCODE")
> +    if not cmd:
> +        return
> +    subprocess.run([cmd, path])

I know the existing makefile used  $SIGNCODE env variable, but I can't
help thinking it would be better to have it as a configure arg, and
in turn a meson arg.

None the less, it isn't worse than what already exists so

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|



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

* Re: [PATCH v2 2/5] meson: use meson datadir instead of qemu_datadir
  2020-08-26  8:29   ` Daniel P. Berrangé
@ 2020-08-26  8:53     ` Marc-André Lureau
  2020-08-26  9:45       ` Paolo Bonzini
  0 siblings, 1 reply; 14+ messages in thread
From: Marc-André Lureau @ 2020-08-26  8:53 UTC (permalink / raw)
  To: Daniel P. Berrangé; +Cc: Stefan Weil, QEMU, Paolo Bonzini

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

Hi

On Wed, Aug 26, 2020 at 12:30 PM Daniel P. Berrangé <berrange@redhat.com>
wrote:

> On Tue, Aug 25, 2020 at 09:58:24PM +0400, marcandre.lureau@redhat.com
> wrote:
> > From: Marc-André Lureau <marcandre.lureau@redhat.com>
> >
> > When cross-compiling, by default qemu_datadir is 'c:\Program
> > Files\QEMU', which is not recognized as being an absolute path, and
> > meson will end up adding the prefix again.
> >
> > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> > ---
> >  contrib/vhost-user-gpu/meson.build | 2 +-
> >  meson.build                        | 3 ++-
> >  pc-bios/descriptors/meson.build    | 2 +-
> >  pc-bios/keymaps/meson.build        | 6 +++---
> >  pc-bios/meson.build                | 2 +-
> >  tools/virtiofsd/meson.build        | 2 +-
> >  trace/meson.build                  | 2 +-
> >  7 files changed, 10 insertions(+), 9 deletions(-)
> >
>
> > diff --git a/meson.build b/meson.build
> > index f0fe5f8799..20f20a7bfc 100644
> > --- a/meson.build
> > +++ b/meson.build
> > @@ -17,6 +17,7 @@ config_all_disas =
> keyval.load(meson.current_build_dir() / 'config-all-disas.mak
> >  enable_modules = 'CONFIG_MODULES' in config_host
> >  enable_static = 'CONFIG_STATIC' in config_host
> >  build_docs = 'BUILD_DOCS' in config_host
> > +qemu_datadir = get_option('datadir') + get_option('confsuffix')
>
> This needs to be
>
>    get_option('datadir') / get_option('confsuffix')
>
> to add the dir separator if we're using the default meson value
> for "confsuffix" which lacks a leading "/".
>

right, fixed

-- 
Marc-André Lureau

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

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

* Re: [PATCH v2 2/5] meson: use meson datadir instead of qemu_datadir
  2020-08-26  8:53     ` Marc-André Lureau
@ 2020-08-26  9:45       ` Paolo Bonzini
  0 siblings, 0 replies; 14+ messages in thread
From: Paolo Bonzini @ 2020-08-26  9:45 UTC (permalink / raw)
  To: Marc-André Lureau; +Cc: Stefan Weil, Daniel P. Berrangé, QEMU

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

You'd need to check first if it works correctly if confsuffix "looks like"
an absolute path ('/qemu'). So + looks correct to me.

(Sorry for top posting).

Paolo

Il mer 26 ago 2020, 10:53 Marc-André Lureau <marcandre.lureau@gmail.com> ha
scritto:

> Hi
>
> On Wed, Aug 26, 2020 at 12:30 PM Daniel P. Berrangé <berrange@redhat.com>
> wrote:
>
>> On Tue, Aug 25, 2020 at 09:58:24PM +0400, marcandre.lureau@redhat.com
>> wrote:
>> > From: Marc-André Lureau <marcandre.lureau@redhat.com>
>> >
>> > When cross-compiling, by default qemu_datadir is 'c:\Program
>> > Files\QEMU', which is not recognized as being an absolute path, and
>> > meson will end up adding the prefix again.
>> >
>> > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
>> > ---
>> >  contrib/vhost-user-gpu/meson.build | 2 +-
>> >  meson.build                        | 3 ++-
>> >  pc-bios/descriptors/meson.build    | 2 +-
>> >  pc-bios/keymaps/meson.build        | 6 +++---
>> >  pc-bios/meson.build                | 2 +-
>> >  tools/virtiofsd/meson.build        | 2 +-
>> >  trace/meson.build                  | 2 +-
>> >  7 files changed, 10 insertions(+), 9 deletions(-)
>> >
>>
>> > diff --git a/meson.build b/meson.build
>> > index f0fe5f8799..20f20a7bfc 100644
>> > --- a/meson.build
>> > +++ b/meson.build
>> > @@ -17,6 +17,7 @@ config_all_disas =
>> keyval.load(meson.current_build_dir() / 'config-all-disas.mak
>> >  enable_modules = 'CONFIG_MODULES' in config_host
>> >  enable_static = 'CONFIG_STATIC' in config_host
>> >  build_docs = 'BUILD_DOCS' in config_host
>> > +qemu_datadir = get_option('datadir') + get_option('confsuffix')
>>
>> This needs to be
>>
>>    get_option('datadir') / get_option('confsuffix')
>>
>> to add the dir separator if we're using the default meson value
>> for "confsuffix" which lacks a leading "/".
>>
>
> right, fixed
>
> --
> Marc-André Lureau
>

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

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

end of thread, other threads:[~2020-08-26  9:46 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-25 17:58 [PATCH v2 0/5] meson: mingw installation fixes & nsis conversion marcandre.lureau
2020-08-25 17:58 ` [PATCH v2 1/5] meson: pass confsuffix option marcandre.lureau
2020-08-26  8:28   ` Daniel P. Berrangé
2020-08-25 17:58 ` [PATCH v2 2/5] meson: use meson datadir instead of qemu_datadir marcandre.lureau
2020-08-26  8:29   ` Daniel P. Berrangé
2020-08-26  8:53     ` Marc-André Lureau
2020-08-26  9:45       ` Paolo Bonzini
2020-08-25 17:58 ` [PATCH v2 3/5] meson: add docdir option and pass pre-prefix qemu_docdir marcandre.lureau
2020-08-26  8:32   ` Daniel P. Berrangé
2020-08-26  8:38     ` Marc-André Lureau
2020-08-25 17:58 ` [PATCH v2 4/5] meson: use meson mandir instead of qemu_mandir marcandre.lureau
2020-08-26  8:33   ` Daniel P. Berrangé
2020-08-25 17:58 ` [PATCH v2 5/5] meson: add NSIS building marcandre.lureau
2020-08-26  8:40   ` Daniel P. Berrangé

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.