Bug 2005912 - harfbuzz 3.0.0 removed symbols despite no soname / soversion change
Summary: harfbuzz 3.0.0 removed symbols despite no soname / soversion change
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: harfbuzz
Version: rawhide
Hardware: Unspecified
OS: Unspecified
high
urgent
Target Milestone: ---
Assignee: Parag Nemade
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2021-09-20 13:15 UTC by Mamoru TASAKA
Modified: 2021-09-28 08:03 UTC (History)
5 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2021-09-28 08:03:50 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Mamoru TASAKA 2021-09-20 13:15:47 UTC
Description of problem:
harfbuzz-3.0.0-1.fc36.x86_64 renoved symbols compared with
harfbuzz-2.8.2-2.fc35.x86_64:

```
[tasaka1@localhost x86_64]$ rpmsodiff harfbuzz-2.8.2-2.fc35.x86_64.rpm harfbuzz-3.0.0-1.fc36.x86_64.rpm 2>&1
	common sonames:
libharfbuzz-gobject.so.0	/usr/lib64/libharfbuzz-gobject.so.0.20802.0	/usr/lib64/libharfbuzz-gobject.so.0.30000.0
libharfbuzz-subset.so.0	/usr/lib64/libharfbuzz-subset.so.0.20802.0	/usr/lib64/libharfbuzz-subset.so.0.30000.0
libharfbuzz.so.0	/usr/lib64/libharfbuzz.so.0.20802.0	/usr/lib64/libharfbuzz.so.0.30000.0

--- harfbuzz-2.8.2-2.fc35/libharfbuzz-gobject.so.0	2021-07-22 18:48:31.000000000 +0900
+++ harfbuzz-3.0.0-1.fc36/libharfbuzz-gobject.so.0	2021-09-18 21:18:29.000000000 +0900
@@ -35,2 +35,3 @@
 hb_gobject_shape_plan_get_type	T
+hb_gobject_style_tag_get_type	T
 hb_gobject_unicode_combining_class_get_type	T

	1 symbols added
T hb_gobject_style_tag_get_type

# template for libharfbuzz-gobject.so.0 version script
HARFBUZZ_3.0.0 {
    global:
	hb_gobject_style_tag_get_type;
};

--- harfbuzz-2.8.2-2.fc35/libharfbuzz-subset.so.0	2021-07-22 18:48:31.000000000 +0900
+++ harfbuzz-3.0.0-1.fc36/libharfbuzz-subset.so.0	2021-09-18 21:18:29.000000000 +0900
@@ -1,26 +1,11 @@
-hb_subset	T
 hb_subset_input_create_or_fail	T
 hb_subset_input_destroy	T
-hb_subset_input_drop_tables_set	T
-hb_subset_input_get_desubroutinize	T
-hb_subset_input_get_drop_hints	T
-hb_subset_input_get_name_legacy	T
-hb_subset_input_get_no_prune_unicode_ranges	T
-hb_subset_input_get_notdef_outline	T
-hb_subset_input_get_overlaps_flag	T
-hb_subset_input_get_retain_all_features	T
-hb_subset_input_get_retain_gids	T
+hb_subset_input_get_flags	T
+hb_subset_input_get_user_data	T
 hb_subset_input_glyph_set	T
-hb_subset_input_layout_features_set	T
-hb_subset_input_nameid_set	T
-hb_subset_input_namelangid_set	T
 hb_subset_input_reference	T
-hb_subset_input_set_desubroutinize	T
-hb_subset_input_set_drop_hints	T
-hb_subset_input_set_name_legacy	T
-hb_subset_input_set_no_prune_unicode_ranges	T
-hb_subset_input_set_notdef_outline	T
-hb_subset_input_set_overlaps_flag	T
-hb_subset_input_set_retain_all_features	T
-hb_subset_input_set_retain_gids	T
+hb_subset_input_set	T
+hb_subset_input_set_flags	T
+hb_subset_input_set_user_data	T
 hb_subset_input_unicode_set	T
+hb_subset_or_fail	T

	21 symbols removed
T hb_subset
T hb_subset_input_drop_tables_set
T hb_subset_input_get_desubroutinize
T hb_subset_input_get_drop_hints
T hb_subset_input_get_name_legacy
T hb_subset_input_get_no_prune_unicode_ranges
T hb_subset_input_get_notdef_outline
T hb_subset_input_get_overlaps_flag
T hb_subset_input_get_retain_all_features
T hb_subset_input_get_retain_gids
T hb_subset_input_layout_features_set
T hb_subset_input_nameid_set
T hb_subset_input_namelangid_set
T hb_subset_input_set_desubroutinize
T hb_subset_input_set_drop_hints
T hb_subset_input_set_name_legacy
T hb_subset_input_set_no_prune_unicode_ranges
T hb_subset_input_set_notdef_outline
T hb_subset_input_set_overlaps_flag
T hb_subset_input_set_retain_all_features
T hb_subset_input_set_retain_gids

	6 symbols added
T hb_subset_input_get_flags
T hb_subset_input_get_user_data
T hb_subset_input_set
T hb_subset_input_set_flags
T hb_subset_input_set_user_data
T hb_subset_or_fail

# template for libharfbuzz-subset.so.0 version script
HARFBUZZ_3.0.0 {
    global:
	hb_subset_input_get_flags;
	hb_subset_input_get_user_data;
	hb_subset_input_set;
	hb_subset_input_set_flags;
	hb_subset_input_set_user_data;
	hb_subset_or_fail;
};

--- harfbuzz-2.8.2-2.fc35/libharfbuzz.so.0	2021-07-22 18:48:31.000000000 +0900
+++ harfbuzz-3.0.0-1.fc36/libharfbuzz.so.0	2021-09-18 21:18:29.000000000 +0900
@@ -365,2 +365,3 @@
 hb_shape_plan_set_user_data	T
+hb_style_get_value	T
 hb_tag_from_string	T

	1 symbols added
T hb_style_get_value

# template for libharfbuzz.so.0 version script
HARFBUZZ_3.0.0 {
    global:
	hb_style_get_value;
};

vim:ft=diff
```

This breaks binaries and libraries depending on harfbuzz silently.

Version-Release number of selected component (if applicable):
harfbuzz-3.0.0-1.fc36.x86_64

Actual results:
A. For example, installing qt5-qtwebengine-examples-5.15.6-1.fc36.x86_64 and checking one binary, for example:

```
$ ldd -r /usr/lib64/qt5/examples/webengine/recipebrowser/recipebrowser | grep undefined
undefined symbol: hb_subset_input_set_retain_gids	(/lib64/libQt5WebEngineCore.so.5)
undefined symbol: hb_subset_input_set_drop_hints	(/lib64/libQt5WebEngineCore.so.5)
undefined symbol: hb_subset	(/lib64/libQt5WebEngineCore.so.5)
```

B. Trying to build srpm depending on harfbuzz, for example plasma-workspace fails like 
https://koji.fedoraproject.org/koji/taskinfo?taskID=76004301

```
[ 63%] Linking CXX executable ../bin/systemmonitor
cd /builddir/build/BUILD/plasma-workspace-5.22.90/redhat-linux-build/systemmonitor && /usr/bin/cmake -E cmake_link_script CMakeFiles/systemmonitor.dir/link.txt --verbose=1
/usr/bin/c++ -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-operator-names -fno-exceptions -Wall -Wextra -Wcast-align -Wchar-subscripts -Wformat-security -Wno-long-long -Wpointer-arith -Wundef -Wnon-virtual-dtor -Woverloaded-virtual -Werror=return-type -Wvla -Wdate-time -Wsuggest-override -Wlogical-op -DNDEBUG -Wl,--enable-new-dtags -Wl,-z,relro -Wl,--as-needed  -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 CMakeFiles/systemmonitor.dir/systemmonitor_autogen/mocs_compilation.cpp.o CMakeFiles/systemmonitor.dir/ksystemactivitydialog.cpp.o CMakeFiles/systemmonitor.dir/main.cpp.o -o ../bin/systemmonitor  -Wl,-rpath,/builddir/build/BUILD/plasma-workspace-5.22.90/redhat-linux-build/bin: /usr/lib64/libprocessui.so.5.22.90 /usr/lib64/libKF5XmlGui.so.5.86.0 /usr/lib64/libKF5GlobalAccel.so.5.86.0 ../bin/libkworkspace5.so.5.22.90 /usr/lib64/libprocesscore.so.5.22.90 /usr/lib64/libKSysGuardFormatter.so.5.22.90 /usr/lib64/libKF5ConfigWidgets.so.5.86.0 /usr/lib64/libKF5Codecs.so.5.86.0 /usr/lib64/libKF5ConfigGui.so.5.86.0 /usr/lib64/libQt5Xml.so.5.15.2 /usr/lib64/libKF5Auth.so.5.86.0 /usr/lib64/libKF5AuthCore.so.5.86.0 /usr/lib64/libKF5WidgetsAddons.so.5.86.0 /usr/lib64/libKF5CoreAddons.so.5.86.0 /usr/lib64/libKF5ConfigCore.so.5.86.0 /usr/lib64/libQt5DBus.so.5.15.2 /usr/lib64/libKF5I18n.so.5.86.0 /usr/lib64/libKF5WindowSystem.so.5.86.0 /usr/lib64/libQt5Widgets.so.5.15.2 /usr/lib64/libX11.so /usr/lib64/libQt5Gui.so.5.15.2 /usr/lib64/libQt5Core.so.5.15.2 

/usr/bin/ld: /usr/lib64/libQt5WebEngineCore.so.5: undefined reference to `hb_subset_input_set_drop_hints'
/usr/bin/ld: /usr/lib64/libQt5WebEngineCore.so.5: undefined reference to `hb_subset_input_set_retain_gids'
/usr/bin/ld: /usr/lib64/libQt5WebEngineCore.so.5: undefined reference to `hb_subset'
collect2: error: ld returned 1 exit status
gmake[2]: *** [systemmonitor/CMakeFiles/systemmonitor.dir/build.make:133: bin/systemmonitor] Error 1
```

Comment 1 Parag Nemade 2021-09-20 15:56:21 UTC
Reported upstream https://github.com/harfbuzz/harfbuzz/issues/3216

Comment 2 Parag Nemade 2021-09-22 12:00:27 UTC
I believe all dependencies are fixed now in rawhide.

Comment 3 Parag Nemade 2021-09-28 08:03:50 UTC
if there is still any discussion needed here, please continue in upstream ticket https://github.com/harfbuzz/harfbuzz/issues/3216


Note You need to log in before you can comment on or make changes to this bug.