[PATCH] gitlab: Escape git-describe match pattern on Windows hosts

Philippe Mathieu-Daudé posted 1 patch 2 years, 6 months ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20210901145229.4132606-1-philmd@redhat.com
.gitlab-ci.d/crossbuild-template.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] gitlab: Escape git-describe match pattern on Windows hosts
Posted by Philippe Mathieu-Daudé 2 years, 6 months ago
Properly escape git-describe 'match' pattern to avoid (MinGW):

  $ if grep -q "EXESUF=.exe" config-host.mak; then make installer;
    version="$(git describe --match v[0-9]*)";
    mv -v qemu-setup*.exe qemu-setup-${version}.exe; fi
  fatal: No names found, cannot describe anything.
  ERROR: Job failed: exit code 1

Reported-by: Cédric Le Goater <clg@kaod.org>
Fixes: 8619b5ddb56 ("ci: build & store windows installer")
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/591
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 .gitlab-ci.d/crossbuild-template.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.gitlab-ci.d/crossbuild-template.yml b/.gitlab-ci.d/crossbuild-template.yml
index 10d22dcf6c1..62d33e6661d 100644
--- a/.gitlab-ci.d/crossbuild-template.yml
+++ b/.gitlab-ci.d/crossbuild-template.yml
@@ -14,7 +14,7 @@
     - make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS
     - if grep -q "EXESUF=.exe" config-host.mak;
       then make installer;
-      version="$(git describe --match v[0-9]*)";
+      version="$(git describe --match 'v[0-9]*')";
       mv -v qemu-setup*.exe qemu-setup-${version}.exe;
       fi
 
-- 
2.31.1

Re: [PATCH] gitlab: Escape git-describe match pattern on Windows hosts
Posted by Daniel P. Berrangé 2 years, 6 months ago
On Wed, Sep 01, 2021 at 04:52:29PM +0200, Philippe Mathieu-Daudé wrote:
> Properly escape git-describe 'match' pattern to avoid (MinGW):
> 
>   $ if grep -q "EXESUF=.exe" config-host.mak; then make installer;
>     version="$(git describe --match v[0-9]*)";
>     mv -v qemu-setup*.exe qemu-setup-${version}.exe; fi
>   fatal: No names found, cannot describe anything.
>   ERROR: Job failed: exit code 1
> 
> Reported-by: Cédric Le Goater <clg@kaod.org>
> Fixes: 8619b5ddb56 ("ci: build & store windows installer")
> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/591
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
>  .gitlab-ci.d/crossbuild-template.yml | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/.gitlab-ci.d/crossbuild-template.yml b/.gitlab-ci.d/crossbuild-template.yml
> index 10d22dcf6c1..62d33e6661d 100644
> --- a/.gitlab-ci.d/crossbuild-template.yml
> +++ b/.gitlab-ci.d/crossbuild-template.yml
> @@ -14,7 +14,7 @@
>      - make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS
>      - if grep -q "EXESUF=.exe" config-host.mak;
>        then make installer;
> -      version="$(git describe --match v[0-9]*)";
> +      version="$(git describe --match 'v[0-9]*')";

Do you have a pointer to a pipeline showing this fix works ?

It is a bit strange to me. AFAICT, the only difference would
be if the unquoted  v[0-9]*  matched a filename in the
current directory, but that doesn't seem like it is the
case here.

Are you sure this isn't just caused by the setting

  container-cross.yml:    GIT_DEPTH: 1

ie we don't have the history depth needed to find any of the
historic git tags.


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|


Re: [PATCH] gitlab: Escape git-describe match pattern on Windows hosts
Posted by Peter Maydell 2 years, 6 months ago
On Wed, 1 Sept 2021 at 15:59, Daniel P. Berrangé <berrange@redhat.com> wrote:
>
> On Wed, Sep 01, 2021 at 04:52:29PM +0200, Philippe Mathieu-Daudé wrote:
> > Properly escape git-describe 'match' pattern to avoid (MinGW):
> >
> >   $ if grep -q "EXESUF=.exe" config-host.mak; then make installer;
> >     version="$(git describe --match v[0-9]*)";
> >     mv -v qemu-setup*.exe qemu-setup-${version}.exe; fi
> >   fatal: No names found, cannot describe anything.
> >   ERROR: Job failed: exit code 1
> >
> > Reported-by: Cédric Le Goater <clg@kaod.org>
> > Fixes: 8619b5ddb56 ("ci: build & store windows installer")
> > Resolves: https://gitlab.com/qemu-project/qemu/-/issues/591
> > Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> > ---
> >  .gitlab-ci.d/crossbuild-template.yml | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/.gitlab-ci.d/crossbuild-template.yml b/.gitlab-ci.d/crossbuild-template.yml
> > index 10d22dcf6c1..62d33e6661d 100644
> > --- a/.gitlab-ci.d/crossbuild-template.yml
> > +++ b/.gitlab-ci.d/crossbuild-template.yml
> > @@ -14,7 +14,7 @@
> >      - make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS
> >      - if grep -q "EXESUF=.exe" config-host.mak;
> >        then make installer;
> > -      version="$(git describe --match v[0-9]*)";
> > +      version="$(git describe --match 'v[0-9]*')";
>
> Do you have a pointer to a pipeline showing this fix works ?
>
> It is a bit strange to me. AFAICT, the only difference would
> be if the unquoted  v[0-9]*  matched a filename in the
> current directory, but that doesn't seem like it is the
> case here.

We should quote the glob pattern anyway, to avoid possible
really confusing behaviour in the future if such a file ever
does turn up...

-- PMM

Re: [PATCH] gitlab: Escape git-describe match pattern on Windows hosts
Posted by Daniel P. Berrangé 2 years, 6 months ago
On Wed, Sep 01, 2021 at 04:17:48PM +0100, Peter Maydell wrote:
> On Wed, 1 Sept 2021 at 15:59, Daniel P. Berrangé <berrange@redhat.com> wrote:
> >
> > On Wed, Sep 01, 2021 at 04:52:29PM +0200, Philippe Mathieu-Daudé wrote:
> > > Properly escape git-describe 'match' pattern to avoid (MinGW):
> > >
> > >   $ if grep -q "EXESUF=.exe" config-host.mak; then make installer;
> > >     version="$(git describe --match v[0-9]*)";
> > >     mv -v qemu-setup*.exe qemu-setup-${version}.exe; fi
> > >   fatal: No names found, cannot describe anything.
> > >   ERROR: Job failed: exit code 1
> > >
> > > Reported-by: Cédric Le Goater <clg@kaod.org>
> > > Fixes: 8619b5ddb56 ("ci: build & store windows installer")
> > > Resolves: https://gitlab.com/qemu-project/qemu/-/issues/591
> > > Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> > > ---
> > >  .gitlab-ci.d/crossbuild-template.yml | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/.gitlab-ci.d/crossbuild-template.yml b/.gitlab-ci.d/crossbuild-template.yml
> > > index 10d22dcf6c1..62d33e6661d 100644
> > > --- a/.gitlab-ci.d/crossbuild-template.yml
> > > +++ b/.gitlab-ci.d/crossbuild-template.yml
> > > @@ -14,7 +14,7 @@
> > >      - make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS
> > >      - if grep -q "EXESUF=.exe" config-host.mak;
> > >        then make installer;
> > > -      version="$(git describe --match v[0-9]*)";
> > > +      version="$(git describe --match 'v[0-9]*')";
> >
> > Do you have a pointer to a pipeline showing this fix works ?
> >
> > It is a bit strange to me. AFAICT, the only difference would
> > be if the unquoted  v[0-9]*  matched a filename in the
> > current directory, but that doesn't seem like it is the
> > case here.
> 
> We should quote the glob pattern anyway, to avoid possible
> really confusing behaviour in the future if such a file ever
> does turn up...

Sure, I'm happy to see the thing quoted regardless, just want to
make sure the commit behaviour matches the commit message.


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|


Re: [PATCH] gitlab: Escape git-describe match pattern on Windows hosts
Posted by Philippe Mathieu-Daudé 2 years, 6 months ago
On 9/1/21 5:21 PM, Daniel P. Berrangé wrote:
> On Wed, Sep 01, 2021 at 04:17:48PM +0100, Peter Maydell wrote:
>> On Wed, 1 Sept 2021 at 15:59, Daniel P. Berrangé <berrange@redhat.com> wrote:
>>>
>>> On Wed, Sep 01, 2021 at 04:52:29PM +0200, Philippe Mathieu-Daudé wrote:
>>>> Properly escape git-describe 'match' pattern to avoid (MinGW):
>>>>
>>>>   $ if grep -q "EXESUF=.exe" config-host.mak; then make installer;
>>>>     version="$(git describe --match v[0-9]*)";
>>>>     mv -v qemu-setup*.exe qemu-setup-${version}.exe; fi
>>>>   fatal: No names found, cannot describe anything.
>>>>   ERROR: Job failed: exit code 1
>>>>
>>>> Reported-by: Cédric Le Goater <clg@kaod.org>
>>>> Fixes: 8619b5ddb56 ("ci: build & store windows installer")
>>>> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/591
>>>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>>>> ---
>>>>  .gitlab-ci.d/crossbuild-template.yml | 2 +-
>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/.gitlab-ci.d/crossbuild-template.yml b/.gitlab-ci.d/crossbuild-template.yml
>>>> index 10d22dcf6c1..62d33e6661d 100644
>>>> --- a/.gitlab-ci.d/crossbuild-template.yml
>>>> +++ b/.gitlab-ci.d/crossbuild-template.yml
>>>> @@ -14,7 +14,7 @@
>>>>      - make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS
>>>>      - if grep -q "EXESUF=.exe" config-host.mak;
>>>>        then make installer;
>>>> -      version="$(git describe --match v[0-9]*)";
>>>> +      version="$(git describe --match 'v[0-9]*')";
>>>
>>> Do you have a pointer to a pipeline showing this fix works ?

It worked on my fork but I have some versioned tag:
https://gitlab.com/philmd_rh/qemu/-/jobs/1553450025

Cédric, do you mind testing on your fork?

>>>
>>> It is a bit strange to me. AFAICT, the only difference would
>>> be if the unquoted  v[0-9]*  matched a filename in the
>>> current directory, but that doesn't seem like it is the
>>> case here.
>>
>> We should quote the glob pattern anyway, to avoid possible
>> really confusing behaviour in the future if such a file ever
>> does turn up...
> 
> Sure, I'm happy to see the thing quoted regardless, just want to
> make sure the commit behaviour matches the commit message.
> 
> 
> Regards,
> Daniel
> 


Re: [PATCH] gitlab: Escape git-describe match pattern on Windows hosts
Posted by Daniel P. Berrangé 2 years, 6 months ago
On Wed, Sep 01, 2021 at 05:35:42PM +0200, Philippe Mathieu-Daudé wrote:
> On 9/1/21 5:21 PM, Daniel P. Berrangé wrote:
> > On Wed, Sep 01, 2021 at 04:17:48PM +0100, Peter Maydell wrote:
> >> On Wed, 1 Sept 2021 at 15:59, Daniel P. Berrangé <berrange@redhat.com> wrote:
> >>>
> >>> On Wed, Sep 01, 2021 at 04:52:29PM +0200, Philippe Mathieu-Daudé wrote:
> >>>> Properly escape git-describe 'match' pattern to avoid (MinGW):
> >>>>
> >>>>   $ if grep -q "EXESUF=.exe" config-host.mak; then make installer;
> >>>>     version="$(git describe --match v[0-9]*)";
> >>>>     mv -v qemu-setup*.exe qemu-setup-${version}.exe; fi
> >>>>   fatal: No names found, cannot describe anything.
> >>>>   ERROR: Job failed: exit code 1
> >>>>
> >>>> Reported-by: Cédric Le Goater <clg@kaod.org>
> >>>> Fixes: 8619b5ddb56 ("ci: build & store windows installer")
> >>>> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/591
> >>>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> >>>> ---
> >>>>  .gitlab-ci.d/crossbuild-template.yml | 2 +-
> >>>>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>>>
> >>>> diff --git a/.gitlab-ci.d/crossbuild-template.yml b/.gitlab-ci.d/crossbuild-template.yml
> >>>> index 10d22dcf6c1..62d33e6661d 100644
> >>>> --- a/.gitlab-ci.d/crossbuild-template.yml
> >>>> +++ b/.gitlab-ci.d/crossbuild-template.yml
> >>>> @@ -14,7 +14,7 @@
> >>>>      - make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS
> >>>>      - if grep -q "EXESUF=.exe" config-host.mak;
> >>>>        then make installer;
> >>>> -      version="$(git describe --match v[0-9]*)";
> >>>> +      version="$(git describe --match 'v[0-9]*')";
> >>>
> >>> Do you have a pointer to a pipeline showing this fix works ?
> 
> It worked on my fork but I have some versioned tag:
> https://gitlab.com/philmd_rh/qemu/-/jobs/1553450025

I can reproduce the error msg if I do a shallow clone with no history

$ cd qemu
$ git describe --match v[0-9]*
v6.1.0-171-g5e8c1a0c90

$ cd ..
$ git clone --depth 1 https://gitlab.com/qemu-project/qemu/ qemu.new
$ cd qemu.new/
$ git describe --match v[0-9]*
fatal: No names found, cannot describe anything.

but the odd thing is that I think we should have been hitting the
problem frequently if it was related to git depth. This job passes
fine in current CI pipelines and my own fork.

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|


Re: [PATCH] gitlab: Escape git-describe match pattern on Windows hosts
Posted by Philippe Mathieu-Daudé 2 years, 6 months ago
On 9/1/21 5:53 PM, Daniel P. Berrangé wrote:
> On Wed, Sep 01, 2021 at 05:35:42PM +0200, Philippe Mathieu-Daudé wrote:
>> On 9/1/21 5:21 PM, Daniel P. Berrangé wrote:
>>> On Wed, Sep 01, 2021 at 04:17:48PM +0100, Peter Maydell wrote:
>>>> On Wed, 1 Sept 2021 at 15:59, Daniel P. Berrangé <berrange@redhat.com> wrote:
>>>>>
>>>>> On Wed, Sep 01, 2021 at 04:52:29PM +0200, Philippe Mathieu-Daudé wrote:
>>>>>> Properly escape git-describe 'match' pattern to avoid (MinGW):
>>>>>>
>>>>>>   $ if grep -q "EXESUF=.exe" config-host.mak; then make installer;
>>>>>>     version="$(git describe --match v[0-9]*)";
>>>>>>     mv -v qemu-setup*.exe qemu-setup-${version}.exe; fi
>>>>>>   fatal: No names found, cannot describe anything.
>>>>>>   ERROR: Job failed: exit code 1
>>>>>>
>>>>>> Reported-by: Cédric Le Goater <clg@kaod.org>
>>>>>> Fixes: 8619b5ddb56 ("ci: build & store windows installer")
>>>>>> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/591
>>>>>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>>>>>> ---
>>>>>>  .gitlab-ci.d/crossbuild-template.yml | 2 +-
>>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>>
>>>>>> diff --git a/.gitlab-ci.d/crossbuild-template.yml b/.gitlab-ci.d/crossbuild-template.yml
>>>>>> index 10d22dcf6c1..62d33e6661d 100644
>>>>>> --- a/.gitlab-ci.d/crossbuild-template.yml
>>>>>> +++ b/.gitlab-ci.d/crossbuild-template.yml
>>>>>> @@ -14,7 +14,7 @@
>>>>>>      - make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS
>>>>>>      - if grep -q "EXESUF=.exe" config-host.mak;
>>>>>>        then make installer;
>>>>>> -      version="$(git describe --match v[0-9]*)";
>>>>>> +      version="$(git describe --match 'v[0-9]*')";
>>>>>
>>>>> Do you have a pointer to a pipeline showing this fix works ?
>>
>> It worked on my fork but I have some versioned tag:
>> https://gitlab.com/philmd_rh/qemu/-/jobs/1553450025
> 
> I can reproduce the error msg if I do a shallow clone with no history
> 
> $ cd qemu
> $ git describe --match v[0-9]*
> v6.1.0-171-g5e8c1a0c90
> 
> $ cd ..
> $ git clone --depth 1 https://gitlab.com/qemu-project/qemu/ qemu.new
> $ cd qemu.new/
> $ git describe --match v[0-9]*
> fatal: No names found, cannot describe anything.
> 
> but the odd thing is that I think we should have been hitting the
> problem frequently if it was related to git depth. This job passes
> fine in current CI pipelines and my own fork.

FYI it didn't work out on Cédric fork:
https://gitlab.com/legoater/qemu/-/jobs/1553492082


Re: [PATCH] gitlab: Escape git-describe match pattern on Windows hosts
Posted by Cédric Le Goater 2 years, 6 months ago
On 9/1/21 6:24 PM, Philippe Mathieu-Daudé wrote:
> On 9/1/21 5:53 PM, Daniel P. Berrangé wrote:
>> On Wed, Sep 01, 2021 at 05:35:42PM +0200, Philippe Mathieu-Daudé wrote:
>>> On 9/1/21 5:21 PM, Daniel P. Berrangé wrote:
>>>> On Wed, Sep 01, 2021 at 04:17:48PM +0100, Peter Maydell wrote:
>>>>> On Wed, 1 Sept 2021 at 15:59, Daniel P. Berrangé <berrange@redhat.com> wrote:
>>>>>>
>>>>>> On Wed, Sep 01, 2021 at 04:52:29PM +0200, Philippe Mathieu-Daudé wrote:
>>>>>>> Properly escape git-describe 'match' pattern to avoid (MinGW):
>>>>>>>
>>>>>>>   $ if grep -q "EXESUF=.exe" config-host.mak; then make installer;
>>>>>>>     version="$(git describe --match v[0-9]*)";
>>>>>>>     mv -v qemu-setup*.exe qemu-setup-${version}.exe; fi
>>>>>>>   fatal: No names found, cannot describe anything.
>>>>>>>   ERROR: Job failed: exit code 1
>>>>>>>
>>>>>>> Reported-by: Cédric Le Goater <clg@kaod.org>
>>>>>>> Fixes: 8619b5ddb56 ("ci: build & store windows installer")
>>>>>>> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/591
>>>>>>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>>>>>>> ---
>>>>>>>  .gitlab-ci.d/crossbuild-template.yml | 2 +-
>>>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>>>
>>>>>>> diff --git a/.gitlab-ci.d/crossbuild-template.yml b/.gitlab-ci.d/crossbuild-template.yml
>>>>>>> index 10d22dcf6c1..62d33e6661d 100644
>>>>>>> --- a/.gitlab-ci.d/crossbuild-template.yml
>>>>>>> +++ b/.gitlab-ci.d/crossbuild-template.yml
>>>>>>> @@ -14,7 +14,7 @@
>>>>>>>      - make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS
>>>>>>>      - if grep -q "EXESUF=.exe" config-host.mak;
>>>>>>>        then make installer;
>>>>>>> -      version="$(git describe --match v[0-9]*)";
>>>>>>> +      version="$(git describe --match 'v[0-9]*')";
>>>>>>
>>>>>> Do you have a pointer to a pipeline showing this fix works ?
>>>
>>> It worked on my fork but I have some versioned tag:
>>> https://gitlab.com/philmd_rh/qemu/-/jobs/1553450025
>>
>> I can reproduce the error msg if I do a shallow clone with no history
>>
>> $ cd qemu
>> $ git describe --match v[0-9]*
>> v6.1.0-171-g5e8c1a0c90
>>
>> $ cd ..
>> $ git clone --depth 1 https://gitlab.com/qemu-project/qemu/ qemu.new
>> $ cd qemu.new/
>> $ git describe --match v[0-9]*
>> fatal: No names found, cannot describe anything.
>>
>> but the odd thing is that I think we should have been hitting the
>> problem frequently if it was related to git depth. This job passes
>> fine in current CI pipelines and my own fork.
> 
> FYI it didn't work out on Cédric fork:
> https://gitlab.com/legoater/qemu/-/jobs/1553492082
> 

Indeed.

Thanks Phil,

C.

Re: [PATCH] gitlab: Escape git-describe match pattern on Windows hosts
Posted by Philippe Mathieu-Daudé 2 years, 6 months ago
On 9/1/21 6:27 PM, Cédric Le Goater wrote:
> On 9/1/21 6:24 PM, Philippe Mathieu-Daudé wrote:
>> On 9/1/21 5:53 PM, Daniel P. Berrangé wrote:
>>> On Wed, Sep 01, 2021 at 05:35:42PM +0200, Philippe Mathieu-Daudé wrote:
>>>> On 9/1/21 5:21 PM, Daniel P. Berrangé wrote:
>>>>> On Wed, Sep 01, 2021 at 04:17:48PM +0100, Peter Maydell wrote:
>>>>>> On Wed, 1 Sept 2021 at 15:59, Daniel P. Berrangé <berrange@redhat.com> wrote:
>>>>>>>
>>>>>>> On Wed, Sep 01, 2021 at 04:52:29PM +0200, Philippe Mathieu-Daudé wrote:
>>>>>>>> Properly escape git-describe 'match' pattern to avoid (MinGW):
>>>>>>>>
>>>>>>>>   $ if grep -q "EXESUF=.exe" config-host.mak; then make installer;
>>>>>>>>     version="$(git describe --match v[0-9]*)";
>>>>>>>>     mv -v qemu-setup*.exe qemu-setup-${version}.exe; fi
>>>>>>>>   fatal: No names found, cannot describe anything.
>>>>>>>>   ERROR: Job failed: exit code 1
>>>>>>>>
>>>>>>>> Reported-by: Cédric Le Goater <clg@kaod.org>
>>>>>>>> Fixes: 8619b5ddb56 ("ci: build & store windows installer")
>>>>>>>> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/591
>>>>>>>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>>>>>>>> ---
>>>>>>>>  .gitlab-ci.d/crossbuild-template.yml | 2 +-
>>>>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>>>>
>>>>>>>> diff --git a/.gitlab-ci.d/crossbuild-template.yml b/.gitlab-ci.d/crossbuild-template.yml
>>>>>>>> index 10d22dcf6c1..62d33e6661d 100644
>>>>>>>> --- a/.gitlab-ci.d/crossbuild-template.yml
>>>>>>>> +++ b/.gitlab-ci.d/crossbuild-template.yml
>>>>>>>> @@ -14,7 +14,7 @@
>>>>>>>>      - make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS
>>>>>>>>      - if grep -q "EXESUF=.exe" config-host.mak;
>>>>>>>>        then make installer;
>>>>>>>> -      version="$(git describe --match v[0-9]*)";
>>>>>>>> +      version="$(git describe --match 'v[0-9]*')";
>>>>>>>
>>>>>>> Do you have a pointer to a pipeline showing this fix works ?
>>>>
>>>> It worked on my fork but I have some versioned tag:
>>>> https://gitlab.com/philmd_rh/qemu/-/jobs/1553450025
>>>
>>> I can reproduce the error msg if I do a shallow clone with no history
>>>
>>> $ cd qemu
>>> $ git describe --match v[0-9]*
>>> v6.1.0-171-g5e8c1a0c90
>>>
>>> $ cd ..
>>> $ git clone --depth 1 https://gitlab.com/qemu-project/qemu/ qemu.new
>>> $ cd qemu.new/
>>> $ git describe --match v[0-9]*
>>> fatal: No names found, cannot describe anything.
>>>
>>> but the odd thing is that I think we should have been hitting the
>>> problem frequently if it was related to git depth. This job passes
>>> fine in current CI pipelines and my own fork.

What about not using the best tag if no versioned tag available?
(no default string in case user wants to download and archive artifacts)

-- >8 --
@@ -14,7 +14,7 @@
     - make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS
     - if grep -q "EXESUF=.exe" config-host.mak;
       then make installer;
-      version="$(git describe --match v[0-9]*)";
+      version="$(git describe --tags --match 'v[0-9]*' 2>/dev/null ||
git describe --abbrev)";
       mv -v qemu-setup*.exe qemu-setup-${version}.exe;
       fi
---

>> FYI it didn't work out on Cédric fork:
>> https://gitlab.com/legoater/qemu/-/jobs/1553492082
>>
> 
> Indeed.
> 
> Thanks Phil,
> 
> C.
> 


Re: [PATCH] gitlab: Escape git-describe match pattern on Windows hosts
Posted by Daniel P. Berrangé 2 years, 6 months ago
On Wed, Sep 01, 2021 at 06:27:37PM +0200, Cédric Le Goater wrote:
> On 9/1/21 6:24 PM, Philippe Mathieu-Daudé wrote:
> > On 9/1/21 5:53 PM, Daniel P. Berrangé wrote:
> >> On Wed, Sep 01, 2021 at 05:35:42PM +0200, Philippe Mathieu-Daudé wrote:
> >>> On 9/1/21 5:21 PM, Daniel P. Berrangé wrote:
> >>>> On Wed, Sep 01, 2021 at 04:17:48PM +0100, Peter Maydell wrote:
> >>>>> On Wed, 1 Sept 2021 at 15:59, Daniel P. Berrangé <berrange@redhat.com> wrote:
> >>>>>>
> >>>>>> On Wed, Sep 01, 2021 at 04:52:29PM +0200, Philippe Mathieu-Daudé wrote:
> >>>>>>> Properly escape git-describe 'match' pattern to avoid (MinGW):
> >>>>>>>
> >>>>>>>   $ if grep -q "EXESUF=.exe" config-host.mak; then make installer;
> >>>>>>>     version="$(git describe --match v[0-9]*)";
> >>>>>>>     mv -v qemu-setup*.exe qemu-setup-${version}.exe; fi
> >>>>>>>   fatal: No names found, cannot describe anything.
> >>>>>>>   ERROR: Job failed: exit code 1
> >>>>>>>
> >>>>>>> Reported-by: Cédric Le Goater <clg@kaod.org>
> >>>>>>> Fixes: 8619b5ddb56 ("ci: build & store windows installer")
> >>>>>>> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/591
> >>>>>>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> >>>>>>> ---
> >>>>>>>  .gitlab-ci.d/crossbuild-template.yml | 2 +-
> >>>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>>>>>>
> >>>>>>> diff --git a/.gitlab-ci.d/crossbuild-template.yml b/.gitlab-ci.d/crossbuild-template.yml
> >>>>>>> index 10d22dcf6c1..62d33e6661d 100644
> >>>>>>> --- a/.gitlab-ci.d/crossbuild-template.yml
> >>>>>>> +++ b/.gitlab-ci.d/crossbuild-template.yml
> >>>>>>> @@ -14,7 +14,7 @@
> >>>>>>>      - make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS
> >>>>>>>      - if grep -q "EXESUF=.exe" config-host.mak;
> >>>>>>>        then make installer;
> >>>>>>> -      version="$(git describe --match v[0-9]*)";
> >>>>>>> +      version="$(git describe --match 'v[0-9]*')";
> >>>>>>
> >>>>>> Do you have a pointer to a pipeline showing this fix works ?
> >>>
> >>> It worked on my fork but I have some versioned tag:
> >>> https://gitlab.com/philmd_rh/qemu/-/jobs/1553450025
> >>
> >> I can reproduce the error msg if I do a shallow clone with no history
> >>
> >> $ cd qemu
> >> $ git describe --match v[0-9]*
> >> v6.1.0-171-g5e8c1a0c90
> >>
> >> $ cd ..
> >> $ git clone --depth 1 https://gitlab.com/qemu-project/qemu/ qemu.new
> >> $ cd qemu.new/
> >> $ git describe --match v[0-9]*
> >> fatal: No names found, cannot describe anything.
> >>
> >> but the odd thing is that I think we should have been hitting the
> >> problem frequently if it was related to git depth. This job passes
> >> fine in current CI pipelines and my own fork.
> > 
> > FYI it didn't work out on Cédric fork:
> > https://gitlab.com/legoater/qemu/-/jobs/1553492082
> > 
> 
> Indeed.

I'm curious if you go to

  https://gitlab.com/legoater/qemu/-/settings/ci_cd

and expand "General pipelines", what value is set for the

  "Git shallow clone"

setting.  In my fork it is 0 which means unlimited depth, but in
gitlab docs I see reference to repos getting this set to 50
since a particular gitlab release.

Likewise same question for Phil in ?

  https://gitlab.com/philmd_rh/qemu/-/settings/ci_cd

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|


Re: [PATCH] gitlab: Escape git-describe match pattern on Windows hosts
Posted by Cédric Le Goater 2 years, 5 months ago
> I'm curious if you go to
> 
>    https://gitlab.com/legoater/qemu/-/settings/ci_cd
> 
> and expand "General pipelines", what value is set for the
> 
>    "Git shallow clone"
> 
> setting.  In my fork it is 0 which means unlimited depth, but in
> gitlab docs I see reference to repos getting this set to 50
> since a particular gitlab release.

Sorry for the late reply.

Setting the value to 0 fixed the windows build on gitlab.

Thanks,

C.

Re: [PATCH] gitlab: Escape git-describe match pattern on Windows hosts
Posted by Daniel P. Berrangé 2 years, 5 months ago
On Tue, Oct 05, 2021 at 10:40:00AM +0200, Cédric Le Goater wrote:
> > I'm curious if you go to
> > 
> >    https://gitlab.com/legoater/qemu/-/settings/ci_cd
> > 
> > and expand "General pipelines", what value is set for the
> > 
> >    "Git shallow clone"
> > 
> > setting.  In my fork it is 0 which means unlimited depth, but in
> > gitlab docs I see reference to repos getting this set to 50
> > since a particular gitlab release.
> 
> Sorry for the late reply.
> 
> Setting the value to 0 fixed the windows build on gitlab.

Ok, so we've got two options

 - Change the code so it has sane fallback if the tags are all missing

 - Set GIT_DEPTH in the affected jobs to a value that is larger than
   the maximum number of commits we expect in the course of a single
   dev cycle, plus 20% grace on top, so that we're guaranteed enough
   history to describe one tag.


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|


Re: [PATCH] gitlab: Escape git-describe match pattern on Windows hosts
Posted by Philippe Mathieu-Daudé 2 years, 6 months ago
On 9/1/21 6:47 PM, Daniel P. Berrangé wrote:
> On Wed, Sep 01, 2021 at 06:27:37PM +0200, Cédric Le Goater wrote:
>> On 9/1/21 6:24 PM, Philippe Mathieu-Daudé wrote:
>>> On 9/1/21 5:53 PM, Daniel P. Berrangé wrote:
>>>> On Wed, Sep 01, 2021 at 05:35:42PM +0200, Philippe Mathieu-Daudé wrote:
>>>>> On 9/1/21 5:21 PM, Daniel P. Berrangé wrote:
>>>>>> On Wed, Sep 01, 2021 at 04:17:48PM +0100, Peter Maydell wrote:
>>>>>>> On Wed, 1 Sept 2021 at 15:59, Daniel P. Berrangé <berrange@redhat.com> wrote:
>>>>>>>>
>>>>>>>> On Wed, Sep 01, 2021 at 04:52:29PM +0200, Philippe Mathieu-Daudé wrote:
>>>>>>>>> Properly escape git-describe 'match' pattern to avoid (MinGW):
>>>>>>>>>
>>>>>>>>>   $ if grep -q "EXESUF=.exe" config-host.mak; then make installer;
>>>>>>>>>     version="$(git describe --match v[0-9]*)";
>>>>>>>>>     mv -v qemu-setup*.exe qemu-setup-${version}.exe; fi
>>>>>>>>>   fatal: No names found, cannot describe anything.
>>>>>>>>>   ERROR: Job failed: exit code 1
>>>>>>>>>
>>>>>>>>> Reported-by: Cédric Le Goater <clg@kaod.org>
>>>>>>>>> Fixes: 8619b5ddb56 ("ci: build & store windows installer")
>>>>>>>>> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/591
>>>>>>>>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>>>>>>>>> ---
>>>>>>>>>  .gitlab-ci.d/crossbuild-template.yml | 2 +-
>>>>>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>>>>>
>>>>>>>>> diff --git a/.gitlab-ci.d/crossbuild-template.yml b/.gitlab-ci.d/crossbuild-template.yml
>>>>>>>>> index 10d22dcf6c1..62d33e6661d 100644
>>>>>>>>> --- a/.gitlab-ci.d/crossbuild-template.yml
>>>>>>>>> +++ b/.gitlab-ci.d/crossbuild-template.yml
>>>>>>>>> @@ -14,7 +14,7 @@
>>>>>>>>>      - make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS
>>>>>>>>>      - if grep -q "EXESUF=.exe" config-host.mak;
>>>>>>>>>        then make installer;
>>>>>>>>> -      version="$(git describe --match v[0-9]*)";
>>>>>>>>> +      version="$(git describe --match 'v[0-9]*')";
>>>>>>>>
>>>>>>>> Do you have a pointer to a pipeline showing this fix works ?
>>>>>
>>>>> It worked on my fork but I have some versioned tag:
>>>>> https://gitlab.com/philmd_rh/qemu/-/jobs/1553450025
>>>>
>>>> I can reproduce the error msg if I do a shallow clone with no history
>>>>
>>>> $ cd qemu
>>>> $ git describe --match v[0-9]*
>>>> v6.1.0-171-g5e8c1a0c90
>>>>
>>>> $ cd ..
>>>> $ git clone --depth 1 https://gitlab.com/qemu-project/qemu/ qemu.new
>>>> $ cd qemu.new/
>>>> $ git describe --match v[0-9]*
>>>> fatal: No names found, cannot describe anything.
>>>>
>>>> but the odd thing is that I think we should have been hitting the
>>>> problem frequently if it was related to git depth. This job passes
>>>> fine in current CI pipelines and my own fork.
>>>
>>> FYI it didn't work out on Cédric fork:
>>> https://gitlab.com/legoater/qemu/-/jobs/1553492082
>>>
>>
>> Indeed.
> 
> I'm curious if you go to
> 
>   https://gitlab.com/legoater/qemu/-/settings/ci_cd
> 
> and expand "General pipelines", what value is set for the
> 
>   "Git shallow clone"
> 
> setting.  In my fork it is 0 which means unlimited depth, but in
> gitlab docs I see reference to repos getting this set to 50
> since a particular gitlab release.
> 
> Likewise same question for Phil in ?
> 
>   https://gitlab.com/philmd_rh/qemu/-/settings/ci_cd

0 too.