Re: build of libharfbuzz0-shlibs-2.6.8-2 failed

Hanspeter Niederstrasser <[email protected]> Wed, 9 Oct 2024 19:38:43 -0500
Newsgroups gmane.os.apple.fink.general
Organization Snaggled Works
Message-ID <[email protected]>
On 10/9/24 5:43 PM, Derek Homeier wrote:
> On 9 Oct 2024, at 9:51 PM, [email protected] wrote:
>>
>> In the failed build directory, can you edit the file util/helper-cairo.cc at line 155 and delete the "(cairo_destroy_func_t)" part at the beginning. This would leave just "hb_font_destroy))" after all the indentations. Make sure you leave the 2 closing parentheses at the end. I don't know if this change will work, but it follows the same pattern from the previous upstream patch in src/hb-ft.cc.
>>
> Still seems to remember its type:
> 
> g++ -std=gnu++11 -DHAVE_CONFIG_H -I. -I..  -DHB_DISABLE_DEPRECATED -I../src/ -I../src/ -I/opt/sw3/include/glib-2.0 -I/opt/sw3/lib/glib-2.0/include -I/opt/sw3/include/freetype2 -I/opt/sw3/include/cairo -I/opt/sw3/include/freetype2  -I/opt/sw3/include  -fno-rtti -g -O2 -fno-exceptions -fno-threadsafe-statics -fvisibility-inlines-hidden  -MT helper-cairo.o -MD -MP -MF .deps/helper-cairo.Tpo -c -o helper-cairo.o helper-cairo.cc
> helper-cairo.cc:152:7: error: no matching function for call to 'cairo_scaled_font_set_user_data'
>    152 |   if (cairo_scaled_font_set_user_data (scaled_font,
>        |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /opt/sw3/include/cairo/cairo.h:1592:1: note: candidate function not viable: no known conversion from 'void (hb_font_t *)' to 'cairo_destroy_func_t' (aka 'void (*)(void *)') for 4th argument
>   1592 | cairo_scaled_font_set_user_data (cairo_scaled_font_t         *scaled_font,
>        | ^
>   1593 |                                  const cairo_user_data_key_t *key,
>   1594 |                                  void                        *user_data,
>   1595 |                                  cairo_destroy_func_t         destroy);
> 
> I have found the related change in upstream 7.0.0, which is removing the hb_font_destroy call altogether in
> https://github.com/harfbuzz/harfbuzz/commit/ab8b9b4
> so tried to apply that as well. There is a second change in the same commit (no pull request or discussion of
> the change as far as I can see) apparently linking a hb_blob_destroy in helper-cairo-ft.hh, but since that file
> does not even exist in 2.6.8 (or anything containing a similar function), I’ve no idea how to implement it there.
> 
> With that somewhat aggressive surgery, the package does build, and reactivating the test suite, passes all tests except check-symbols.py:
> 
> Checking that ./.libs/libharfbuzz.dylib does not expose internal symbols
> Checking that ./.libs/libharfbuzz.dylib has the same symbol list as ./harfbuzz.def
> ***
> ---
> ***************
> 
> *** 201,207 ****
> 
>    hb_ft_font_set_funcs
>    hb_ft_font_set_load_flags
>    hb_ft_font_unlock_face
> - hb_glib_blob_create
>    hb_glib_get_unicode_funcs
>    hb_glib_script_from_script
>    hb_glib_script_to_script
> --- 201,206 ——
> 
> But that function is sitting inside an #if GLIB_CHECK_VERSION(2,31,10) block in hb-glib.cc <http://hb-glib.cc/>
> and Fink has glib2 2.28.8, so seems unrelated and inevitable.

Another option might be to skip all the patching and just turn off 
making -Wcast-function-type-script an error.

See https://github.com/harfbuzz/harfbuzz/blob/main/src/hb.hh#L132 and 
https://github.com/harfbuzz/harfbuzz/commit/60c6b7786d9f4651ae2803bfc4ff4435b38a5bc6 
which is the commit immediately before the first one I sent that fixed 
src/hb-ft.cc

Hanspeter

-- 
The appearance of the concept of good and evil, interpreted by man as
his expulsion from Paradise, was probably a molecular disease that
turned out to be evolution.
   --E. Zuckerkandl and L. Pauling



_______________________________________________
Fink-users mailing list
[email protected]
List archive:
https://sourceforge.net/p/fink/mailman/fink-users/
Subscription management:
https://lists.sourceforge.net/lists/listinfo/fink-users