diff mbox series

Hexagon (meson.build): define min bison version

Message ID a6763f9f7b89ea310ab86f9a2b311a05254a1acd.1675779233.git.quic_mathbern@quicinc.com
State New
Headers show
Series Hexagon (meson.build): define min bison version | expand

Commit Message

Matheus Tavares Bernardino Feb. 7, 2023, 2:52 p.m. UTC
Hexagon's idef-parser machinery uses some bison features that are not
available at older versions. The most preeminent example (as it can
be used as a sentinel) is "%define parse.error verbose". This was
introduced in version 3.0 of the tool, which is able to compile
qemu-hexagon just fine. However, compilation fails with the previous
minor bison release, v2.7. So let's assert the minimum version at
meson.build to give a more comprehensive error message for those trying
to compile QEMU.

[1]: https://www.gnu.org/software/bison/manual/html_node/_0025define-Summary.html#index-_0025define-parse_002eerror

Signed-off-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
---
 target/hexagon/meson.build | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Philippe Mathieu-Daudé Feb. 7, 2023, 2:54 p.m. UTC | #1
Cc'ing Paolo/Daniel/Thomas

On 7/2/23 15:52, Matheus Tavares Bernardino wrote:
> Hexagon's idef-parser machinery uses some bison features that are not
> available at older versions. The most preeminent example (as it can
> be used as a sentinel) is "%define parse.error verbose". This was
> introduced in version 3.0 of the tool, which is able to compile
> qemu-hexagon just fine. However, compilation fails with the previous
> minor bison release, v2.7. So let's assert the minimum version at
> meson.build to give a more comprehensive error message for those trying
> to compile QEMU.
> 
> [1]: https://www.gnu.org/software/bison/manual/html_node/_0025define-Summary.html#index-_0025define-parse_002eerror
> 
> Signed-off-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
> ---
>   target/hexagon/meson.build | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/target/hexagon/meson.build b/target/hexagon/meson.build
> index c9d31d095c..42b03c81e6 100644
> --- a/target/hexagon/meson.build
> +++ b/target/hexagon/meson.build
> @@ -183,7 +183,7 @@ if idef_parser_enabled and 'hexagon-linux-user' in target_dirs
>       )
>   
>       bison = generator(
> -        find_program('bison'),
> +        find_program('bison', version: '>=3.0'),
>           output: ['@BASENAME@.tab.c', '@BASENAME@.tab.h'],
>           arguments: ['@INPUT@', '--defines=@OUTPUT1@', '--output=@OUTPUT0@']
>       )
Thomas Huth Feb. 7, 2023, 3:08 p.m. UTC | #2
On 07/02/2023 15.54, Philippe Mathieu-Daudé wrote:
> Cc'ing Paolo/Daniel/Thomas
> 
> On 7/2/23 15:52, Matheus Tavares Bernardino wrote:
>> Hexagon's idef-parser machinery uses some bison features that are not
>> available at older versions. The most preeminent example (as it can
>> be used as a sentinel) is "%define parse.error verbose". This was
>> introduced in version 3.0 of the tool, which is able to compile
>> qemu-hexagon just fine. However, compilation fails with the previous
>> minor bison release, v2.7. So let's assert the minimum version at
>> meson.build to give a more comprehensive error message for those trying
>> to compile QEMU.
>>
>> [1]: 
>> https://www.gnu.org/software/bison/manual/html_node/_0025define-Summary.html#index-_0025define-parse_002eerror 
>>
>>
>> Signed-off-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
>> ---
>>   target/hexagon/meson.build | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/target/hexagon/meson.build b/target/hexagon/meson.build
>> index c9d31d095c..42b03c81e6 100644
>> --- a/target/hexagon/meson.build
>> +++ b/target/hexagon/meson.build
>> @@ -183,7 +183,7 @@ if idef_parser_enabled and 'hexagon-linux-user' in 
>> target_dirs
>>       )
>>       bison = generator(
>> -        find_program('bison'),
>> +        find_program('bison', version: '>=3.0'),
>>           output: ['@BASENAME@.tab.c', '@BASENAME@.tab.h'],
>>           arguments: ['@INPUT@', '--defines=@OUTPUT1@', '--output=@OUTPUT0@']
>>       )

Looks reasonable, thus:

Reviewed-by: Thomas Huth <thuth@redhat.com>

Out of curiosity: Where did you encounter this problem? After having a quick 
look at https://repology.org/project/bison/versions it seems to me that all 
our supported OS distros should already ship bison 3.0 or newer...

  Thomas
Taylor Simpson Feb. 7, 2023, 3:49 p.m. UTC | #3
> -----Original Message-----
> From: Thomas Huth <thuth@redhat.com>
> Sent: Tuesday, February 7, 2023 9:08 AM
> To: Philippe Mathieu-Daudé <philmd@linaro.org>; Matheus Bernardino
> (QUIC) <quic_mathbern@quicinc.com>; qemu-devel@nongnu.org
> Cc: anjo@rev.ng; Taylor Simpson <tsimpson@quicinc.com>; Brian Cain
> <bcain@quicinc.com>; Antonio Caggiano (QUIC)
> <quic_acaggian@quicinc.com>; Daniel P. Berrangé <berrange@redhat.com>;
> Paolo Bonzini <pbonzini@redhat.com>; QEMU Trivial <qemu-
> trivial@nongnu.org>
> Subject: Re: [PATCH] Hexagon (meson.build): define min bison version
> 
> On 07/02/2023 15.54, Philippe Mathieu-Daudé wrote:
> > Cc'ing Paolo/Daniel/Thomas
> >
> > On 7/2/23 15:52, Matheus Tavares Bernardino wrote:
> >> Hexagon's idef-parser machinery uses some bison features that are not
> >> available at older versions. The most preeminent example (as it can
> >> be used as a sentinel) is "%define parse.error verbose". This was
> >> introduced in version 3.0 of the tool, which is able to compile
> >> qemu-hexagon just fine. However, compilation fails with the previous
> >> minor bison release, v2.7. So let's assert the minimum version at
> >> meson.build to give a more comprehensive error message for those
> >> trying to compile QEMU.
> >>
> >> [1]:
> >> https://www.gnu.org/software/bison/manual/html_node/_0025define-
> Summa
> >> ry.html#index-_0025define-parse_002eerror
> >>
> >>
> >> Signed-off-by: Matheus Tavares Bernardino
> <quic_mathbern@quicinc.com>
> >> ---
> >>   target/hexagon/meson.build | 2 +-
> >>   1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/target/hexagon/meson.build b/target/hexagon/meson.build
> >> index c9d31d095c..42b03c81e6 100644
> >> --- a/target/hexagon/meson.build
> >> +++ b/target/hexagon/meson.build
> >> @@ -183,7 +183,7 @@ if idef_parser_enabled and 'hexagon-linux-user'
> >> in target_dirs
> >>       )
> >>       bison = generator(
> >> -        find_program('bison'),
> >> +        find_program('bison', version: '>=3.0'),
> >>           output: ['@BASENAME@.tab.c', '@BASENAME@.tab.h'],
> >>           arguments: ['@INPUT@', '--defines=@OUTPUT1@', '--
> output=@OUTPUT0@']
> >>       )
> 
> Looks reasonable, thus:
> 
> Reviewed-by: Thomas Huth <thuth@redhat.com>
> 
> Out of curiosity: Where did you encounter this problem? After having a quick
> look at https://repology.org/project/bison/versions it seems to me that all
> our supported OS distros should already ship bison 3.0 or newer...
> 
>   Thomas

CC'ing Alessandro

Reviewed-by: Taylor Simpson <tsimpson@quicinc.com>
Philippe Mathieu-Daudé Feb. 7, 2023, 4:11 p.m. UTC | #4
+Bastian

On 7/2/23 16:08, Thomas Huth wrote:
> On 07/02/2023 15.54, Philippe Mathieu-Daudé wrote:
>> Cc'ing Paolo/Daniel/Thomas
>>
>> On 7/2/23 15:52, Matheus Tavares Bernardino wrote:
>>> Hexagon's idef-parser machinery uses some bison features that are not
>>> available at older versions. The most preeminent example (as it can
>>> be used as a sentinel) is "%define parse.error verbose". This was
>>> introduced in version 3.0 of the tool, which is able to compile
>>> qemu-hexagon just fine. However, compilation fails with the previous
>>> minor bison release, v2.7. So let's assert the minimum version at
>>> meson.build to give a more comprehensive error message for those trying
>>> to compile QEMU.
>>>
>>> [1]: 
>>> https://www.gnu.org/software/bison/manual/html_node/_0025define-Summary.html#index-_0025define-parse_002eerror
>>>
>>> Signed-off-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
>>> ---
>>>   target/hexagon/meson.build | 2 +-
>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/target/hexagon/meson.build b/target/hexagon/meson.build
>>> index c9d31d095c..42b03c81e6 100644
>>> --- a/target/hexagon/meson.build
>>> +++ b/target/hexagon/meson.build
>>> @@ -183,7 +183,7 @@ if idef_parser_enabled and 'hexagon-linux-user' 
>>> in target_dirs
>>>       )
>>>       bison = generator(
>>> -        find_program('bison'),
>>> +        find_program('bison', version: '>=3.0'),
>>>           output: ['@BASENAME@.tab.c', '@BASENAME@.tab.h'],
>>>           arguments: ['@INPUT@', '--defines=@OUTPUT1@', 
>>> '--output=@OUTPUT0@']
>>>       )
> 
> Looks reasonable, thus:
> 
> Reviewed-by: Thomas Huth <thuth@redhat.com>
> 
> Out of curiosity: Where did you encounter this problem? After having a 
> quick look at https://repology.org/project/bison/versions it seems to me 
> that all our supported OS distros should already ship bison 3.0 or newer...

I suppose this fix the tricore container problem Peter reported last week:
https://lore.kernel.org/qemu-devel/CAFEAcA-Vr8=br=9jGU1Tr=HTyH6o+S9H79oG=6BqZb8FSp+2Tw@mail.gmail.com/

https://gitlab.com/qemu-project/qemu/-/jobs/3710561054

#6 43.63 ldlex.l: In function 'yy_input':
#6 43.63 ldlex.l:615:7: error: 'yy_current_buffer' undeclared (first
use in this function); did you mean 'yy_create_buffer'?
#6 43.63 {
#6 43.63 ^
#6 43.63 yy_create_buffer
Philippe Mathieu-Daudé Feb. 7, 2023, 4:12 p.m. UTC | #5
On 7/2/23 17:11, Philippe Mathieu-Daudé wrote:
> +Bastian
> 
> On 7/2/23 16:08, Thomas Huth wrote:
>> On 07/02/2023 15.54, Philippe Mathieu-Daudé wrote:
>>> Cc'ing Paolo/Daniel/Thomas
>>>
>>> On 7/2/23 15:52, Matheus Tavares Bernardino wrote:
>>>> Hexagon's idef-parser machinery uses some bison features that are not
>>>> available at older versions. The most preeminent example (as it can
>>>> be used as a sentinel) is "%define parse.error verbose". This was
>>>> introduced in version 3.0 of the tool, which is able to compile
>>>> qemu-hexagon just fine. However, compilation fails with the previous
>>>> minor bison release, v2.7. So let's assert the minimum version at
>>>> meson.build to give a more comprehensive error message for those trying
>>>> to compile QEMU.
>>>>
>>>> [1]: 
>>>> https://www.gnu.org/software/bison/manual/html_node/_0025define-Summary.html#index-_0025define-parse_002eerror
>>>>
>>>> Signed-off-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
>>>> ---
>>>>   target/hexagon/meson.build | 2 +-
>>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/target/hexagon/meson.build b/target/hexagon/meson.build
>>>> index c9d31d095c..42b03c81e6 100644
>>>> --- a/target/hexagon/meson.build
>>>> +++ b/target/hexagon/meson.build
>>>> @@ -183,7 +183,7 @@ if idef_parser_enabled and 'hexagon-linux-user' 
>>>> in target_dirs
>>>>       )
>>>>       bison = generator(
>>>> -        find_program('bison'),
>>>> +        find_program('bison', version: '>=3.0'),
>>>>           output: ['@BASENAME@.tab.c', '@BASENAME@.tab.h'],
>>>>           arguments: ['@INPUT@', '--defines=@OUTPUT1@', 
>>>> '--output=@OUTPUT0@']
>>>>       )
>>
>> Looks reasonable, thus:
>>
>> Reviewed-by: Thomas Huth <thuth@redhat.com>
>>
>> Out of curiosity: Where did you encounter this problem? After having a 
>> quick look at https://repology.org/project/bison/versions it seems to 
>> me that all our supported OS distros should already ship bison 3.0 or 
>> newer...
> 
> I suppose this fix the tricore container problem Peter reported last week:

s/fix/fixes/

> https://lore.kernel.org/qemu-devel/CAFEAcA-Vr8=br=9jGU1Tr=HTyH6o+S9H79oG=6BqZb8FSp+2Tw@mail.gmail.com/
> 
> https://gitlab.com/qemu-project/qemu/-/jobs/3710561054
> 
> #6 43.63 ldlex.l: In function 'yy_input':
> #6 43.63 ldlex.l:615:7: error: 'yy_current_buffer' undeclared (first
> use in this function); did you mean 'yy_create_buffer'?
> #6 43.63 {
> #6 43.63 ^
> #6 43.63 yy_create_buffer

(if so, it would be helpful to have that mentioned in the commit 
description)
Matheus Tavares Bernardino Feb. 7, 2023, 4:56 p.m. UTC | #6
Thomas Huth <thuth@redhat.com> wrote:
>
> Out of curiosity: Where did you encounter this problem? After having a quick 
> look at https://repology.org/project/bison/versions it seems to me that all 
> our supported OS distros should already ship bison 3.0 or newer...

I actually noticed this when compiling our downstream
qemu-system-hexagon on macOS (Ventura 13.2), where the bundled bison
version is 2.3 (although 3.8.2 is available through brew). I thought
this could affect other upstream users too, but good to know that the
supported OSes already ship bison >= 3.0.
Daniel P. Berrangé Feb. 7, 2023, 5:12 p.m. UTC | #7
On Tue, Feb 07, 2023 at 01:56:03PM -0300, Matheus Tavares Bernardino wrote:
> Thomas Huth <thuth@redhat.com> wrote:
> >
> > Out of curiosity: Where did you encounter this problem? After having a quick 
> > look at https://repology.org/project/bison/versions it seems to me that all 
> > our supported OS distros should already ship bison 3.0 or newer...
> 
> I actually noticed this when compiling our downstream
> qemu-system-hexagon on macOS (Ventura 13.2), where the bundled bison
> version is 2.3 (although 3.8.2 is available through brew). I thought
> this could affect other upstream users too, but good to know that the
> supported OSes already ship bison >= 3.0.

FWIW, our testing on macOS heavily relies on the versions from brew.

You can see the list of brew pkgs we consume in

 qemu.git/.gitlab-ci.d/cirrus/macos-12.vars

With regards,
Daniel
Bastian Koppelmann Feb. 8, 2023, 8:53 a.m. UTC | #8
Hi Phil,

On Tue, Feb 07, 2023 at 05:11:10PM +0100, Philippe Mathieu-Daudé wrote:
> +Bastian
> 
> On 7/2/23 16:08, Thomas Huth wrote:
> > On 07/02/2023 15.54, Philippe Mathieu-Daudé wrote:
> > > Cc'ing Paolo/Daniel/Thomas
> > > 
> > > On 7/2/23 15:52, Matheus Tavares Bernardino wrote:
> > > > Hexagon's idef-parser machinery uses some bison features that are not
> > > > available at older versions. The most preeminent example (as it can
> > > > be used as a sentinel) is "%define parse.error verbose". This was
> > > > introduced in version 3.0 of the tool, which is able to compile
> > > > qemu-hexagon just fine. However, compilation fails with the previous
> > > > minor bison release, v2.7. So let's assert the minimum version at
> > > > meson.build to give a more comprehensive error message for those trying
> > > > to compile QEMU.
> > > > 
> > > > [1]: https://www.gnu.org/software/bison/manual/html_node/_0025define-Summary.html#index-_0025define-parse_002eerror
> > > > 
> > > > Signed-off-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
> > > > ---
> > > >   target/hexagon/meson.build | 2 +-
> > > >   1 file changed, 1 insertion(+), 1 deletion(-)
> > > > 
> > > > diff --git a/target/hexagon/meson.build b/target/hexagon/meson.build
> > > > index c9d31d095c..42b03c81e6 100644
> > > > --- a/target/hexagon/meson.build
> > > > +++ b/target/hexagon/meson.build
> > > > @@ -183,7 +183,7 @@ if idef_parser_enabled and
> > > > 'hexagon-linux-user' in target_dirs
> > > >       )
> > > >       bison = generator(
> > > > -        find_program('bison'),
> > > > +        find_program('bison', version: '>=3.0'),
> > > >           output: ['@BASENAME@.tab.c', '@BASENAME@.tab.h'],
> > > >           arguments: ['@INPUT@', '--defines=@OUTPUT1@',
> > > > '--output=@OUTPUT0@']
> > > >       )
> > 
> > Looks reasonable, thus:
> > 
> > Reviewed-by: Thomas Huth <thuth@redhat.com>
> > 
> > Out of curiosity: Where did you encounter this problem? After having a
> > quick look at https://repology.org/project/bison/versions it seems to me
> > that all our supported OS distros should already ship bison 3.0 or
> > newer...
> 
> I suppose this fix the tricore container problem Peter reported last week:
> https://lore.kernel.org/qemu-devel/CAFEAcA-Vr8=br=9jGU1Tr=HTyH6o+S9H79oG=6BqZb8FSp+2Tw@mail.gmail.com/
> 
> https://gitlab.com/qemu-project/qemu/-/jobs/3710561054
> 
> #6 43.63 ldlex.l: In function 'yy_input':
> #6 43.63 ldlex.l:615:7: error: 'yy_current_buffer' undeclared (first
> use in this function); did you mean 'yy_create_buffer'?
> #6 43.63 {
> #6 43.63 ^
> #6 43.63 yy_create_buffer

Thanks, I think this would fix it. However, I want to include tricore-gcc/newlib to the
docker image and created a toolchain release for that, so that we don't have to
compile binutils/gcc/newlib ourself. So I don't think this is relevant for me
anymore.

Cheers,
Bastian
diff mbox series

Patch

diff --git a/target/hexagon/meson.build b/target/hexagon/meson.build
index c9d31d095c..42b03c81e6 100644
--- a/target/hexagon/meson.build
+++ b/target/hexagon/meson.build
@@ -183,7 +183,7 @@  if idef_parser_enabled and 'hexagon-linux-user' in target_dirs
     )
 
     bison = generator(
-        find_program('bison'),
+        find_program('bison', version: '>=3.0'),
         output: ['@BASENAME@.tab.c', '@BASENAME@.tab.h'],
         arguments: ['@INPUT@', '--defines=@OUTPUT1@', '--output=@OUTPUT0@']
     )