diff mbox series

[v10] scripts: Convert qemu-version.sh to qemu-version.py

Message ID 20201007195934.297-1-luoyonggang@gmail.com (mailing list archive)
State New, archived
Headers show
Series [v10] scripts: Convert qemu-version.sh to qemu-version.py | expand

Commit Message

Yonggang Luo Oct. 7, 2020, 7:59 p.m. UTC
The sh script are harder to maintain for compatible different
xsh environment so convert it to python script
Also incorporate the fixes in
https://patchew.org/QEMU/20200929143654.518157-1-marcandre.lureau@redhat.com/

Using v\\* on Windows and v* on other platform for matching version.
Tested under Ubuntu/msys2/mingw.

Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
Message-Id: <20201006112139.700-1-luoyonggang@gmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 meson.build             |  2 +-
 scripts/qemu-version.py | 37 +++++++++++++++++++++++++++++++++++++
 scripts/qemu-version.sh | 25 -------------------------
 3 files changed, 38 insertions(+), 26 deletions(-)
 create mode 100644 scripts/qemu-version.py
 delete mode 100755 scripts/qemu-version.sh

Comments

Paolo Bonzini Oct. 7, 2020, 8:30 p.m. UTC | #1
You won't hear no for an answer, right?...

Paolo


Il mer 7 ott 2020, 22:00 Yonggang Luo <luoyonggang@gmail.com> ha scritto:

> The sh script are harder to maintain for compatible different
> xsh environment so convert it to python script
> Also incorporate the fixes in
>
> https://patchew.org/QEMU/20200929143654.518157-1-marcandre.lureau@redhat.com/
>
> Using v\\* on Windows and v* on other platform for matching version.
> Tested under Ubuntu/msys2/mingw.
>
> Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
> Message-Id: <20201006112139.700-1-luoyonggang@gmail.com>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  meson.build             |  2 +-
>  scripts/qemu-version.py | 37 +++++++++++++++++++++++++++++++++++++
>  scripts/qemu-version.sh | 25 -------------------------
>  3 files changed, 38 insertions(+), 26 deletions(-)
>  create mode 100644 scripts/qemu-version.py
>  delete mode 100755 scripts/qemu-version.sh
>
> diff --git a/meson.build b/meson.build
> index 26230614ba..1d3bb25bc6 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -1132,7 +1132,7 @@ tracetool = [
>     '--backend=' + config_host['TRACE_BACKENDS']
>  ]
>
> -qemu_version_cmd = [find_program('scripts/qemu-version.sh'),
> +qemu_version_cmd = [find_program('scripts/qemu-version.py'),
>                      meson.current_source_dir(),
>                      config_host['PKGVERSION'], meson.project_version()]
>  qemu_version = custom_target('qemu-version.h',
> diff --git a/scripts/qemu-version.py b/scripts/qemu-version.py
> new file mode 100644
> index 0000000000..063b3720f7
> --- /dev/null
> +++ b/scripts/qemu-version.py
> @@ -0,0 +1,37 @@
> +#!/usr/bin/env python3
> +
> +#
> +# Script for retrieve qemu git version information
> +#
> +# Authors:
> +#  Yonggang Luo <luoyonggang@gmail.com>
> +#
> +# This work is licensed under the terms of the GNU GPL, version 2
> +# or, at your option, any later version.  See the COPYING file in
> +# the top-level directory.
> +
> +import sys
> +import subprocess
> +import os, os.path
> +import platform
> +
> +def main(_program, dir, pkgversion, version, *unused):
> +    os.chdir(dir)
> +    if not pkgversion and os.path.exists('.git'):
> +        match_expression = 'v\\*' if platform.system() == 'Windows' else
> 'v*'
> +        pc = subprocess.run(['git', 'describe', '--match',
> match_expression,
> +                            '--dirty', '--always'],
> +                            stdout=subprocess.PIPE,
> stderr=subprocess.DEVNULL,
> +                            encoding='utf8', shell=False)
> +        if pc.returncode == 0:
> +            pkgversion = pc.stdout.strip()
> +
> +    fullversion = version
> +    if pkgversion:
> +        fullversion = "{} ({})".format(version, pkgversion)
> +
> +    print('#define QEMU_PKGVERSION "%s"' % pkgversion)
> +    print('#define QEMU_FULL_VERSION "%s"' % fullversion)
> +
> +if __name__ == "__main__":
> +    main(*sys.argv)
> diff --git a/scripts/qemu-version.sh b/scripts/qemu-version.sh
> deleted file mode 100755
> index 03128c56a2..0000000000
> --- a/scripts/qemu-version.sh
> +++ /dev/null
> @@ -1,25 +0,0 @@
> -#!/bin/sh
> -
> -set -eu
> -
> -dir="$1"
> -pkgversion="$2"
> -version="$3"
> -
> -if [ -z "$pkgversion" ]; then
> -    cd "$dir"
> -    if [ -e .git ]; then
> -        pkgversion=$(git describe --match 'v*' --dirty | echo "")
> -    fi
> -fi
> -
> -if [ -n "$pkgversion" ]; then
> -    fullversion="$version ($pkgversion)"
> -else
> -    fullversion="$version"
> -fi
> -
> -cat <<EOF
> -#define QEMU_PKGVERSION "$pkgversion"
> -#define QEMU_FULL_VERSION "$fullversion"
> -EOF
> --
> 2.28.0.windows.1
>
>
Yonggang Luo Oct. 7, 2020, 9:51 p.m. UTC | #2
On Thu, Oct 8, 2020 at 4:31 AM Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> You won't hear no for an answer, right?...
I am trying to figure out the real issue, it's the issue of git,
https://github.com/msys2/MSYS2-packages/issues/2176

The windows wildcard can be disabled and git disabled it, didn't know
what's happened to
the msys's git, but git-for-windows are works fine.

>
> Paolo
>
>
> Il mer 7 ott 2020, 22:00 Yonggang Luo <luoyonggang@gmail.com> ha scritto:
>>
>> The sh script are harder to maintain for compatible different
>> xsh environment so convert it to python script
>> Also incorporate the fixes in
>>
https://patchew.org/QEMU/20200929143654.518157-1-marcandre.lureau@redhat.com/
>>
>> Using v\\* on Windows and v* on other platform for matching version.
>> Tested under Ubuntu/msys2/mingw.
>>
>> Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
>> Message-Id: <20201006112139.700-1-luoyonggang@gmail.com>
>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>> ---
>>  meson.build             |  2 +-
>>  scripts/qemu-version.py | 37 +++++++++++++++++++++++++++++++++++++
>>  scripts/qemu-version.sh | 25 -------------------------
>>  3 files changed, 38 insertions(+), 26 deletions(-)
>>  create mode 100644 scripts/qemu-version.py
>>  delete mode 100755 scripts/qemu-version.sh
>>
>> diff --git a/meson.build b/meson.build
>> index 26230614ba..1d3bb25bc6 100644
>> --- a/meson.build
>> +++ b/meson.build
>> @@ -1132,7 +1132,7 @@ tracetool = [
>>     '--backend=' + config_host['TRACE_BACKENDS']
>>  ]
>>
>> -qemu_version_cmd = [find_program('scripts/qemu-version.sh'),
>> +qemu_version_cmd = [find_program('scripts/qemu-version.py'),
>>                      meson.current_source_dir(),
>>                      config_host['PKGVERSION'], meson.project_version()]
>>  qemu_version = custom_target('qemu-version.h',
>> diff --git a/scripts/qemu-version.py b/scripts/qemu-version.py
>> new file mode 100644
>> index 0000000000..063b3720f7
>> --- /dev/null
>> +++ b/scripts/qemu-version.py
>> @@ -0,0 +1,37 @@
>> +#!/usr/bin/env python3
>> +
>> +#
>> +# Script for retrieve qemu git version information
>> +#
>> +# Authors:
>> +#  Yonggang Luo <luoyonggang@gmail.com>
>> +#
>> +# This work is licensed under the terms of the GNU GPL, version 2
>> +# or, at your option, any later version.  See the COPYING file in
>> +# the top-level directory.
>> +
>> +import sys
>> +import subprocess
>> +import os, os.path
>> +import platform
>> +
>> +def main(_program, dir, pkgversion, version, *unused):
>> +    os.chdir(dir)
>> +    if not pkgversion and os.path.exists('.git'):
>> +        match_expression = 'v\\*' if platform.system() == 'Windows'
else 'v*'
>> +        pc = subprocess.run(['git', 'describe', '--match',
 match_expression,
>> +                            '--dirty', '--always'],
>> +                            stdout=subprocess.PIPE,
stderr=subprocess.DEVNULL,
>> +                            encoding='utf8', shell=False)
>> +        if pc.returncode == 0:
>> +            pkgversion = pc.stdout.strip()
>> +
>> +    fullversion = version
>> +    if pkgversion:
>> +        fullversion = "{} ({})".format(version, pkgversion)
>> +
>> +    print('#define QEMU_PKGVERSION "%s"' % pkgversion)
>> +    print('#define QEMU_FULL_VERSION "%s"' % fullversion)
>> +
>> +if __name__ == "__main__":
>> +    main(*sys.argv)
>> diff --git a/scripts/qemu-version.sh b/scripts/qemu-version.sh
>> deleted file mode 100755
>> index 03128c56a2..0000000000
>> --- a/scripts/qemu-version.sh
>> +++ /dev/null
>> @@ -1,25 +0,0 @@
>> -#!/bin/sh
>> -
>> -set -eu
>> -
>> -dir="$1"
>> -pkgversion="$2"
>> -version="$3"
>> -
>> -if [ -z "$pkgversion" ]; then
>> -    cd "$dir"
>> -    if [ -e .git ]; then
>> -        pkgversion=$(git describe --match 'v*' --dirty | echo "")
>> -    fi
>> -fi
>> -
>> -if [ -n "$pkgversion" ]; then
>> -    fullversion="$version ($pkgversion)"
>> -else
>> -    fullversion="$version"
>> -fi
>> -
>> -cat <<EOF
>> -#define QEMU_PKGVERSION "$pkgversion"
>> -#define QEMU_FULL_VERSION "$fullversion"
>> -EOF
>> --
>> 2.28.0.windows.1
>>


--
         此致
礼
罗勇刚
Yours
    sincerely,
Yonggang Luo
Thomas Huth Oct. 8, 2020, 6:23 a.m. UTC | #3
On 07/10/2020 23.51, 罗勇刚(Yonggang Luo) wrote:
> 
> On Thu, Oct 8, 2020 at 4:31 AM Paolo Bonzini <pbonzini@redhat.com
> <mailto:pbonzini@redhat.com>> wrote:
>>
>> You won't hear no for an answer, right?...
> I am trying to figure out the real issue, it's the issue of git,
> https://github.com/msys2/MSYS2-packages/issues/2176
Can you at least please stop crap-flooding the QEMU mailing list with
multiple versions of your patches each day? We are all busy, so nobody is
going to review 5 or more iterations of your patches each day. Work on your
patches first, make sure that they are working, and only if you think that
they are really, really good, then send them to the list. Thanks.

 Thomas
diff mbox series

Patch

diff --git a/meson.build b/meson.build
index 26230614ba..1d3bb25bc6 100644
--- a/meson.build
+++ b/meson.build
@@ -1132,7 +1132,7 @@  tracetool = [
    '--backend=' + config_host['TRACE_BACKENDS']
 ]
 
-qemu_version_cmd = [find_program('scripts/qemu-version.sh'),
+qemu_version_cmd = [find_program('scripts/qemu-version.py'),
                     meson.current_source_dir(),
                     config_host['PKGVERSION'], meson.project_version()]
 qemu_version = custom_target('qemu-version.h',
diff --git a/scripts/qemu-version.py b/scripts/qemu-version.py
new file mode 100644
index 0000000000..063b3720f7
--- /dev/null
+++ b/scripts/qemu-version.py
@@ -0,0 +1,37 @@ 
+#!/usr/bin/env python3
+
+#
+# Script for retrieve qemu git version information
+#
+# Authors:
+#  Yonggang Luo <luoyonggang@gmail.com>
+#
+# This work is licensed under the terms of the GNU GPL, version 2
+# or, at your option, any later version.  See the COPYING file in
+# the top-level directory.
+
+import sys
+import subprocess
+import os, os.path
+import platform
+
+def main(_program, dir, pkgversion, version, *unused):
+    os.chdir(dir)
+    if not pkgversion and os.path.exists('.git'):
+        match_expression = 'v\\*' if platform.system() == 'Windows' else 'v*'
+        pc = subprocess.run(['git', 'describe', '--match',  match_expression,
+                            '--dirty', '--always'],
+                            stdout=subprocess.PIPE, stderr=subprocess.DEVNULL,
+                            encoding='utf8', shell=False)
+        if pc.returncode == 0:
+            pkgversion = pc.stdout.strip()
+
+    fullversion = version
+    if pkgversion:
+        fullversion = "{} ({})".format(version, pkgversion)
+
+    print('#define QEMU_PKGVERSION "%s"' % pkgversion)
+    print('#define QEMU_FULL_VERSION "%s"' % fullversion)
+
+if __name__ == "__main__":
+    main(*sys.argv)
diff --git a/scripts/qemu-version.sh b/scripts/qemu-version.sh
deleted file mode 100755
index 03128c56a2..0000000000
--- a/scripts/qemu-version.sh
+++ /dev/null
@@ -1,25 +0,0 @@ 
-#!/bin/sh
-
-set -eu
-
-dir="$1"
-pkgversion="$2"
-version="$3"
-
-if [ -z "$pkgversion" ]; then
-    cd "$dir"
-    if [ -e .git ]; then
-        pkgversion=$(git describe --match 'v*' --dirty | echo "")
-    fi
-fi
-
-if [ -n "$pkgversion" ]; then
-    fullversion="$version ($pkgversion)"
-else
-    fullversion="$version"
-fi
-
-cat <<EOF
-#define QEMU_PKGVERSION "$pkgversion"
-#define QEMU_FULL_VERSION "$fullversion"
-EOF