Message ID | a6763f9f7b89ea310ab86f9a2b311a05254a1acd.1675779233.git.quic_mathbern@quicinc.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Hexagon (meson.build): define min bison version | expand |
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@'] > )
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
> -----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>
The patch makes sense to me.
Reviewed-by: Alessandro Di Federico <ale@rev.ng>
+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
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)
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.
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
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 --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@'] )
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(-)