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

Yonggang Luo posted 1 patch 3 years, 6 months ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20201007195934.297-1-luoyonggang@gmail.com
Maintainers: Cleber Rosa <crosa@redhat.com>, Eduardo Habkost <ehabkost@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
[PATCH v10] scripts: Convert qemu-version.sh to qemu-version.py
Posted by Yonggang Luo 3 years, 6 months ago
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


Re: [PATCH v10] scripts: Convert qemu-version.sh to qemu-version.py
Posted by Paolo Bonzini 3 years, 6 months ago
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
>
>
Re: [PATCH v10] scripts: Convert qemu-version.sh to qemu-version.py
Posted by 罗勇刚 (Yonggang Luo) 3 years, 6 months ago
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
Re: [PATCH v10] scripts: Convert qemu-version.sh to qemu-version.py
Posted by Thomas Huth 3 years, 6 months ago
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