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; 10+ 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] 10+ 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; 10+ 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] 10+ 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; 10+ 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] 10+ 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; 10+ 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] 10+ messages in thread

* Re: [PATCH 1/4] meson: Fixes the ninjatool issue that E$$: are generated in Makefile.ninja
  2020-08-27 16:05     ` Mark Cave-Ayland
@ 2020-08-27 16:43       ` Paolo Bonzini
  0 siblings, 0 replies; 10+ messages in thread
From: Paolo Bonzini @ 2020-08-27 16:43 UTC (permalink / raw)
  To: Mark Cave-Ayland; +Cc: luoyonggang, Daniel P . Berrang茅, qemu-devel

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

Il gio 27 ago 2020, 18:05 Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
ha scritto:

> On 26/08/2020 07:45, Paolo Bonzini wrote:
>
> > On Tue, Aug 25, 2020 at 11:26 PM Mark Cave-Ayland
> > <mark.cave-ayland@ilande.co.uk> wrote:
> >> I've tested this and it changes build.ninja so instead of Windows paths
> beginning C$$
> >> they now begin C$ instead e.g.:
> >>
> >> build qemu-version.h: CUSTOM_COMMAND  |
> >> C$:/msys64/home/Mark/qemu/scripts/qemu-version.sh PHONY
> >
> > The patch should not change build.ninja in any way, but indeed it will
> > fix the transformation so that the (correct) ninja quoting is removed.
>
> It definitely changes build.ninja here, with the escaping changing from
> C$$:\ to C$:\
> in my tests.


Yes, the ^ makes no difference but I missed that it also adds a $.

Thanks for testing!!

Paolo

if you're saying that $: with just a single $ is the correct
> escaping for colon then I guess the patch is fine (and indeed it works for
> me with
> the $ now being removed in the transformation to Makefile.ninja).
>
>
> ATB,
>
> Mark.
>
>

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

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

* Re: [PATCH 1/4] meson: Fixes the ninjatool issue that E$$: are generated in Makefile.ninja
  2020-08-26  6:45   ` Paolo Bonzini
@ 2020-08-27 16:05     ` Mark Cave-Ayland
  2020-08-27 16:43       ` Paolo Bonzini
  0 siblings, 1 reply; 10+ messages in thread
From: Mark Cave-Ayland @ 2020-08-27 16:05 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: luoyonggang, Daniel P . Berrang茅, qemu-devel

On 26/08/2020 07:45, Paolo Bonzini wrote:

> On Tue, Aug 25, 2020 at 11:26 PM Mark Cave-Ayland
> <mark.cave-ayland@ilande.co.uk> wrote:
>> I've tested this and it changes build.ninja so instead of Windows paths beginning C$$
>> they now begin C$ instead e.g.:
>>
>> build qemu-version.h: CUSTOM_COMMAND  |
>> C$:/msys64/home/Mark/qemu/scripts/qemu-version.sh PHONY
> 
> The patch should not change build.ninja in any way, but indeed it will
> fix the transformation so that the (correct) ninja quoting is removed.

It definitely changes build.ninja here, with the escaping changing from C$$:\ to C$:\
in my tests. But if you're saying that $: with just a single $ is the correct
escaping for colon then I guess the patch is fine (and indeed it works for me with
the $ now being removed in the transformation to Makefile.ninja).


ATB,

Mark.


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

* Re: [PATCH 1/4] meson: Fixes the ninjatool issue that E$$: are generated in Makefile.ninja
  2020-08-25 21:26 ` Mark Cave-Ayland
@ 2020-08-26  6:45   ` Paolo Bonzini
  2020-08-27 16:05     ` Mark Cave-Ayland
  0 siblings, 1 reply; 10+ messages in thread
From: Paolo Bonzini @ 2020-08-26  6:45 UTC (permalink / raw)
  To: Mark Cave-Ayland; +Cc: luoyonggang, Daniel P . Berrang茅, qemu-devel

On Tue, Aug 25, 2020 at 11:26 PM Mark Cave-Ayland
<mark.cave-ayland@ilande.co.uk> wrote:
> I've tested this and it changes build.ninja so instead of Windows paths beginning C$$
> they now begin C$ instead e.g.:
>
> build qemu-version.h: CUSTOM_COMMAND  |
> C$:/msys64/home/Mark/qemu/scripts/qemu-version.sh PHONY

The patch should not change build.ninja in any way, but indeed it will
fix the transformation so that the (correct) ninja quoting is removed.

Paolo



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

* Re: [PATCH 1/4] meson: Fixes the ninjatool issue that E$$: are generated in Makefile.ninja
  2020-08-25 16:53 [PATCH 1/4] meson: Fixes the ninjatool issue that E$$: are generated in Makefile.ninja luoyonggang
  2020-08-25 21:26 ` Mark Cave-Ayland
@ 2020-08-25 21:42 ` Eric Blake
  1 sibling, 0 replies; 10+ messages in thread
From: Eric Blake @ 2020-08-25 21:42 UTC (permalink / raw)
  To: luoyonggang, qemu-devel; +Cc: Paolo Bonzini, Daniel P . Berrang茅

On 8/25/20 11:53 AM, luoyonggang@gmail.com wrote:
> 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:/
> ---

Missing a Signed-off-by tag.  Without that, we cannot apply it.

Also missing a 0/4 cover letter; less essential, but useful for 
continuous integration tools and for replying to the series as a whole.

More patch submission hints can be found at 
https://wiki.qemu.org/Contribute/SubmitAPatch

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3226
Virtualization:  qemu.org | libvirt.org



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

* Re: [PATCH 1/4] meson: Fixes the ninjatool issue that E$$: are generated in Makefile.ninja
  2020-08-25 16:53 [PATCH 1/4] meson: Fixes the ninjatool issue that E$$: are generated in Makefile.ninja luoyonggang
@ 2020-08-25 21:26 ` Mark Cave-Ayland
  2020-08-26  6:45   ` Paolo Bonzini
  2020-08-25 21:42 ` Eric Blake
  1 sibling, 1 reply; 10+ messages in thread
From: Mark Cave-Ayland @ 2020-08-25 21:26 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>
> 
> 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*|.")

I've tested this and it changes build.ninja so instead of Windows paths beginning C$$
they now begin C$ instead e.g.:

build qemu-version.h: CUSTOM_COMMAND  |
C$:/msys64/home/Mark/qemu/scripts/qemu-version.sh PHONY

I was expecting this not to work, however it seems in the next stage of
transformation from build.ninja to Makefile.ninja the extra $ is removed correctly:

qemu-version.h: qemu-version.h.stamp; @:
qemu-version.h.stamp: C:/msys64/home/Mark/qemu/scripts/qemu-version.sh PHONY | ;
${ninja-command-restat}

It feels like the extra $ shouldn't be present in build.ninja, but the patch does
generate a Makefile.ninja that works.


ATB,

Mark.


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

* [PATCH 1/4] meson: Fixes the ninjatool issue that E$$: are generated in Makefile.ninja
@ 2020-08-25 16:53 luoyonggang
  2020-08-25 21:26 ` Mark Cave-Ayland
  2020-08-25 21:42 ` Eric Blake
  0 siblings, 2 replies; 10+ 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>

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] 10+ messages in thread

end of thread, other threads:[~2020-08-27 16:44 UTC | newest]

Thread overview: 10+ 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
2020-08-25 16:53 [PATCH 1/4] meson: Fixes the ninjatool issue that E$$: are generated in Makefile.ninja luoyonggang
2020-08-25 21:26 ` Mark Cave-Ayland
2020-08-26  6:45   ` Paolo Bonzini
2020-08-27 16:05     ` Mark Cave-Ayland
2020-08-27 16:43       ` Paolo Bonzini
2020-08-25 21:42 ` Eric Blake

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