diff mbox series

[1/1] package/harfbuzz: fix build with gcc < 7

Message ID 20220720171756.307458-1-bernd.kuhls@t-online.de
State Accepted
Headers show
Series [1/1] package/harfbuzz: fix build with gcc < 7 | expand

Commit Message

Bernd Kuhls July 20, 2022, 5:17 p.m. UTC
Fixes various build errors

In file included from ../src/hb-kern.hh:32:0,
                 from ../src/hb-ot-shape-fallback.cc:32:
../src/hb-ot-layout-gpos-table.hh:50:117: error: specialization of 'template<class context_t> static typename context_t::return_t OT::Layout::GPOS_impl::PosLookup::dispatch_recurse_func(context_t*, unsigned int)' in different namespace [-fpermissive]

introduced by bumping harfbuzz to 4.4.1 in
03022329e02332c22f44e0e0a9b17d8454ba26ae

The build error was not yet caught by the autobuilders but can be
reproduced using this defconfig:
http://autobuild.buildroot.org/results/3fe7526b685368007ae0f66e15ef2b27d30d5063/

Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
---
 .../0004-GPOS-Fix-build-on-GCC-7.patch        | 97 +++++++++++++++++++
 1 file changed, 97 insertions(+)
 create mode 100644 package/harfbuzz/0004-GPOS-Fix-build-on-GCC-7.patch

Comments

Giulio Benetti July 20, 2022, 11:21 p.m. UTC | #1
Hi Bernd,

On 20/07/22 19:17, Bernd Kuhls wrote:
> Fixes various build errors
> 
> In file included from ../src/hb-kern.hh:32:0,
>                   from ../src/hb-ot-shape-fallback.cc:32:
> ../src/hb-ot-layout-gpos-table.hh:50:117: error: specialization of 'template<class context_t> static typename context_t::return_t OT::Layout::GPOS_impl::PosLookup::dispatch_recurse_func(context_t*, unsigned int)' in different namespace [-fpermissive]
> 
> introduced by bumping harfbuzz to 4.4.1 in
> 03022329e02332c22f44e0e0a9b17d8454ba26ae
> 
> The build error was not yet caught by the autobuilders but can be
> reproduced using this defconfig:
> http://autobuild.buildroot.org/results/3fe7526b685368007ae0f66e15ef2b27d30d5063/
> 
> Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>

Thank you for the patch. I've confused the your patch(GPOS) with already
committed patch(GSUB). I've reproduced the bug and with this patch it's 
fixed, so:

Reviewed-by: Giulio Benetti <giulio.benetti@benettiengineering.com>

Best regards!
Arnout Vandecappelle July 22, 2022, 5:24 p.m. UTC | #2
On 20/07/2022 19:17, Bernd Kuhls wrote:
> Fixes various build errors
> 
> In file included from ../src/hb-kern.hh:32:0,
>                   from ../src/hb-ot-shape-fallback.cc:32:
> ../src/hb-ot-layout-gpos-table.hh:50:117: error: specialization of 'template<class context_t> static typename context_t::return_t OT::Layout::GPOS_impl::PosLookup::dispatch_recurse_func(context_t*, unsigned int)' in different namespace [-fpermissive]
> 
> introduced by bumping harfbuzz to 4.4.1 in
> 03022329e02332c22f44e0e0a9b17d8454ba26ae
> 
> The build error was not yet caught by the autobuilders but can be
> reproduced using this defconfig:
> http://autobuild.buildroot.org/results/3fe7526b685368007ae0f66e15ef2b27d30d5063/
> 
> Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>

  Applied to master, thanks.

  Regards,
  Arnout

> ---
>   .../0004-GPOS-Fix-build-on-GCC-7.patch        | 97 +++++++++++++++++++
>   1 file changed, 97 insertions(+)
>   create mode 100644 package/harfbuzz/0004-GPOS-Fix-build-on-GCC-7.patch
> 
> diff --git a/package/harfbuzz/0004-GPOS-Fix-build-on-GCC-7.patch b/package/harfbuzz/0004-GPOS-Fix-build-on-GCC-7.patch
> new file mode 100644
> index 0000000000..ead6fc024f
> --- /dev/null
> +++ b/package/harfbuzz/0004-GPOS-Fix-build-on-GCC-7.patch
> @@ -0,0 +1,97 @@
> +From 3238cb744bb570a75326ab4438968c59069e9af2 Mon Sep 17 00:00:00 2001
> +From: Kleis Auke Wolthuizen <github@kleisauke.nl>
> +Date: Wed, 6 Jul 2022 13:18:14 +0200
> +Subject: [PATCH] [GPOS] Fix build on GCC < 7
> +
> +[Retrieved (and backported) from:
> +https://github.com/harfbuzz/harfbuzz/commit/3238cb744bb570a75326ab4438968c59069e9af2]
> +Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
> +---
> + src/OT/Layout/GPOS/GPOS.hh     | 17 ++++++++++-------
> + src/hb-ot-layout-gpos-table.hh |  6 ++++--
> + 2 files changed, 14 insertions(+), 9 deletions(-)
> +
> +diff --git a/src/OT/Layout/GPOS/GPOS.hh b/src/OT/Layout/GPOS/GPOS.hh
> +index 7fb97d7568..23b0b090a2 100644
> +--- a/src/OT/Layout/GPOS.hh
> ++++ b/src/OT/Layout/GPOS.hh
> +@@ -7,6 +7,9 @@
> + #include "GPOS/PosLookup.hh"
> +
> + namespace OT {
> ++
> ++using Layout::GPOS_impl::PosLookup;
> ++
> + namespace Layout {
> +
> + static void
> +@@ -25,10 +28,10 @@ struct GPOS : GSUBGPOS
> + {
> +   static constexpr hb_tag_t tableTag = HB_OT_TAG_GPOS;
> +
> +-  using Lookup = GPOS_impl::PosLookup;
> ++  using Lookup = PosLookup;
> +
> +-  const GPOS_impl::PosLookup& get_lookup (unsigned int i) const
> +-  { return static_cast<const GPOS_impl::PosLookup &> (GSUBGPOS::get_lookup (i)); }
> ++  const PosLookup& get_lookup (unsigned int i) const
> ++  { return static_cast<const PosLookup &> (GSUBGPOS::get_lookup (i)); }
> +
> +   static inline void position_start (hb_font_t *font, hb_buffer_t *buffer);
> +   static inline void position_finish_advances (hb_font_t *font, hb_buffer_t *buffer);
> +@@ -37,11 +40,11 @@ struct GPOS : GSUBGPOS
> +   bool subset (hb_subset_context_t *c) const
> +   {
> +     hb_subset_layout_context_t l (c, tableTag, c->plan->gpos_lookups, c->plan->gpos_langsys, c->plan->gpos_features);
> +-    return GSUBGPOS::subset<GPOS_impl::PosLookup> (&l);
> ++    return GSUBGPOS::subset<PosLookup> (&l);
> +   }
> +
> +   bool sanitize (hb_sanitize_context_t *c) const
> +-  { return GSUBGPOS::sanitize<GPOS_impl::PosLookup> (c); }
> ++  { return GSUBGPOS::sanitize<PosLookup> (c); }
> +
> +   HB_INTERNAL bool is_blocklisted (hb_blob_t *blob,
> +                                    hb_face_t *face) const;
> +@@ -51,7 +54,7 @@ struct GPOS : GSUBGPOS
> +     for (unsigned i = 0; i < GSUBGPOS::get_lookup_count (); i++)
> +     {
> +       if (!c->gpos_lookups->has (i)) continue;
> +-      const GPOS_impl::PosLookup &l = get_lookup (i);
> ++      const PosLookup &l = get_lookup (i);
> +       l.dispatch (c);
> +     }
> +   }
> +@@ -59,7 +62,7 @@ struct GPOS : GSUBGPOS
> +   void closure_lookups (hb_face_t      *face,
> +                         const hb_set_t *glyphs,
> +                         hb_set_t       *lookup_indexes /* IN/OUT */) const
> +-  { GSUBGPOS::closure_lookups<GPOS_impl::PosLookup> (face, glyphs, lookup_indexes); }
> ++  { GSUBGPOS::closure_lookups<PosLookup> (face, glyphs, lookup_indexes); }
> +
> +   typedef GSUBGPOS::accelerator_t<GPOS> accelerator_t;
> + };
> +diff --git a/src/hb-ot-layout-gpos-table.hh b/src/hb-ot-layout-gpos-table.hh
> +index f5059cfa83..8fe987fc50 100644
> +--- a/src/hb-ot-layout-gpos-table.hh
> ++++ b/src/hb-ot-layout-gpos-table.hh
> +@@ -32,8 +32,8 @@
> + #include "OT/Layout/GPOS.hh"
> +
> + namespace OT {
> +-
> +-using Layout::GPOS_impl::PosLookup;
> ++namespace Layout {
> ++namespace GPOS_impl {
> +
> + // TODO(garretrieger): Move into new layout directory.
> + /* Out-of-class implementation for methods recursing */
> +@@ -68,6 +68,8 @@ inline bool PosLookup::dispatch_recurse_func<hb_ot_apply_context_t> (hb_ot_apply
> + }
> + #endif
> +
> ++} /* namespace GPOS_impl */
> ++} /* namespace Layout */
> + } /* namespace OT */
> +
> +
diff mbox series

Patch

diff --git a/package/harfbuzz/0004-GPOS-Fix-build-on-GCC-7.patch b/package/harfbuzz/0004-GPOS-Fix-build-on-GCC-7.patch
new file mode 100644
index 0000000000..ead6fc024f
--- /dev/null
+++ b/package/harfbuzz/0004-GPOS-Fix-build-on-GCC-7.patch
@@ -0,0 +1,97 @@ 
+From 3238cb744bb570a75326ab4438968c59069e9af2 Mon Sep 17 00:00:00 2001
+From: Kleis Auke Wolthuizen <github@kleisauke.nl>
+Date: Wed, 6 Jul 2022 13:18:14 +0200
+Subject: [PATCH] [GPOS] Fix build on GCC < 7
+
+[Retrieved (and backported) from:
+https://github.com/harfbuzz/harfbuzz/commit/3238cb744bb570a75326ab4438968c59069e9af2]
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
+---
+ src/OT/Layout/GPOS/GPOS.hh     | 17 ++++++++++-------
+ src/hb-ot-layout-gpos-table.hh |  6 ++++--
+ 2 files changed, 14 insertions(+), 9 deletions(-)
+
+diff --git a/src/OT/Layout/GPOS/GPOS.hh b/src/OT/Layout/GPOS/GPOS.hh
+index 7fb97d7568..23b0b090a2 100644
+--- a/src/OT/Layout/GPOS.hh
++++ b/src/OT/Layout/GPOS.hh
+@@ -7,6 +7,9 @@
+ #include "GPOS/PosLookup.hh"
+ 
+ namespace OT {
++
++using Layout::GPOS_impl::PosLookup;
++
+ namespace Layout {
+ 
+ static void
+@@ -25,10 +28,10 @@ struct GPOS : GSUBGPOS
+ {
+   static constexpr hb_tag_t tableTag = HB_OT_TAG_GPOS;
+ 
+-  using Lookup = GPOS_impl::PosLookup;
++  using Lookup = PosLookup;
+ 
+-  const GPOS_impl::PosLookup& get_lookup (unsigned int i) const
+-  { return static_cast<const GPOS_impl::PosLookup &> (GSUBGPOS::get_lookup (i)); }
++  const PosLookup& get_lookup (unsigned int i) const
++  { return static_cast<const PosLookup &> (GSUBGPOS::get_lookup (i)); }
+ 
+   static inline void position_start (hb_font_t *font, hb_buffer_t *buffer);
+   static inline void position_finish_advances (hb_font_t *font, hb_buffer_t *buffer);
+@@ -37,11 +40,11 @@ struct GPOS : GSUBGPOS
+   bool subset (hb_subset_context_t *c) const
+   {
+     hb_subset_layout_context_t l (c, tableTag, c->plan->gpos_lookups, c->plan->gpos_langsys, c->plan->gpos_features);
+-    return GSUBGPOS::subset<GPOS_impl::PosLookup> (&l);
++    return GSUBGPOS::subset<PosLookup> (&l);
+   }
+ 
+   bool sanitize (hb_sanitize_context_t *c) const
+-  { return GSUBGPOS::sanitize<GPOS_impl::PosLookup> (c); }
++  { return GSUBGPOS::sanitize<PosLookup> (c); }
+ 
+   HB_INTERNAL bool is_blocklisted (hb_blob_t *blob,
+                                    hb_face_t *face) const;
+@@ -51,7 +54,7 @@ struct GPOS : GSUBGPOS
+     for (unsigned i = 0; i < GSUBGPOS::get_lookup_count (); i++)
+     {
+       if (!c->gpos_lookups->has (i)) continue;
+-      const GPOS_impl::PosLookup &l = get_lookup (i);
++      const PosLookup &l = get_lookup (i);
+       l.dispatch (c);
+     }
+   }
+@@ -59,7 +62,7 @@ struct GPOS : GSUBGPOS
+   void closure_lookups (hb_face_t      *face,
+                         const hb_set_t *glyphs,
+                         hb_set_t       *lookup_indexes /* IN/OUT */) const
+-  { GSUBGPOS::closure_lookups<GPOS_impl::PosLookup> (face, glyphs, lookup_indexes); }
++  { GSUBGPOS::closure_lookups<PosLookup> (face, glyphs, lookup_indexes); }
+ 
+   typedef GSUBGPOS::accelerator_t<GPOS> accelerator_t;
+ };
+diff --git a/src/hb-ot-layout-gpos-table.hh b/src/hb-ot-layout-gpos-table.hh
+index f5059cfa83..8fe987fc50 100644
+--- a/src/hb-ot-layout-gpos-table.hh
++++ b/src/hb-ot-layout-gpos-table.hh
+@@ -32,8 +32,8 @@
+ #include "OT/Layout/GPOS.hh"
+ 
+ namespace OT {
+-
+-using Layout::GPOS_impl::PosLookup;
++namespace Layout {
++namespace GPOS_impl {
+ 
+ // TODO(garretrieger): Move into new layout directory.
+ /* Out-of-class implementation for methods recursing */
+@@ -68,6 +68,8 @@ inline bool PosLookup::dispatch_recurse_func<hb_ot_apply_context_t> (hb_ot_apply
+ }
+ #endif
+ 
++} /* namespace GPOS_impl */
++} /* namespace Layout */
+ } /* namespace OT */
+ 
+