* [PATCH v2] configure: add --ninja option
@ 2020-08-26 19:02 Paolo Bonzini
2020-08-27 15:57 ` Mark Cave-Ayland
0 siblings, 1 reply; 3+ messages in thread
From: Paolo Bonzini @ 2020-08-26 19:02 UTC (permalink / raw)
To: qemu-devel; +Cc: Mark Cave-Ayland
On Windows it is not possible to invoke a Python script as $NINJA.
If ninja is present use it directly, while if it is not we can
keep using ninjatool.
Reported-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
configure | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/configure b/configure
index 9db9bb89b9..6ecaff429b 100755
--- a/configure
+++ b/configure
@@ -568,6 +568,7 @@ rng_none="no"
secret_keyring=""
libdaxctl=""
meson=""
+ninja=""
skip_meson=no
gettext=""
@@ -1052,6 +1053,8 @@ for opt do
;;
--meson=*) meson="$optarg"
;;
+ --ninja=*) ninja="$optarg"
+ ;;
--smbd=*) smbd="$optarg"
;;
--extra-cflags=*)
@@ -1820,6 +1823,7 @@ Advanced options (experts only):
--python=PYTHON use specified python [$python]
--sphinx-build=SPHINX use specified sphinx-build [$sphinx_build]
--meson=MESON use specified meson [$meson]
+ --ninja=NINJA use specified ninja [$ninja]
--smbd=SMBD use specified smbd [$smbd]
--with-git=GIT use specified git [$git]
--static enable static build [$static]
@@ -2058,6 +2062,16 @@ case "$meson" in
*) meson=$(command -v meson) ;;
esac
+# Probe for ninja (used for compdb)
+
+if test -z "$ninja"; then
+ for c in ninja ninja-build samu; do
+ if has $c; then
+ ninja=$(command -v "$c")
+ break
+ fi
+ done
+fi
# Check that the C compiler works. Doing this here before testing
# the host CPU ensures that we had a valid CC to autodetect the
@@ -8197,7 +8211,7 @@ fi
mv $cross config-meson.cross
rm -rf meson-private meson-info meson-logs
-NINJA=$PWD/ninjatool $meson setup \
+NINJA=${ninja:-$PWD/ninjatool} $meson setup \
--prefix "${pre_prefix}$prefix" \
--libdir "${pre_prefix}$libdir" \
--libexecdir "${pre_prefix}$libexecdir" \
--
2.26.2
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v2] configure: add --ninja option
2020-08-26 19:02 [PATCH v2] configure: add --ninja option Paolo Bonzini
@ 2020-08-27 15:57 ` Mark Cave-Ayland
2020-08-27 20:47 ` Paolo Bonzini
0 siblings, 1 reply; 3+ messages in thread
From: Mark Cave-Ayland @ 2020-08-27 15:57 UTC (permalink / raw)
To: Paolo Bonzini, qemu-devel
On 26/08/2020 20:02, Paolo Bonzini wrote:
> On Windows it is not possible to invoke a Python script as $NINJA.
> If ninja is present use it directly, while if it is not we can
> keep using ninjatool.
>
> Reported-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
> configure | 16 +++++++++++++++-
> 1 file changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/configure b/configure
> index 9db9bb89b9..6ecaff429b 100755
> --- a/configure
> +++ b/configure
> @@ -568,6 +568,7 @@ rng_none="no"
> secret_keyring=""
> libdaxctl=""
> meson=""
> +ninja=""
> skip_meson=no
> gettext=""
>
> @@ -1052,6 +1053,8 @@ for opt do
> ;;
> --meson=*) meson="$optarg"
> ;;
> + --ninja=*) ninja="$optarg"
> + ;;
> --smbd=*) smbd="$optarg"
> ;;
> --extra-cflags=*)
> @@ -1820,6 +1823,7 @@ Advanced options (experts only):
> --python=PYTHON use specified python [$python]
> --sphinx-build=SPHINX use specified sphinx-build [$sphinx_build]
> --meson=MESON use specified meson [$meson]
> + --ninja=NINJA use specified ninja [$ninja]
> --smbd=SMBD use specified smbd [$smbd]
> --with-git=GIT use specified git [$git]
> --static enable static build [$static]
> @@ -2058,6 +2062,16 @@ case "$meson" in
> *) meson=$(command -v meson) ;;
> esac
>
> +# Probe for ninja (used for compdb)
> +
> +if test -z "$ninja"; then
> + for c in ninja ninja-build samu; do
> + if has $c; then
> + ninja=$(command -v "$c")
> + break
> + fi
> + done
> +fi
>
> # Check that the C compiler works. Doing this here before testing
> # the host CPU ensures that we had a valid CC to autodetect the
> @@ -8197,7 +8211,7 @@ fi
> mv $cross config-meson.cross
>
> rm -rf meson-private meson-info meson-logs
> -NINJA=$PWD/ninjatool $meson setup \
> +NINJA=${ninja:-$PWD/ninjatool} $meson setup \
> --prefix "${pre_prefix}$prefix" \
> --libdir "${pre_prefix}$libdir" \
> --libexecdir "${pre_prefix}$libexecdir" \
I've just tested this, but it gives me a python stacktrace if I run it without
passing a --ninja argument to configure. With a bit of extra debugging added to see
what is being generated:
###XXX ['C:/msys64/mingw64/bin/ninja', '--version']
Traceback (most recent call last):
File "C:/msys64/home/Mark/qemu/meson/mesonbuild/mesonmain.py", line 131, in run
return options.run_func(options)
File "C:/msys64/home/Mark/qemu/meson/mesonbuild/msetup.py", line 245, in run
app.generate()
File "C:/msys64/home/Mark/qemu/meson/mesonbuild/msetup.py", line 159, in generate
self._generate(env)
File "C:/msys64/home/Mark/qemu/meson/mesonbuild/msetup.py", line 215, in _generate
intr.backend.generate()
File "C:/msys64/home/Mark/qemu/meson/mesonbuild/backend/ninjabackend.py", line 483,
in generate
ninja = environment.detect_ninja_command_and_version(log=True)
File "C:/msys64/home/Mark/qemu/meson/mesonbuild/environment.py", line 177, in
detect_ninja_command_and_version
name = os.path.basename(n)
File "C:/msys64/mingw64/lib/python3.8/ntpath.py", line 231, in basename
return split(p)[1]
File "C:/msys64/mingw64/lib/python3.8/ntpath.py", line 200, in split
p = os.fspath(p)
TypeError: expected str, bytes or os.PathLike object, not NoneType
ERROR: meson setup failed
It seems that it doesn't like parsing the discovered ninja path. I can make configure
work by passing --ninja=ninja to configure which falls back to PATH and appears to do
the right thing:
###XXX ['ninja', '--version']
Found ninja.EXE-1.10.1 at C:\msys64\mingw64\bin/ninja.EXE
I tried a few other things too:
--ninja=C:/msys64/mingw64/bin/ninja - fails
--ninja=C:/msys64/mingw64/bin/ninja.exe - works
--ninja=ninja.exe - works
--ninja=/c/msys64/mingw64/bin/ninja - fails similar as above
--ninja=/c/msys64/mingw64/bin/ninja.exe - works
--ninja=C:\\msys64\\mingw64\\bin\\ninja - fails similar as above
--ninja=C:\\msys64\\mingw64\\bin\\ninja.exe - works
From these tests it looks as if the .exe prefix is required when using a full path to
the ninja executable.
ATB,
Mark.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v2] configure: add --ninja option
2020-08-27 15:57 ` Mark Cave-Ayland
@ 2020-08-27 20:47 ` Paolo Bonzini
0 siblings, 0 replies; 3+ messages in thread
From: Paolo Bonzini @ 2020-08-27 20:47 UTC (permalink / raw)
To: Mark Cave-Ayland; +Cc: qemu-devel
[-- Attachment #1: Type: text/plain, Size: 4613 bytes --]
Thanks, that might be worth fixing in Meson.
Paolo
Il gio 27 ago 2020, 17:57 Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
ha scritto:
> On 26/08/2020 20:02, Paolo Bonzini wrote:
>
> > On Windows it is not possible to invoke a Python script as $NINJA.
> > If ninja is present use it directly, while if it is not we can
> > keep using ninjatool.
> >
> > Reported-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
> > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> > ---
> > configure | 16 +++++++++++++++-
> > 1 file changed, 15 insertions(+), 1 deletion(-)
> >
> > diff --git a/configure b/configure
> > index 9db9bb89b9..6ecaff429b 100755
> > --- a/configure
> > +++ b/configure
> > @@ -568,6 +568,7 @@ rng_none="no"
> > secret_keyring=""
> > libdaxctl=""
> > meson=""
> > +ninja=""
> > skip_meson=no
> > gettext=""
> >
> > @@ -1052,6 +1053,8 @@ for opt do
> > ;;
> > --meson=*) meson="$optarg"
> > ;;
> > + --ninja=*) ninja="$optarg"
> > + ;;
> > --smbd=*) smbd="$optarg"
> > ;;
> > --extra-cflags=*)
> > @@ -1820,6 +1823,7 @@ Advanced options (experts only):
> > --python=PYTHON use specified python [$python]
> > --sphinx-build=SPHINX use specified sphinx-build [$sphinx_build]
> > --meson=MESON use specified meson [$meson]
> > + --ninja=NINJA use specified ninja [$ninja]
> > --smbd=SMBD use specified smbd [$smbd]
> > --with-git=GIT use specified git [$git]
> > --static enable static build [$static]
> > @@ -2058,6 +2062,16 @@ case "$meson" in
> > *) meson=$(command -v meson) ;;
> > esac
> >
> > +# Probe for ninja (used for compdb)
> > +
> > +if test -z "$ninja"; then
> > + for c in ninja ninja-build samu; do
> > + if has $c; then
> > + ninja=$(command -v "$c")
> > + break
> > + fi
> > + done
> > +fi
> >
> > # Check that the C compiler works. Doing this here before testing
> > # the host CPU ensures that we had a valid CC to autodetect the
> > @@ -8197,7 +8211,7 @@ fi
> > mv $cross config-meson.cross
> >
> > rm -rf meson-private meson-info meson-logs
> > -NINJA=$PWD/ninjatool $meson setup \
> > +NINJA=${ninja:-$PWD/ninjatool} $meson setup \
> > --prefix "${pre_prefix}$prefix" \
> > --libdir "${pre_prefix}$libdir" \
> > --libexecdir "${pre_prefix}$libexecdir" \
>
> I've just tested this, but it gives me a python stacktrace if I run it
> without
> passing a --ninja argument to configure. With a bit of extra debugging
> added to see
> what is being generated:
>
> ###XXX ['C:/msys64/mingw64/bin/ninja', '--version']
> Traceback (most recent call last):
> File "C:/msys64/home/Mark/qemu/meson/mesonbuild/mesonmain.py", line 131,
> in run
> return options.run_func(options)
> File "C:/msys64/home/Mark/qemu/meson/mesonbuild/msetup.py", line 245, in
> run
> app.generate()
> File "C:/msys64/home/Mark/qemu/meson/mesonbuild/msetup.py", line 159, in
> generate
> self._generate(env)
> File "C:/msys64/home/Mark/qemu/meson/mesonbuild/msetup.py", line 215, in
> _generate
> intr.backend.generate()
> File
> "C:/msys64/home/Mark/qemu/meson/mesonbuild/backend/ninjabackend.py", line
> 483,
> in generate
> ninja = environment.detect_ninja_command_and_version(log=True)
> File "C:/msys64/home/Mark/qemu/meson/mesonbuild/environment.py", line
> 177, in
> detect_ninja_command_and_version
> name = os.path.basename(n)
> File "C:/msys64/mingw64/lib/python3.8/ntpath.py", line 231, in basename
> return split(p)[1]
> File "C:/msys64/mingw64/lib/python3.8/ntpath.py", line 200, in split
> p = os.fspath(p)
> TypeError: expected str, bytes or os.PathLike object, not NoneType
>
> ERROR: meson setup failed
>
> It seems that it doesn't like parsing the discovered ninja path. I can
> make configure
> work by passing --ninja=ninja to configure which falls back to PATH and
> appears to do
> the right thing:
>
> ###XXX ['ninja', '--version']
> Found ninja.EXE-1.10.1 at C:\msys64\mingw64\bin/ninja.EXE
>
> I tried a few other things too:
>
> --ninja=C:/msys64/mingw64/bin/ninja - fails
> --ninja=C:/msys64/mingw64/bin/ninja.exe - works
> --ninja=ninja.exe - works
> --ninja=/c/msys64/mingw64/bin/ninja - fails similar as above
> --ninja=/c/msys64/mingw64/bin/ninja.exe - works
> --ninja=C:\\msys64\\mingw64\\bin\\ninja - fails similar as above
> --ninja=C:\\msys64\\mingw64\\bin\\ninja.exe - works
>
> From these tests it looks as if the .exe prefix is required when using a
> full path to
> the ninja executable.
>
>
> ATB,
>
> Mark.
>
>
[-- Attachment #2: Type: text/html, Size: 6082 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2020-08-27 20:48 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-08-26 19:02 [PATCH v2] configure: add --ninja option Paolo Bonzini
2020-08-27 15:57 ` Mark Cave-Ayland
2020-08-27 20:47 ` 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).