qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/4] meson: Fixes the ninjatool issue that E$$: are generated in Makefile.ninja
@ 2020-08-25 14:51 luoyonggang
  2020-08-25 14:51 ` [PATCH 2/4] meson: fixes relpath may fail on win32 luoyonggang
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: luoyonggang @ 2020-08-25 14:51 UTC (permalink / raw)
  To: qemu-devel; +Cc: Paolo Bonzini, Yonggang Luo

From: Yonggang Luo <luoyonggang@gmail.com>

SIMPLE_PATH_RE should match the full path token.
Or the $ and : contained in path would not matched if the path are start with C:/ and E:/
---
 scripts/ninjatool.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/ninjatool.py b/scripts/ninjatool.py
index cc77d51aa8..6ca8be6f10 100755
--- a/scripts/ninjatool.py
+++ b/scripts/ninjatool.py
@@ -55,7 +55,7 @@ else:
 
 PATH_RE = r"[^$\s:|]+|\$[$ :]|\$[a-zA-Z0-9_-]+|\$\{[a-zA-Z0-9_.-]+\}"
 
-SIMPLE_PATH_RE = re.compile(r"[^$\s:|]+")
+SIMPLE_PATH_RE = re.compile(r"^[^$\s:|]+$")
 IDENT_RE = re.compile(r"[a-zA-Z0-9_.-]+$")
 STRING_RE = re.compile(r"(" + PATH_RE + r"|[\s:|])(?:\r?\n)?|.")
 TOPLEVEL_RE = re.compile(r"([=:#]|\|\|?|^ +|(?:" + PATH_RE + r")+)\s*|.")
-- 
2.27.0.windows.1



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

* [PATCH 2/4] meson: fixes relpath may fail on win32.
  2020-08-25 14:51 [PATCH 1/4] meson: Fixes the ninjatool issue that E$$: are generated in Makefile.ninja luoyonggang
@ 2020-08-25 14:51 ` luoyonggang
  2020-08-25 14:51 ` [PATCH 3/4] meson: Mingw64 gcc doesn't recognize system include_type for sdl2 luoyonggang
  2020-08-25 14:51 ` [PATCH 4/4] configure: Fix include and linkage issue on msys2 luoyonggang
  2 siblings, 0 replies; 7+ messages in thread
From: luoyonggang @ 2020-08-25 14:51 UTC (permalink / raw)
  To: qemu-devel; +Cc: Paolo Bonzini, Yonggang Luo

From: Yonggang Luo <luoyonggang@gmail.com>

On win32, os.path.relpath would raise exception when do the following relpath:
C:/msys64/mingw64/x.exe relative to E:/path/qemu-build would fail.
So we try catch it for stopping it from raise exception on msys2
---
 scripts/mtest2make.py | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/scripts/mtest2make.py b/scripts/mtest2make.py
index bdb257bbd9..d7a51bf97e 100644
--- a/scripts/mtest2make.py
+++ b/scripts/mtest2make.py
@@ -53,9 +53,16 @@ i = 0
 for test in json.load(sys.stdin):
     env = ' '.join(('%s=%s' % (shlex.quote(k), shlex.quote(v))
                     for k, v in test['env'].items()))
-    executable = os.path.relpath(test['cmd'][0])
+    executable = test['cmd'][0]
+    try:
+        executable = os.path.relpath(executable)
+    except:
+        pass
     if test['workdir'] is not None:
-        test['cmd'][0] = os.path.relpath(test['cmd'][0], test['workdir'])
+        try:
+            test['cmd'][0] = os.path.relpath(executable, test['workdir'])
+        except:
+            test['cmd'][0] = executable
     else:
         test['cmd'][0] = executable
     cmd = '$(.test.env) %s %s' % (env, ' '.join((shlex.quote(x) for x in test['cmd'])))
-- 
2.27.0.windows.1



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

* [PATCH 3/4] meson: Mingw64 gcc doesn't recognize system include_type for sdl2
  2020-08-25 14:51 [PATCH 1/4] meson: Fixes the ninjatool issue that E$$: are generated in Makefile.ninja luoyonggang
  2020-08-25 14:51 ` [PATCH 2/4] meson: fixes relpath may fail on win32 luoyonggang
@ 2020-08-25 14:51 ` luoyonggang
  2020-08-25 14:51 ` [PATCH 4/4] configure: Fix include and linkage issue on msys2 luoyonggang
  2 siblings, 0 replies; 7+ messages in thread
From: luoyonggang @ 2020-08-25 14:51 UTC (permalink / raw)
  To: qemu-devel; +Cc: Paolo Bonzini, Yonggang Luo

From: Yonggang Luo <luoyonggang@gmail.com>

Fixes this for msys2/mingw64 by remove the include_type for sdl2 discovery in meson
---
 meson.build | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/meson.build b/meson.build
index df5bf728b5..a3585881e1 100644
--- a/meson.build
+++ b/meson.build
@@ -224,8 +224,7 @@ if 'CONFIG_BRLAPI' in config_host
   brlapi = declare_dependency(link_args: config_host['BRLAPI_LIBS'].split())
 endif
 
-sdl = dependency('sdl2', required: get_option('sdl'), static: enable_static,
-                 include_type: 'system')
+sdl = dependency('sdl2', required: get_option('sdl'), static: enable_static)
 sdl_image = not_found
 if sdl.found()
   # work around 2.0.8 bug
-- 
2.27.0.windows.1



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

* [PATCH 4/4] configure: Fix include and linkage issue on msys2
  2020-08-25 14:51 [PATCH 1/4] meson: Fixes the ninjatool issue that E$$: are generated in Makefile.ninja luoyonggang
  2020-08-25 14:51 ` [PATCH 2/4] meson: fixes relpath may fail on win32 luoyonggang
  2020-08-25 14:51 ` [PATCH 3/4] meson: Mingw64 gcc doesn't recognize system include_type for sdl2 luoyonggang
@ 2020-08-25 14:51 ` luoyonggang
  2 siblings, 0 replies; 7+ messages in thread
From: luoyonggang @ 2020-08-25 14:51 UTC (permalink / raw)
  To: qemu-devel; +Cc: Paolo Bonzini, Yonggang Luo

From: Yonggang Luo <luoyonggang@gmail.com>

On msys2, the -I/e/path/to/qemu -L/e/path/to/qemu are not recognized by the compiler
Case $PWD are result msys type path such as /e/path/to/qemu
but `pwd -W` are result E:/path/to/qemu that can be recognized by the compiler
So we replace all $PWD with $build_path that can handling msys2/mingw properly
---
 configure | 34 ++++++++++++++++++++++------------
 1 file changed, 22 insertions(+), 12 deletions(-)

diff --git a/configure b/configure
index b8f5b81a67..a0e2b20877 100755
--- a/configure
+++ b/configure
@@ -13,8 +13,13 @@ export CCACHE_RECACHE=yes
 
 # make source path absolute
 source_path=$(cd "$(dirname -- "$0")"; pwd)
+build_path=$PWD
+if [ "$MSYSTEM" = "MINGW64" -o  "$MSYSTEM" = "MINGW32" ]; then
+source_path=$(cd "$(dirname -- "$0")"; pwd -W)
+build_path=`pwd -W`
+fi
 
-if test "$PWD" = "$source_path"
+if test "$build_path" = "$source_path"
 then
     echo "Using './build' as the directory for build output"
 
@@ -346,7 +351,12 @@ ld_has() {
     $ld --help 2>/dev/null | grep ".$1" >/dev/null 2>&1
 }
 
-if printf %s\\n "$source_path" "$PWD" | grep -q "[[:space:]:]";
+check_valid_build_path="[[:space:]:]"
+if [ "$MSYSTEM" = "MINGW64" -o  "$MSYSTEM" = "MINGW32" ]; then
+check_valid_build_path="[[:space:]]"
+fi
+
+if printf %s\\n "$source_path" "$build_path" | grep -q "$check_valid_build_path";
 then
   error_exit "main directory cannot contain spaces nor colons"
 fi
@@ -942,7 +952,7 @@ Linux)
   linux="yes"
   linux_user="yes"
   kvm="yes"
-  QEMU_INCLUDES="-isystem ${source_path}/linux-headers -I$PWD/linux-headers $QEMU_INCLUDES"
+  QEMU_INCLUDES="-isystem ${source_path}/linux-headers -I${build_path}/linux-headers $QEMU_INCLUDES"
   libudev="yes"
 ;;
 esac
@@ -4299,7 +4309,7 @@ EOF
               symlink "$source_path/dtc/Makefile" "dtc/Makefile"
           fi
           fdt_cflags="-I${source_path}/dtc/libfdt"
-          fdt_ldflags="-L$PWD/dtc/libfdt"
+          fdt_ldflags="-L${build_path}/dtc/libfdt"
           fdt_libs="$fdt_libs"
       elif test "$fdt" = "yes" ; then
           # Not a git build & no libfdt found, prompt for system install
@@ -5284,7 +5294,7 @@ case "$capstone" in
     else
       LIBCAPSTONE=libcapstone.a
     fi
-    capstone_libs="-L$PWD/capstone -lcapstone"
+    capstone_libs="-L${build_path}/capstone -lcapstone"
     capstone_cflags="-I${source_path}/capstone/include"
     ;;
 
@@ -6284,8 +6294,8 @@ case "$slirp" in
       git_submodules="${git_submodules} slirp"
     fi
     mkdir -p slirp
-    slirp_cflags="-I${source_path}/slirp/src -I$PWD/slirp/src"
-    slirp_libs="-L$PWD/slirp -lslirp"
+    slirp_cflags="-I${source_path}/slirp/src -I${build_path}/slirp/src"
+    slirp_libs="-L${build_path}/slirp -lslirp"
     if test "$mingw32" = "yes" ; then
       slirp_libs="$slirp_libs -lws2_32 -liphlpapi"
     fi
@@ -8233,7 +8243,7 @@ fi
 mv $cross config-meson.cross
 
 rm -rf meson-private meson-info meson-logs
-NINJA=$PWD/ninjatool $meson setup \
+NINJA="${build_path}/ninjatool" $meson setup \
         --prefix "${pre_prefix}$prefix" \
         --libdir "${pre_prefix}$libdir" \
         --libexecdir "${pre_prefix}$libexecdir" \
@@ -8249,11 +8259,11 @@ NINJA=$PWD/ninjatool $meson setup \
         -Dstrip=$(if test "$strip_opt" = yes; then echo true; else echo false; fi) \
         -Db_pie=$(if test "$pie" = yes; then echo true; else echo false; fi) \
         -Db_coverage=$(if test "$gcov" = yes; then echo true; else echo false; fi) \
-	-Dsdl=$sdl -Dsdl_image=$sdl_image \
-	-Dvnc=$vnc -Dvnc_sasl=$vnc_sasl -Dvnc_jpeg=$vnc_jpeg -Dvnc_png=$vnc_png \
-	-Dgettext=$gettext \
+        -Dsdl=$sdl -Dsdl_image=$sdl_image \
+        -Dvnc=$vnc -Dvnc_sasl=$vnc_sasl -Dvnc_jpeg=$vnc_jpeg -Dvnc_png=$vnc_png \
+        -Dgettext=$gettext \
         $cross_arg \
-        "$PWD" "$source_path"
+        "$build_path" "$source_path"
 
 if test "$?" -ne 0 ; then
     error_exit "meson setup failed"
-- 
2.27.0.windows.1



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

* [PATCH 2/4] meson: fixes relpath may fail on win32.
  2020-08-25 16:53 [PATCH 1/4] meson: Fixes the ninjatool issue that E$$: are generated in Makefile.ninja luoyonggang
@ 2020-08-25 16:53 ` luoyonggang
  2020-08-25 21:31   ` Mark Cave-Ayland
  0 siblings, 1 reply; 7+ messages in thread
From: luoyonggang @ 2020-08-25 16:53 UTC (permalink / raw)
  To: qemu-devel; +Cc: Paolo Bonzini, Yonggang Luo, Daniel P . Berrang茅

From: Yonggang Luo <luoyonggang@gmail.com>

On win32, os.path.relpath would raise exception when do the following relpath:
C:/msys64/mingw64/x.exe relative to E:/path/qemu-build would fail.
So we try catch it for stopping it from raise exception on msys2
---
 scripts/mtest2make.py | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/scripts/mtest2make.py b/scripts/mtest2make.py
index bdb257bbd9..d7a51bf97e 100644
--- a/scripts/mtest2make.py
+++ b/scripts/mtest2make.py
@@ -53,9 +53,16 @@ i = 0
 for test in json.load(sys.stdin):
     env = ' '.join(('%s=%s' % (shlex.quote(k), shlex.quote(v))
                     for k, v in test['env'].items()))
-    executable = os.path.relpath(test['cmd'][0])
+    executable = test['cmd'][0]
+    try:
+        executable = os.path.relpath(executable)
+    except:
+        pass
     if test['workdir'] is not None:
-        test['cmd'][0] = os.path.relpath(test['cmd'][0], test['workdir'])
+        try:
+            test['cmd'][0] = os.path.relpath(executable, test['workdir'])
+        except:
+            test['cmd'][0] = executable
     else:
         test['cmd'][0] = executable
     cmd = '$(.test.env) %s %s' % (env, ' '.join((shlex.quote(x) for x in test['cmd'])))
-- 
2.27.0.windows.1



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

* Re: [PATCH 2/4] meson: fixes relpath may fail on win32.
  2020-08-25 16:53 ` [PATCH 2/4] meson: fixes relpath may fail on win32 luoyonggang
@ 2020-08-25 21:31   ` Mark Cave-Ayland
  2020-08-26  6:46     ` Paolo Bonzini
  0 siblings, 1 reply; 7+ messages in thread
From: Mark Cave-Ayland @ 2020-08-25 21:31 UTC (permalink / raw)
  To: luoyonggang, qemu-devel; +Cc: Paolo Bonzini, Daniel P . Berrang茅

On 25/08/2020 17:53, luoyonggang@gmail.com wrote:

> From: Yonggang Luo <luoyonggang@gmail.com>
> 
> On win32, os.path.relpath would raise exception when do the following relpath:
> C:/msys64/mingw64/x.exe relative to E:/path/qemu-build would fail.
> So we try catch it for stopping it from raise exception on msys2
> ---
>  scripts/mtest2make.py | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/scripts/mtest2make.py b/scripts/mtest2make.py
> index bdb257bbd9..d7a51bf97e 100644
> --- a/scripts/mtest2make.py
> +++ b/scripts/mtest2make.py
> @@ -53,9 +53,16 @@ i = 0
>  for test in json.load(sys.stdin):
>      env = ' '.join(('%s=%s' % (shlex.quote(k), shlex.quote(v))
>                      for k, v in test['env'].items()))
> -    executable = os.path.relpath(test['cmd'][0])
> +    executable = test['cmd'][0]
> +    try:
> +        executable = os.path.relpath(executable)
> +    except:
> +        pass
>      if test['workdir'] is not None:
> -        test['cmd'][0] = os.path.relpath(test['cmd'][0], test['workdir'])
> +        try:
> +            test['cmd'][0] = os.path.relpath(executable, test['workdir'])
> +        except:
> +            test['cmd'][0] = executable
>      else:
>          test['cmd'][0] = executable
>      cmd = '$(.test.env) %s %s' % (env, ' '.join((shlex.quote(x) for x in test['cmd'])))

I don't think this is relevant in my particular environment, however it didn't seem
to break the build. I'm curious as to why os.path.relpath throws an exception in this
particular case on Windows though - can you give us a bit more information about the
Exception that is being thrown?


ATB,

Mark.


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

* Re: [PATCH 2/4] meson: fixes relpath may fail on win32.
  2020-08-25 21:31   ` Mark Cave-Ayland
@ 2020-08-26  6:46     ` Paolo Bonzini
  0 siblings, 0 replies; 7+ messages in thread
From: Paolo Bonzini @ 2020-08-26  6:46 UTC (permalink / raw)
  To: Mark Cave-Ayland; +Cc: luoyonggang, Daniel P . Berrang茅, qemu-devel

On Tue, Aug 25, 2020 at 11:31 PM Mark Cave-Ayland
<mark.cave-ayland@ilande.co.uk> wrote:
> On 25/08/2020 17:53, luoyonggang@gmail.com wrote:
>
> > From: Yonggang Luo <luoyonggang@gmail.com>
> >
> > On win32, os.path.relpath would raise exception when do the following relpath:
> > C:/msys64/mingw64/x.exe relative to E:/path/qemu-build would fail.
> > So we try catch it for stopping it from raise exception on msys2
> I don't think this is relevant in my particular environment, however it didn't seem
> to break the build. I'm curious as to why os.path.relpath throws an exception in this
> particular case on Windows though - can you give us a bit more information about the
> Exception that is being thrown?

I think it's because it's impossible to make a relative path between
two different drives.

The patch is correct but is missing the Signed-off-by line.

Paolo



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

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

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-08-25 14:51 [PATCH 1/4] meson: Fixes the ninjatool issue that E$$: are generated in Makefile.ninja luoyonggang
2020-08-25 14:51 ` [PATCH 2/4] meson: fixes relpath may fail on win32 luoyonggang
2020-08-25 14:51 ` [PATCH 3/4] meson: Mingw64 gcc doesn't recognize system include_type for sdl2 luoyonggang
2020-08-25 14:51 ` [PATCH 4/4] configure: Fix include and linkage issue on msys2 luoyonggang
  -- strict thread matches above, loose matches on Subject: below --
2020-08-25 16:53 [PATCH 1/4] meson: Fixes the ninjatool issue that E$$: are generated in Makefile.ninja luoyonggang
2020-08-25 16:53 ` [PATCH 2/4] meson: fixes relpath may fail on win32 luoyonggang
2020-08-25 21:31   ` Mark Cave-Ayland
2020-08-26  6:46     ` Paolo Bonzini

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).