Subject: Re: libfreeimage has undefined references

From: Efraim Flashner <[email-masked]>
Date: Sun, 22 Apr 2018 09:53:02 +0300

On Thu, Apr 19, 2018 at 12:14:32AM +0200, Ludovic Courtès wrote:
> Hello Efraim,
> 
> It seems that commit a5d4c96b8d90b8bb87e07bd6a7be78991db91bc9 left
> libfreeimage with some undefined references.  For instance, the
> ‘configure’ script of ‘guile-sly’ fails like this:
> 
> --8<---------------cut here---------------start------------->8---
> configure:3888: checking for FreeImage_GetVersion in -lfreeimage
> configure:3913: gcc -o conftest -g -O2   conftest.c -lfreeimage   >&5
> /gnu/store/lsbwqzbl17xvbp4clv2mlxmly2xkz219-freeimage-3.17.0/lib/libfreeimage.so: undefined reference to `PixelFormatLookup'
> /gnu/store/lsbwqzbl17xvbp4clv2mlxmly2xkz219-freeimage-3.17.0/lib/libfreeimage.so: undefined reference to `GUID_PKPixelFormat16bppRGB555'
> /gnu/store/lsbwqzbl17xvbp4clv2mlxmly2xkz219-freeimage-3.17.0/lib/libfreeimage.so: undefined reference to `GUID_PKPixelFormat16bppGray'
> /gnu/store/lsbwqzbl17xvbp4clv2mlxmly2xkz219-freeimage-3.17.0/lib/libfreeimage.so: undefined reference to `GUID_PKPixelFormat24bppRGB'
> /gnu/store/lsbwqzbl17xvbp4clv2mlxmly2xkz219-freeimage-3.17.0/lib/libfreeimage.so: undefined reference to `PKFormatConverter_Release'
> /gnu/store/lsbwqzbl17xvbp4clv2mlxmly2xkz219-freeimage-3.17.0/lib/libfreeimage.so: undefined reference to `GUID_PKPixelFormat8bppGray'
> /gnu/store/lsbwqzbl17xvbp4clv2mlxmly2xkz219-freeimage-3.17.0/lib/libfreeimage.so: undefined reference to `PKImageDecode_Create_WMP'
> /gnu/store/lsbwqzbl17xvbp4clv2mlxmly2xkz219-freeimage-3.17.0/lib/libfreeimage.so: undefined reference to `PKAllocAligned'
> /gnu/store/lsbwqzbl17xvbp4clv2mlxmly2xkz219-freeimage-3.17.0/lib/libfreeimage.so: undefined reference to `PKImageEncode_Create_WMP'
> /gnu/store/lsbwqzbl17xvbp4clv2mlxmly2xkz219-freeimage-3.17.0/lib/libfreeimage.so: undefined reference to `GUID_PKPixelFormat24bppBGR'
> /gnu/store/lsbwqzbl17xvbp4clv2mlxmly2xkz219-freeimage-3.17.0/lib/libfreeimage.so: undefined reference to `GUID_PKPixelFormatDontCare'
> /gnu/store/lsbwqzbl17xvbp4clv2mlxmly2xkz219-freeimage-3.17.0/lib/libfreeimage.so: undefined reference to `GUID_PKPixelFormat96bppRGBFloat'
> /gnu/store/lsbwqzbl17xvbp4clv2mlxmly2xkz219-freeimage-3.17.0/lib/libfreeimage.so: undefined reference to `PKImageEncode_SetGPSInfoMetadata_WMP'
> /gnu/store/lsbwqzbl17xvbp4clv2mlxmly2xkz219-freeimage-3.17.0/lib/libfreeimage.so: undefined reference to `PKFormatConverter_EnumConversions'
> /gnu/store/lsbwqzbl17xvbp4clv2mlxmly2xkz219-freeimage-3.17.0/lib/libfreeimage.so: undefined reference to `GUID_PKPixelFormat48bppRGB'
> /gnu/store/lsbwqzbl17xvbp4clv2mlxmly2xkz219-freeimage-3.17.0/lib/libfreeimage.so: undefined reference to `PKFreeAligned'
> /gnu/store/lsbwqzbl17xvbp4clv2mlxmly2xkz219-freeimage-3.17.0/lib/libfreeimage.so: undefined reference to `GUID_PKPixelFormatBlackWhite'
> /gnu/store/lsbwqzbl17xvbp4clv2mlxmly2xkz219-freeimage-3.17.0/lib/libfreeimage.so: undefined reference to `GUID_PKPixelFormat32bppBGRA'
> /gnu/store/lsbwqzbl17xvbp4clv2mlxmly2xkz219-freeimage-3.17.0/lib/libfreeimage.so: undefined reference to `GUID_PKPixelFormat32bppRGB'
> /gnu/store/lsbwqzbl17xvbp4clv2mlxmly2xkz219-freeimage-3.17.0/lib/libfreeimage.so: undefined reference to `GUID_PKPixelFormat64bppRGBA'
> /gnu/store/lsbwqzbl17xvbp4clv2mlxmly2xkz219-freeimage-3.17.0/lib/libfreeimage.so: undefined reference to `PKCodecFactory_CreateFormatConverter'
> /gnu/store/lsbwqzbl17xvbp4clv2mlxmly2xkz219-freeimage-3.17.0/lib/libfreeimage.so: undefined reference to `PKImageEncode_SetEXIFMetadata_WMP'
> /gnu/store/lsbwqzbl17xvbp4clv2mlxmly2xkz219-freeimage-3.17.0/lib/libfreeimage.so: undefined reference to `PKImageEncode_SetXMPMetadata_WMP'
> /gnu/store/lsbwqzbl17xvbp4clv2mlxmly2xkz219-freeimage-3.17.0/lib/libfreeimage.so: undefined reference to `GUID_PKPixelFormat128bppRGBAFloat'
> /gnu/store/lsbwqzbl17xvbp4clv2mlxmly2xkz219-freeimage-3.17.0/lib/libfreeimage.so: undefined reference to `GUID_PKPixelFormat32bppGrayFloat'
> /gnu/store/lsbwqzbl17xvbp4clv2mlxmly2xkz219-freeimage-3.17.0/lib/libfreeimage.so: undefined reference to `PKImageEncode_SetIPTCNAAMetadata_WMP'
> /gnu/store/lsbwqzbl17xvbp4clv2mlxmly2xkz219-freeimage-3.17.0/lib/libfreeimage.so: undefined reference to `GUID_PKPixelFormat16bppRGB565'
> collect2: error: ld returned 1 exit status
> configure:3913: $? = 1
> --8<---------------cut here---------------end--------------->8---
> 
> Any ideas?
> 
> Thanks,
> Ludo’.

Interestingly guile-sly on aarch64 doesn't find freeimage at all. In any
case, the same issue happens with emulation-station, and from this
not-related-at-all bug
https://github.com/openframeworks/openFrameworks/issues/4993 it looks
like they're all related to libjxr. `guix gc --references $(guix build
--no-grafts freeimage)' doesn't list libjxr, and adding it as a
propagated input doesn't magically fix it. libjxr seems to be abandoned
upstream. The easiest option might be to use the bundled libjxr but I'm
still looking at it.

-- 
Efraim Flashner   <[email-masked]>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted