mypaint / libmypaint

libmypaint, a.k.a. "brushlib", is a library for making brushstrokes which is used by MyPaint and other projects.
http://mypaint.org
Other
308 stars 87 forks source link

issues with how libmypaint, libmypaint-gegl are linked #64

Open nphilipp opened 8 years ago

nphilipp commented 8 years ago

Hi there, during the review of the libmypaint package for Fedora, a couple of issues were found regarding how the libraries are linked:

libmypaint.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libmypaint-1.3.so.0.0.0 /lib64/libglib-2.0.so.0
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 gegl_buffer_get
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 g_object_unref
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 mypaint_tiled_surface_init
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 gegl_buffer_set
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 gegl_buffer_iterator_next
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 g_assertion_message_expr
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 g_return_if_fail_warning
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 gegl_node_new_child
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 g_object_new
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 gegl_buffer_get_format
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 gegl_node_new
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 gegl_malloc
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 g_object_ref
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 gegl_free
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 babl_format_get_bytes_per_pixel
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 babl_type
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 babl_format_new
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 mypaint_surface_ref
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 g_log
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 gegl_buffer_iterator_new
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 gegl_buffer_get_type
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 gegl_node_link
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 gegl_rectangle_bounding_box
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 g_type_check_instance_is_a
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 babl_component
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 g_type_check_instance_cast
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 gegl_buffer_set_extent
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 g_boxed_type_register_static
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 babl_model
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 g_object_get
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 mypaint_surface_unref
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 mypaint_tiled_surface_destroy
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 gegl_node_process
libmypaint.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmypaint-gegl.so.0.0.0 gegl_rectangle_set
libmypaint.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libmypaint-gegl.so.0.0.0 /lib64/libm.so.6
libmypaint.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libmypaint-gegl.so.0.0.0 /lib64/libpthread.so.0
1 packages and 0 specfiles checked; 0 errors, 37 warnings.

It looks like on the one hand, both libmypaint and libmypaint-gegl are unnecessarily linked against glib, and libm, libpthread, respectively and on the other that libmypaint-gegl should be additionally linked against libmypaint, gegl, babl, gobject and glib. I've looked into this a bit, but didn't find easily where to fix this myself.

QuLogic commented 8 years ago

This may be fixed by #50?

nphilipp commented 8 years ago

That seems to be the case as far as the undefined symbols in libmypaint-gegl go. I don't think it fixes that the libs are unnecessarily linked against glib, libpthread and the math lib.