Skip to content

linux engine not buildable with pango >=1.49.4 #132881

@selfisekai

Description

@selfisekai

Is there an existing issue for this?

Steps to reproduce

build engine for flutter 3.13.0, for linux. I assume only with --gn-args 'use_default_linux_sysroot=false', as pango is otherwise provided by your sysroot, where it is older?

full commands:

python3 ./flutter/tools/gn \
			--no-goma \
			--no-dart-version-git-info \
			--linux \
			--linux-cpu=x64 \
			--lto \
			--clang \
			--target-triple=x86_64-alpine-linux-musl
			--no-backtrace \
			--no-stripped \
			--prebuilt-dart-sdk \
			--build-glfw-shell \
			--build-engine-artifacts \
			--no-enable-unittests \
			--enable-fontconfig \
            --runtime-mode="release" \
            --gn-args 'host_libc="musl" target_libc="musl" use_custom_libcxx=false use_default_linux_sysroot=false'
ninja -C "$_release_out" flutter flutter_patched_sdk sky

(libc args coming from my patches, ignore)

the specific lines are:
engine: flutter/engine@671a846#diff-759dce7b4f188d36708a7796446d238ab1018084269941cdb15bde95fa223683R10
pango: https://gitlab.gnome.org/GNOME/pango/-/commit/0b84e14251445de349038eca15d2559dfe25ae26#b8c7fa1a0d53c98f6a0a57323449e2d6335d50d8_497_498

Actual results

(full log collapsed below)


../../flutter/shell/platform/linux/fl_accessible_text_field.cc:10:1: error: redefinition of 'glib_autoptr_clear_PangoLayout'
G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoLayout, g_object_unref)
^
/usr/include/pango-1.0/pango/pango-layout.h:548:1: note: previous definition is here
G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoLayout, g_object_unref)
^

builds successfully with this patch:

--- ./flutter/shell/platform/linux/fl_accessible_text_field.cc.orig
+++ ./flutter/shell/platform/linux/fl_accessible_text_field.cc
@@ -7,7 +7,6 @@
 #include "flutter/shell/platform/linux/public/flutter_linux/fl_value.h"
 
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoContext, g_object_unref)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoLayout, g_object_unref)
 
 typedef bool (*FlTextBoundaryCallback)(const PangoLogAttr* attr);
 

Logs

Logs
../../flutter/shell/platform/linux/fl_accessible_text_field.cc:10:1: error: redefinition of 'glib_autoptr_clear_PangoLayout'
G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoLayout, g_object_unref)
^
/usr/include/glib-2.0/glib/gmacros.h:1371:3: note: expanded from macro 'G_DEFINE_AUTOPTR_CLEANUP_FUNC'
  _GLIB_DEFINE_AUTOPTR_CLEANUP_FUNCS(TypeName, TypeName, func)
  ^
/usr/include/glib-2.0/glib/gmacros.h:1354:36: note: expanded from macro '_GLIB_DEFINE_AUTOPTR_CLEANUP_FUNCS'
  static G_GNUC_UNUSED inline void _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (TypeName *_ptr)                     \
                                   ^
/usr/include/glib-2.0/glib/gmacros.h:1338:49: note: expanded from macro '_GLIB_AUTOPTR_CLEAR_FUNC_NAME'
#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
                                                ^
<scratch space>:87:1: note: expanded from here
glib_autoptr_clear_PangoLayout
^
/usr/include/pango-1.0/pango/pango-layout.h:548:1: note: previous definition is here
G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoLayout, g_object_unref)
^
/usr/include/glib-2.0/glib/gmacros.h:1371:3: note: expanded from macro 'G_DEFINE_AUTOPTR_CLEANUP_FUNC'
  _GLIB_DEFINE_AUTOPTR_CLEANUP_FUNCS(TypeName, TypeName, func)
  ^
/usr/include/glib-2.0/glib/gmacros.h:1354:36: note: expanded from macro '_GLIB_DEFINE_AUTOPTR_CLEANUP_FUNCS'
  static G_GNUC_UNUSED inline void _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (TypeName *_ptr)                     \
                                   ^
/usr/include/glib-2.0/glib/gmacros.h:1338:49: note: expanded from macro '_GLIB_AUTOPTR_CLEAR_FUNC_NAME'
#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
                                                ^
<scratch space>:65:1: note: expanded from here
glib_autoptr_clear_PangoLayout
^
../../flutter/shell/platform/linux/fl_accessible_text_field.cc:10:1: error: redefinition of 'glib_autoptr_cleanup_PangoLayout'
G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoLayout, g_object_unref)
^
/usr/include/glib-2.0/glib/gmacros.h:1371:3: note: expanded from macro 'G_DEFINE_AUTOPTR_CLEANUP_FUNC'
  _GLIB_DEFINE_AUTOPTR_CLEANUP_FUNCS(TypeName, TypeName, func)
  ^
/usr/include/glib-2.0/glib/gmacros.h:1356:36: note: expanded from macro '_GLIB_DEFINE_AUTOPTR_CLEANUP_FUNCS'
  static G_GNUC_UNUSED inline void _GLIB_AUTOPTR_FUNC_NAME(TypeName) (TypeName **_ptr)                          \
                                   ^
/usr/include/glib-2.0/glib/gmacros.h:1337:43: note: expanded from macro '_GLIB_AUTOPTR_FUNC_NAME'
#define _GLIB_AUTOPTR_FUNC_NAME(TypeName) glib_autoptr_cleanup_##TypeName
                                          ^
<scratch space>:88:1: note: expanded from here
glib_autoptr_cleanup_PangoLayout
^
/usr/include/pango-1.0/pango/pango-layout.h:548:1: note: previous definition is here
G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoLayout, g_object_unref)
^
/usr/include/glib-2.0/glib/gmacros.h:1371:3: note: expanded from macro 'G_DEFINE_AUTOPTR_CLEANUP_FUNC'
  _GLIB_DEFINE_AUTOPTR_CLEANUP_FUNCS(TypeName, TypeName, func)
  ^
/usr/include/glib-2.0/glib/gmacros.h:1356:36: note: expanded from macro '_GLIB_DEFINE_AUTOPTR_CLEANUP_FUNCS'
  static G_GNUC_UNUSED inline void _GLIB_AUTOPTR_FUNC_NAME(TypeName) (TypeName **_ptr)                          \
                                   ^
/usr/include/glib-2.0/glib/gmacros.h:1337:43: note: expanded from macro '_GLIB_AUTOPTR_FUNC_NAME'
#define _GLIB_AUTOPTR_FUNC_NAME(TypeName) glib_autoptr_cleanup_##TypeName
                                          ^
<scratch space>:66:1: note: expanded from here
glib_autoptr_cleanup_PangoLayout
^
../../flutter/shell/platform/linux/fl_accessible_text_field.cc:10:1: error: redefinition of 'glib_listautoptr_cleanup_PangoLayout'
G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoLayout, g_object_unref)
^
/usr/include/glib-2.0/glib/gmacros.h:1371:3: note: expanded from macro 'G_DEFINE_AUTOPTR_CLEANUP_FUNC'
  _GLIB_DEFINE_AUTOPTR_CLEANUP_FUNCS(TypeName, TypeName, func)
  ^
/usr/include/glib-2.0/glib/gmacros.h:1358:36: note: expanded from macro '_GLIB_DEFINE_AUTOPTR_CLEANUP_FUNCS'
  static G_GNUC_UNUSED inline void _GLIB_AUTOPTR_LIST_FUNC_NAME(TypeName) (GList **_l)                          \
                                   ^
/usr/include/glib-2.0/glib/gmacros.h:1340:48: note: expanded from macro '_GLIB_AUTOPTR_LIST_FUNC_NAME'
#define _GLIB_AUTOPTR_LIST_FUNC_NAME(TypeName) glib_listautoptr_cleanup_##TypeName
                                               ^
<scratch space>:90:1: note: expanded from here
glib_listautoptr_cleanup_PangoLayout
^
/usr/include/pango-1.0/pango/pango-layout.h:548:1: note: previous definition is here
G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoLayout, g_object_unref)
^
/usr/include/glib-2.0/glib/gmacros.h:1371:3: note: expanded from macro 'G_DEFINE_AUTOPTR_CLEANUP_FUNC'
  _GLIB_DEFINE_AUTOPTR_CLEANUP_FUNCS(TypeName, TypeName, func)
  ^
/usr/include/glib-2.0/glib/gmacros.h:1358:36: note: expanded from macro '_GLIB_DEFINE_AUTOPTR_CLEANUP_FUNCS'
  static G_GNUC_UNUSED inline void _GLIB_AUTOPTR_LIST_FUNC_NAME(TypeName) (GList **_l)                          \
                                   ^
/usr/include/glib-2.0/glib/gmacros.h:1340:48: note: expanded from macro '_GLIB_AUTOPTR_LIST_FUNC_NAME'
#define _GLIB_AUTOPTR_LIST_FUNC_NAME(TypeName) glib_listautoptr_cleanup_##TypeName
                                               ^
<scratch space>:68:1: note: expanded from here
glib_listautoptr_cleanup_PangoLayout
^
../../flutter/shell/platform/linux/fl_accessible_text_field.cc:10:1: error: redefinition of 'glib_slistautoptr_cleanup_PangoLayout'
G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoLayout, g_object_unref)
^
/usr/include/glib-2.0/glib/gmacros.h:1371:3: note: expanded from macro 'G_DEFINE_AUTOPTR_CLEANUP_FUNC'
  _GLIB_DEFINE_AUTOPTR_CLEANUP_FUNCS(TypeName, TypeName, func)
  ^
/usr/include/glib-2.0/glib/gmacros.h:1360:36: note: expanded from macro '_GLIB_DEFINE_AUTOPTR_CLEANUP_FUNCS'
  static G_GNUC_UNUSED inline void _GLIB_AUTOPTR_SLIST_FUNC_NAME(TypeName) (GSList **_l)                        \
                                   ^
/usr/include/glib-2.0/glib/gmacros.h:1342:49: note: expanded from macro '_GLIB_AUTOPTR_SLIST_FUNC_NAME'
#define _GLIB_AUTOPTR_SLIST_FUNC_NAME(TypeName) glib_slistautoptr_cleanup_##TypeName
                                                ^
<scratch space>:91:1: note: expanded from here
glib_slistautoptr_cleanup_PangoLayout
^
/usr/include/pango-1.0/pango/pango-layout.h:548:1: note: previous definition is here
G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoLayout, g_object_unref)
^
/usr/include/glib-2.0/glib/gmacros.h:1371:3: note: expanded from macro 'G_DEFINE_AUTOPTR_CLEANUP_FUNC'
  _GLIB_DEFINE_AUTOPTR_CLEANUP_FUNCS(TypeName, TypeName, func)
  ^
/usr/include/glib-2.0/glib/gmacros.h:1360:36: note: expanded from macro '_GLIB_DEFINE_AUTOPTR_CLEANUP_FUNCS'
  static G_GNUC_UNUSED inline void _GLIB_AUTOPTR_SLIST_FUNC_NAME(TypeName) (GSList **_l)                        \
                                   ^
/usr/include/glib-2.0/glib/gmacros.h:1342:49: note: expanded from macro '_GLIB_AUTOPTR_SLIST_FUNC_NAME'
#define _GLIB_AUTOPTR_SLIST_FUNC_NAME(TypeName) glib_slistautoptr_cleanup_##TypeName
                                                ^
<scratch space>:69:1: note: expanded from here
glib_slistautoptr_cleanup_PangoLayout
^
../../flutter/shell/platform/linux/fl_accessible_text_field.cc:10:1: error: redefinition of 'glib_queueautoptr_cleanup_PangoLayout'
G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoLayout, g_object_unref)
^
/usr/include/glib-2.0/glib/gmacros.h:1371:3: note: expanded from macro 'G_DEFINE_AUTOPTR_CLEANUP_FUNC'
  _GLIB_DEFINE_AUTOPTR_CLEANUP_FUNCS(TypeName, TypeName, func)
  ^
/usr/include/glib-2.0/glib/gmacros.h:1362:36: note: expanded from macro '_GLIB_DEFINE_AUTOPTR_CLEANUP_FUNCS'
  static G_GNUC_UNUSED inline void _GLIB_AUTOPTR_QUEUE_FUNC_NAME(TypeName) (GQueue **_q)                        \
                                   ^
/usr/include/glib-2.0/glib/gmacros.h:1344:49: note: expanded from macro '_GLIB_AUTOPTR_QUEUE_FUNC_NAME'
#define _GLIB_AUTOPTR_QUEUE_FUNC_NAME(TypeName) glib_queueautoptr_cleanup_##TypeName
                                                ^
<scratch space>:92:1: note: expanded from here
glib_queueautoptr_cleanup_PangoLayout
^
/usr/include/pango-1.0/pango/pango-layout.h:548:1: note: previous definition is here
G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoLayout, g_object_unref)
^
/usr/include/glib-2.0/glib/gmacros.h:1371:3: note: expanded from macro 'G_DEFINE_AUTOPTR_CLEANUP_FUNC'
  _GLIB_DEFINE_AUTOPTR_CLEANUP_FUNCS(TypeName, TypeName, func)
  ^
/usr/include/glib-2.0/glib/gmacros.h:1362:36: note: expanded from macro '_GLIB_DEFINE_AUTOPTR_CLEANUP_FUNCS'
  static G_GNUC_UNUSED inline void _GLIB_AUTOPTR_QUEUE_FUNC_NAME(TypeName) (GQueue **_q)                        \
                                   ^
/usr/include/glib-2.0/glib/gmacros.h:1344:49: note: expanded from macro '_GLIB_AUTOPTR_QUEUE_FUNC_NAME'
#define _GLIB_AUTOPTR_QUEUE_FUNC_NAME(TypeName) glib_queueautoptr_cleanup_##TypeName
                                                ^
<scratch space>:70:1: note: expanded from here
glib_queueautoptr_cleanup_PangoLayout
^
../../flutter/shell/platform/linux/fl_accessible_text_field.cc:69:3: error: 'cleanup' argument is not a function
  g_autoptr(PangoLayout) layout = create_pango_layout(self);
  ^
/usr/include/glib-2.0/glib/gmacros.h:1380:43: note: expanded from macro 'g_autoptr'
#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
                                          ^
/usr/include/glib-2.0/glib/gmacros.h:1337:43: note: expanded from macro '_GLIB_AUTOPTR_FUNC_NAME'
#define _GLIB_AUTOPTR_FUNC_NAME(TypeName) glib_autoptr_cleanup_##TypeName
                                          ^
<scratch space>:118:1: note: expanded from here
glib_autoptr_cleanup_PangoLayout
^
../../flutter/shell/platform/linux/fl_accessible_text_field.cc:129:3: error: 'cleanup' argument is not a function
  g_autoptr(PangoLayout) layout = create_pango_layout(self);
  ^
/usr/include/glib-2.0/glib/gmacros.h:1380:43: note: expanded from macro 'g_autoptr'
#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
                                          ^
/usr/include/glib-2.0/glib/gmacros.h:1337:43: note: expanded from macro '_GLIB_AUTOPTR_FUNC_NAME'
#define _GLIB_AUTOPTR_FUNC_NAME(TypeName) glib_autoptr_cleanup_##TypeName
                                          ^
<scratch space>:120:1: note: expanded from here
glib_autoptr_cleanup_PangoLayout
^
../../flutter/shell/platform/linux/fl_accessible_text_field.cc:155:3: error: 'cleanup' argument is not a function
  g_autoptr(PangoLayout) layout = create_pango_layout(self);
  ^
/usr/include/glib-2.0/glib/gmacros.h:1380:43: note: expanded from macro 'g_autoptr'
#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
                                          ^
/usr/include/glib-2.0/glib/gmacros.h:1337:43: note: expanded from macro '_GLIB_AUTOPTR_FUNC_NAME'
#define _GLIB_AUTOPTR_FUNC_NAME(TypeName) glib_autoptr_cleanup_##TypeName
                                          ^
<scratch space>:122:1: note: expanded from here
glib_autoptr_cleanup_PangoLayout
^
8 errors generated.
ninja: subcommand failed

Flutter Doctor output

n/a

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Important issues not at the top of the work lista: desktopRunning on desktopc: crashStack traces logged to the consolee: local-engine-developmentLocal builds of the engine working betterengineflutter/engine related. See also e: labels.platform-linuxBuilding on or for Linux specificallyr: fixedIssue is closed as already fixed in a newer versionteam-linuxOwned by the Linux platform team

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions