Bug 34314

Summary: libgdiplus.so without API suffix is referenced by System.Imaging
Product: [Mono] Class Libraries Reporter: Matthias Mailänder <matthias>
Component: libgdiplusAssignee: Bugzilla <bugzilla>
Status: RESOLVED FIXED    
Severity: normal CC: mono-bugs+mono, pokorra.mailinglists
Priority: ---    
Version: 3.8.0   
Target Milestone: Untriaged   
Hardware: PC   
OS: Linux   
Tags: Is this bug a regression?: ---
Last known good build:

Description Matthias Mailänder 2015-09-26 02:32:21 UTC
This is a problem which seems to have existed since forever. The libraries with a proper so name like libgdiplus.so.0 libgdiplus.so.0.0.0 aren't referenced. Instead libgdiplus.so is referenced by the System.Imaging function. Packaging libgdiplus properly (putting *.so files without suffix into -devel packages) results in all applications requiring users to install the -devel package which causes confusion. This will also be a problem when libgdiplus.so.1 appears, because they will conflict even though modern Linux systems allow libraries to be installed next to each other to avoid DLL hell.

Downstream issue: https://bugzilla.suse.com/show_bug.cgi?id=944754
Comment 1 Timotheus Pokorra 2016-01-02 17:51:39 UTC
I did some investigation into this:
search the code for libgdiplus_install_loc:
https://github.com/mono/mono/search?utf8=%E2%9C%93&q=libgdiplus_install_loc

You find data/config.in and configure.ac, that is where the name of the libgdiplus file is determined. Unfortunately it only uses a constant for libsuffix.

I checked, in Fedora 22 a patch was used to hardcode the reference to libgdiplus.so.0 in the config.in file: http://pkgs.fedoraproject.org/cgit/mono.git/tree/mono-281-libgdiplusconfig.patch?h=f22
Comment 2 Matthias Mailänder 2016-01-03 21:39:23 UTC
I submitted a patch https://github.com/mono/mono/pull/2394 Would have saved me a lot of trouble if you had done that 5 years ago. :)