diff mbox series

[2/2] package/imagemagick: host SVG support needs host gcc >= 4.9

Message ID 20211218231155.666025-1-fontaine.fabrice@gmail.com
State Superseded
Headers show
Series [1/2] package/imagemagick: fix dependency | expand

Commit Message

Fabrice Fontaine Dec. 18, 2021, 11:11 p.m. UTC
host gcc >= 4.9 is needed since bump of harfbuzz to version 3.1.2 in
commit 6861933d22006fbe8c961a41506beac826881f33 to avoid the following
build failure:

In file included from ../src/hb-serialize.hh:36:0,
                 from ../src/hb-machinery.hh:37,
                 from ../src/hb-common.cc:30:
../src/hb-map.hh:67:18: error: 'is_trivially_copyable' is not a member of 'std'
   static_assert (std::is_trivially_copyable<K>::value, "");
                  ^

Fixes:
 - http://autobuild.buildroot.org/results/89e1194c1659d7e1af9db8ffe5feee770c448f76

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
---
 package/imagemagick/Config.in.host | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Yann E. MORIN Dec. 19, 2021, 9:10 a.m. UTC | #1
Fabrice, All,

On 2021-12-19 00:11 +0100, Fabrice Fontaine spake thusly:
> host gcc >= 4.9 is needed since bump of harfbuzz to version 3.1.2 in
> commit 6861933d22006fbe8c961a41506beac826881f33 to avoid the following
> build failure:
> 
> In file included from ../src/hb-serialize.hh:36:0,
>                  from ../src/hb-machinery.hh:37,
>                  from ../src/hb-common.cc:30:
> ../src/hb-map.hh:67:18: error: 'is_trivially_copyable' is not a member of 'std'
>    static_assert (std::is_trivially_copyable<K>::value, "");
>                   ^

I replied to the wrong mail earlier, so FTR I'll paste it again below.
Sorry for the noise...

Where did you see that gcc 4.9 had it? I looked at the gcc-4_9_0-release
tag in the gcc tree, and it states:

    $ git grep is_trivially_copyable
    [...]
    libstdc++-v3/include/std/type_traits:  // is_trivially_copyable
(still unimplemented)

Whereas gcc 5 has a proper implementation:

    $ git grep -A1 'is_trivially_copyable' libstdc++-v3/include/std/type_traits
    libstdc++-v3/include/std/type_traits:  // is_trivially_copyable
    libstdc++-v3/include/std/type_traits-  template<typename _Tp>
    libstdc++-v3/include/std/type_traits:    struct is_trivially_copyable
    libstdc++-v3/include/std/type_traits:    : public integral_constant<bool, __is_trivially_copyable(_Tp)>
    libstdc++-v3/include/std/type_traits-    { };

I see that 6861933d2200 (package/harfbuzz: bump to version 3.1.2) stated
that the requirement on the gcc version was bumped to 4.9 from 4.8, but
I am not sure how that can be...

Giulio, where did you get the info that gcc 4.9 was required (and not a
higher version)?

Regards,
Yann E. MORIN.

> Fixes:
>  - http://autobuild.buildroot.org/results/89e1194c1659d7e1af9db8ffe5feee770c448f76
> 
> Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
> ---
>  package/imagemagick/Config.in.host | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/package/imagemagick/Config.in.host b/package/imagemagick/Config.in.host
> index 671b0995dc..fe0ad9a748 100644
> --- a/package/imagemagick/Config.in.host
> +++ b/package/imagemagick/Config.in.host
> @@ -17,6 +17,7 @@ if BR2_PACKAGE_HOST_IMAGEMAGICK
>  config BR2_PACKAGE_HOST_IMAGEMAGICK_SVG
>  	bool "SVG support"
>  	depends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS # host-librsvg
> +	depends on BR2_HOST_GCC_AT_LEAST_4_9 # host-pango -> host-harfbuzz
>  	help
>  	  Say 'y' here is you need ImageMagick tools (like convert)
>  	  to support SVG.
> @@ -24,4 +25,7 @@ config BR2_PACKAGE_HOST_IMAGEMAGICK_SVG
>  	  This is not enabled by default, as it brings quite a few
>  	  extra dependencies, and thus extra build time.
>  
> +comment "SVG support needs a toolchain w/ host gcc >= 4.9"
> +	depends on !BR2_HOST_GCC_AT_LEAST_4_9
> +
>  endif
> -- 
> 2.33.0
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
Giulio Benetti Dec. 28, 2021, 9:44 a.m. UTC | #2
Hi Fabrice, Yann,

On 19/12/21 10:10, Yann E. MORIN wrote:
> Fabrice, All,
> 
> On 2021-12-19 00:11 +0100, Fabrice Fontaine spake thusly:
>> host gcc >= 4.9 is needed since bump of harfbuzz to version 3.1.2 in
>> commit 6861933d22006fbe8c961a41506beac826881f33 to avoid the following
>> build failure:
>>
>> In file included from ../src/hb-serialize.hh:36:0,
>>                   from ../src/hb-machinery.hh:37,
>>                   from ../src/hb-common.cc:30:
>> ../src/hb-map.hh:67:18: error: 'is_trivially_copyable' is not a member of 'std'
>>     static_assert (std::is_trivially_copyable<K>::value, "");
>>                    ^
> 
> I replied to the wrong mail earlier, so FTR I'll paste it again below.
> Sorry for the noise...
> 
> Where did you see that gcc 4.9 had it? I looked at the gcc-4_9_0-release
> tag in the gcc tree, and it states:
> 
>      $ git grep is_trivially_copyable
>      [...]
>      libstdc++-v3/include/std/type_traits:  // is_trivially_copyable
> (still unimplemented)
> 
> Whereas gcc 5 has a proper implementation:
> 
>      $ git grep -A1 'is_trivially_copyable' libstdc++-v3/include/std/type_traits
>      libstdc++-v3/include/std/type_traits:  // is_trivially_copyable
>      libstdc++-v3/include/std/type_traits-  template<typename _Tp>
>      libstdc++-v3/include/std/type_traits:    struct is_trivially_copyable
>      libstdc++-v3/include/std/type_traits:    : public integral_constant<bool, __is_trivially_copyable(_Tp)>
>      libstdc++-v3/include/std/type_traits-    { };
> 
> I see that 6861933d2200 (package/harfbuzz: bump to version 3.1.2) stated
> that the requirement on the gcc version was bumped to 4.9 from 4.8, but
> I am not sure how that can be...

Indeed now it came out gcc 5 is needed.

> Giulio, where did you get the info that gcc 4.9 was required (and not a
> higher version)?

Honestly on trial and error with target toolchain, because with harfbuzz 
3.1.2 case it was only target related. And now I know I need to check 
libstdc++ git instead(thank you for pointing me).

So I've sent the patch for harfbuzz 3.2.0 with both host and target gcc 
5 dependency:
https://patchwork.ozlabs.org/project/buildroot/patch/20211228002227.15747-1-giulio.benetti@benettiengineering.com/

That should fix the problem.

Best regards
Fabrice Fontaine Dec. 28, 2021, 9:46 a.m. UTC | #3
Hi Giulio,

Le mar. 28 déc. 2021 à 10:44, Giulio Benetti
<giulio.benetti@benettiengineering.com> a écrit :
>
> Hi Fabrice, Yann,
>
> On 19/12/21 10:10, Yann E. MORIN wrote:
> > Fabrice, All,
> >
> > On 2021-12-19 00:11 +0100, Fabrice Fontaine spake thusly:
> >> host gcc >= 4.9 is needed since bump of harfbuzz to version 3.1.2 in
> >> commit 6861933d22006fbe8c961a41506beac826881f33 to avoid the following
> >> build failure:
> >>
> >> In file included from ../src/hb-serialize.hh:36:0,
> >>                   from ../src/hb-machinery.hh:37,
> >>                   from ../src/hb-common.cc:30:
> >> ../src/hb-map.hh:67:18: error: 'is_trivially_copyable' is not a member of 'std'
> >>     static_assert (std::is_trivially_copyable<K>::value, "");
> >>                    ^
> >
> > I replied to the wrong mail earlier, so FTR I'll paste it again below.
> > Sorry for the noise...
> >
> > Where did you see that gcc 4.9 had it? I looked at the gcc-4_9_0-release
> > tag in the gcc tree, and it states:
> >
> >      $ git grep is_trivially_copyable
> >      [...]
> >      libstdc++-v3/include/std/type_traits:  // is_trivially_copyable
> > (still unimplemented)
> >
> > Whereas gcc 5 has a proper implementation:
> >
> >      $ git grep -A1 'is_trivially_copyable' libstdc++-v3/include/std/type_traits
> >      libstdc++-v3/include/std/type_traits:  // is_trivially_copyable
> >      libstdc++-v3/include/std/type_traits-  template<typename _Tp>
> >      libstdc++-v3/include/std/type_traits:    struct is_trivially_copyable
> >      libstdc++-v3/include/std/type_traits:    : public integral_constant<bool, __is_trivially_copyable(_Tp)>
> >      libstdc++-v3/include/std/type_traits-    { };
> >
> > I see that 6861933d2200 (package/harfbuzz: bump to version 3.1.2) stated
> > that the requirement on the gcc version was bumped to 4.9 from 4.8, but
> > I am not sure how that can be...
>
> Indeed now it came out gcc 5 is needed.
>
> > Giulio, where did you get the info that gcc 4.9 was required (and not a
> > higher version)?
>
> Honestly on trial and error with target toolchain, because with harfbuzz
> 3.1.2 case it was only target related. And now I know I need to check
> libstdc++ git instead(thank you for pointing me).
>
> So I've sent the patch for harfbuzz 3.2.0 with both host and target gcc
> 5 dependency:
> https://patchwork.ozlabs.org/project/buildroot/patch/20211228002227.15747-1-giulio.benetti@benettiengineering.com/
>
> That should fix the problem.
I assume that you'll send a v3 of the above patch as the v2 doesn't
update imagemagick. Am I right?
>
> Best regards
> --
> Giulio Benetti
> Benetti Engineering sas
>
> > Regards,
> > Yann E. MORIN.
> >
> >> Fixes:
> >>   - http://autobuild.buildroot.org/results/89e1194c1659d7e1af9db8ffe5feee770c448f76
> >>
> >> Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
> >> ---
> >>   package/imagemagick/Config.in.host | 4 ++++
> >>   1 file changed, 4 insertions(+)
> >>
> >> diff --git a/package/imagemagick/Config.in.host b/package/imagemagick/Config.in.host
> >> index 671b0995dc..fe0ad9a748 100644
> >> --- a/package/imagemagick/Config.in.host
> >> +++ b/package/imagemagick/Config.in.host
> >> @@ -17,6 +17,7 @@ if BR2_PACKAGE_HOST_IMAGEMAGICK
> >>   config BR2_PACKAGE_HOST_IMAGEMAGICK_SVG
> >>      bool "SVG support"
> >>      depends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS # host-librsvg
> >> +    depends on BR2_HOST_GCC_AT_LEAST_4_9 # host-pango -> host-harfbuzz
> >>      help
> >>        Say 'y' here is you need ImageMagick tools (like convert)
> >>        to support SVG.
> >> @@ -24,4 +25,7 @@ config BR2_PACKAGE_HOST_IMAGEMAGICK_SVG
> >>        This is not enabled by default, as it brings quite a few
> >>        extra dependencies, and thus extra build time.
> >>
> >> +comment "SVG support needs a toolchain w/ host gcc >= 4.9"
> >> +    depends on !BR2_HOST_GCC_AT_LEAST_4_9
> >> +
> >>   endif
> >> --
> >> 2.33.0
> >>
> >> _______________________________________________
> >> buildroot mailing list
> >> buildroot@buildroot.org
> >> https://lists.buildroot.org/mailman/listinfo/buildroot
> >
>
Best Regards,

Fabrice
Giulio Benetti Dec. 28, 2021, 9:52 a.m. UTC | #4
On 28/12/21 10:46, Fabrice Fontaine wrote:
> Hi Giulio,
> 
> Le mar. 28 déc. 2021 à 10:44, Giulio Benetti
> <giulio.benetti@benettiengineering.com> a écrit :
>>
>> Hi Fabrice, Yann,
>>
>> On 19/12/21 10:10, Yann E. MORIN wrote:
>>> Fabrice, All,
>>>
>>> On 2021-12-19 00:11 +0100, Fabrice Fontaine spake thusly:
>>>> host gcc >= 4.9 is needed since bump of harfbuzz to version 3.1.2 in
>>>> commit 6861933d22006fbe8c961a41506beac826881f33 to avoid the following
>>>> build failure:
>>>>
>>>> In file included from ../src/hb-serialize.hh:36:0,
>>>>                    from ../src/hb-machinery.hh:37,
>>>>                    from ../src/hb-common.cc:30:
>>>> ../src/hb-map.hh:67:18: error: 'is_trivially_copyable' is not a member of 'std'
>>>>      static_assert (std::is_trivially_copyable<K>::value, "");
>>>>                     ^
>>>
>>> I replied to the wrong mail earlier, so FTR I'll paste it again below.
>>> Sorry for the noise...
>>>
>>> Where did you see that gcc 4.9 had it? I looked at the gcc-4_9_0-release
>>> tag in the gcc tree, and it states:
>>>
>>>       $ git grep is_trivially_copyable
>>>       [...]
>>>       libstdc++-v3/include/std/type_traits:  // is_trivially_copyable
>>> (still unimplemented)
>>>
>>> Whereas gcc 5 has a proper implementation:
>>>
>>>       $ git grep -A1 'is_trivially_copyable' libstdc++-v3/include/std/type_traits
>>>       libstdc++-v3/include/std/type_traits:  // is_trivially_copyable
>>>       libstdc++-v3/include/std/type_traits-  template<typename _Tp>
>>>       libstdc++-v3/include/std/type_traits:    struct is_trivially_copyable
>>>       libstdc++-v3/include/std/type_traits:    : public integral_constant<bool, __is_trivially_copyable(_Tp)>
>>>       libstdc++-v3/include/std/type_traits-    { };
>>>
>>> I see that 6861933d2200 (package/harfbuzz: bump to version 3.1.2) stated
>>> that the requirement on the gcc version was bumped to 4.9 from 4.8, but
>>> I am not sure how that can be...
>>
>> Indeed now it came out gcc 5 is needed.
>>
>>> Giulio, where did you get the info that gcc 4.9 was required (and not a
>>> higher version)?
>>
>> Honestly on trial and error with target toolchain, because with harfbuzz
>> 3.1.2 case it was only target related. And now I know I need to check
>> libstdc++ git instead(thank you for pointing me).
>>
>> So I've sent the patch for harfbuzz 3.2.0 with both host and target gcc
>> 5 dependency:
>> https://patchwork.ozlabs.org/project/buildroot/patch/20211228002227.15747-1-giulio.benetti@benettiengineering.com/
>>
>> That should fix the problem.
> I assume that you'll send a v3 of the above patch as the v2 doesn't
> update imagemagick. Am I right?

I was just writing you exactly that :-)!
I didn't think about the reverse dependencies of host-harfbuzz. Now I 
know that too.

Thanks a lot for pointing :-)
diff mbox series

Patch

diff --git a/package/imagemagick/Config.in.host b/package/imagemagick/Config.in.host
index 671b0995dc..fe0ad9a748 100644
--- a/package/imagemagick/Config.in.host
+++ b/package/imagemagick/Config.in.host
@@ -17,6 +17,7 @@  if BR2_PACKAGE_HOST_IMAGEMAGICK
 config BR2_PACKAGE_HOST_IMAGEMAGICK_SVG
 	bool "SVG support"
 	depends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS # host-librsvg
+	depends on BR2_HOST_GCC_AT_LEAST_4_9 # host-pango -> host-harfbuzz
 	help
 	  Say 'y' here is you need ImageMagick tools (like convert)
 	  to support SVG.
@@ -24,4 +25,7 @@  config BR2_PACKAGE_HOST_IMAGEMAGICK_SVG
 	  This is not enabled by default, as it brings quite a few
 	  extra dependencies, and thus extra build time.
 
+comment "SVG support needs a toolchain w/ host gcc >= 4.9"
+	depends on !BR2_HOST_GCC_AT_LEAST_4_9
+
 endif