Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

libpango-1.0.so.0: undefined symbol: hb_ot_layout_get_horizontal_baseline_tag_for_script #528

Closed
danyeaw opened this issue Nov 27, 2022 · 10 comments

Comments

@danyeaw
Copy link

danyeaw commented Nov 27, 2022

I recently updated Gaphor to build an AppImage of with GTK4 and libadwaita at gaphor/gaphor#1857. I built GTK from source using JHBuild.

Using the default excludeslist, I was getting a libpango-1.0.so.0: undefined symbol: hb_ot_layout_get_horizontal_baseline_tag_for_script error when launching Gaphor using the AppImage.

Removing libharfbuzz.so.0 from excludes list fixes the issue.

The AppImage is built using Ubuntu 18.04 docker image which comes with HarfBuzz 1.7.6, Pango requires HarfBuzz >= 2.6.0. When building an app with the latest Pango for GTK4, it looks like it depends on this newer version of HarfBuzz and should be removed from the excludelist.

danyeaw added a commit to danyeaw/pkg2appimage that referenced this issue Nov 27, 2022
Fixes AppImageCommunity#528. A newer version of HarfBuzz is needed to build GTK4 for AppImages.
@probonopd
Copy link
Member

Can your application be built on Ubuntu bionic?

@danyeaw
Copy link
Author

danyeaw commented Nov 27, 2022

Hi @probonopd, yes, it is being built with Bionic and works great with the HarfBuzz library packaged.

@probonopd
Copy link
Member

Thanks for confirming. I am a bit hesitant to make this change because I remember this as a problematic library to be privately bundled. Possbly the issues arise when HarfBuzz is "too new" in the system; need to do more testing.

Anyway, thanks for letting me know! Let's keep this open for a while for others to comment. @TheAssassin wdyt?

@danyeaw
Copy link
Author

danyeaw commented Nov 27, 2022

In addition to the Bionic docker image, we also tested the AppImage with Ubuntu 20.04, Fedora 35, and OpenSUSE Tumbleweed. 👍

@danyeaw
Copy link
Author

danyeaw commented May 14, 2023

This wasn't merged in a timely manner, so I am going to go ahead and close this.

@danyeaw danyeaw closed this as completed May 14, 2023
@danyeaw danyeaw closed this as not planned Won't fix, can't repro, duplicate, stale May 14, 2023
@tz-reinberger
Copy link

So I am deploying on Ubuntu 20.04 and running on 22.04 and the missing libharfbuzz causes this issue.
Can we update the excludelist to remove libharfbuzz or is there any reason why we should keep it?

@TheAssassin
Copy link
Member

The solution is rather to add libpango, isn't it? libharfbuzz causes issues with other libraries, too.

@tz-reinberger
Copy link

Also seems like a possible solution.
In that case,

libpango-1.0.so.0
libpangoft2-1.0.so.0

have to be added to the excludelist.

libpangocairo-1.0.so.0

seems to not cause trouble and can be deployed.
But removing pango might mean it will not run on an older system if the software requires newer pango.

Korne127 added a commit to Korne127/pkg2appimage that referenced this issue Jul 23, 2024
libthai.so.0 has been removed from the excludelist.
The original reason why libthai has been added to it is an issue that occurs when libpango is not bundled but libthai is (see AppImageCommunity#538). But since then, libpango has been removed from the excludelist in 2022. This means that the original reason why libthai has been excluded is no longer relevant. Therefore it could be removed from the excludelist. This fixes AppImageCommunity#544.

Additionally, the excludelist formatting has been improved. There had been different places scattered across the excludelist in which libraries have been excluded or not excluded due to other libraries (like libthai / libpango). They have all been brought together (with all information and reasoning) in one block to prevent issues like this in the future.
Additionally, missing information out of AppImageCommunity#528 has been added to this block.
Korne127 added a commit to Korne127/pkg2appimage that referenced this issue Jul 23, 2024
libthai.so.0 has been removed from the excludelist.
The original reason why libthai had been added to it is an issue that occurs when libpango is not bundled but libthai is (see AppImageCommunity#538). But since then, libpango had been removed from the excludelist in 2022. This means that the original reason why libthai had been excluded is no longer relevant. Therefore it could be removed from the excludelist. This fixes AppImageCommunity#544.

Additionally, the excludelist formatting has been improved. There had been different places scattered across the excludelist in which libraries had been excluded or not excluded due to other libraries (like libthai / libpango). They have all been brought together (with all information and reasoning) in one block to prevent issues like this in the future.
Additionally, missing information out of AppImageCommunity#528 has been added to this block.
Korne127 added a commit to Korne127/pkg2appimage that referenced this issue Jul 23, 2024
libthai.so.0 has been removed from the excludelist.
The original reason why libthai had been added to it is an issue that occurs when libpango is not bundled but libthai is (see AppImageCommunity#538). But since then, libpango had been removed from the excludelist in 2022. This means that the original reason why libthai had been excluded is no longer relevant. Therefore it could be removed from the excludelist. This fixes AppImageCommunity#538.

Additionally, the excludelist formatting has been improved. There had been different places scattered across the excludelist in which libraries had been excluded or not excluded due to other libraries (like libthai / libpango). They have all been brought together (with all information and reasoning) in one block to prevent issues like this in the future.
Additionally, missing information out of AppImageCommunity#528 has been added to this block.
@Korne127
Copy link
Contributor

I improved the excludelist formatting and put all information about GLib and libraries that are (not) bundled due to it being bundled in one block in #555. As libpango needs to be bundled because we bundle GLib, I don't see how this can be resolved (at least not without reopening other issues).
However, to gather all information about it in one place, I added this problem as a note to this block.

On the bright side, Ubuntu 18 is no longer supported, so hopefully this issue will eventually stop being relevant.

probonopd added a commit that referenced this issue Jul 23, 2024
#555)

* Removed libthai from the excludelist and improved excludelist formatting

libthai.so.0 has been removed from the excludelist.
The original reason why libthai had been added to it is an issue that occurs when libpango is not bundled but libthai is (see #538). But since then, libpango had been removed from the excludelist in 2022. This means that the original reason why libthai had been excluded is no longer relevant. Therefore it could be removed from the excludelist. This fixes #538.

Additionally, the excludelist formatting has been improved. There had been different places scattered across the excludelist in which libraries had been excluded or not excluded due to other libraries (like libthai / libpango). They have all been brought together (with all information and reasoning) in one block to prevent issues like this in the future.
Additionally, missing information out of #528 has been added to this block.

* uses: actions/checkout@v4, since v2 does not work anymore

* Need image: ubuntu:20.04 so that checkout can work?

---------

Co-authored-by: probonopd <probonopd@users.noreply.github.com>
@probonopd
Copy link
Member

probonopd commented Jul 23, 2024

Looks like we arrived at the conclusion that Glib/Gdk/Gtk/Pango/Cairo from the operating system usually can't be used and the whole stack of these and other closely related (e.g., libthai and possibly harfbuzz) libraries all need to be privately bundled.
An interesting question is what happens if you try to run such an application on an operating system that natively comes with a newer version than what we privately bundle with the application.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants