[Rd] Clash between 'Cairo' and 'EBImage' packages on Windows
Prof Brian Ripley
ripley at stats.ox.ac.uk
Wed Jul 23 12:21:29 CEST 2008
I updated one of by Windows' boxes to GTK 2.12.9, and replaced the
libcairo-2.dll in the Cairo binary distribution by that from GTK 2.12.9.
At that point Cairo and EBImage worked together, in either order.
I think Uwe may need to trigger a rebuild of his Cairo binary to pick up
Simon's updated libcairo-2.dll -- the existing binary is not compatible
with GTK 2.12.9.
On Tue, 22 Jul 2008, Prof Brian Ripley wrote:
> On Mon, 21 Jul 2008, Simon Urbanek wrote:
>
>> Brian,
>>
>> thanks for the analysis.
>>
>> On Jul 21, 2008, at 6:29 , Prof Brian Ripley wrote:
>>
>>> On Mon, 21 Jul 2008, Sklyar, Oleg (London) wrote:
>>>
>>>> EBImage is dynamically linked against GTK, which includes cairo
>>>> libraries, so those are installed along with GTK. Cairo seems to be
>>>> statically linking to libcairo.dll.a. I would assume that if it is
>>>
>>> That is an import library, so it is actually linked to libcairo-2.dll,
>>> which it ships.
>>>
>>>> linked statically it should not get confused with a shared library
>>>> present elsewhere in the path, but it looks like it does. I have no
>>>> solution for that because unlike Cairo I cannot not statically link
>>>> EBImage to GTK as it is not one library that I need, but a bunch of
>>>> those.
>>>>
>>>> On Linux you won't get this problem as it uses the same centrally
>>>> installed Cairo library.
>>>>
>>>> In a way it would be better, if Cairo relied on the gladewin32.sf.net
>>>> which normally provides GTK (and thus cairo libraries) for Windows and
>>>> linked dynamically, but probably to simplify user installations the
>>>> developers wanted to avoid this.
>>>
>>> It _is_ using dynamic loading, or there would be no conflict. From the
>>> names, it looks very like that it is using a DLL from gladewin32.
>>>
>>> The real issue looks rather like a versioning problem, that the cairo
>>> libraries installed as part of GTK and used by EBImage are way too old
>>> (cairo_pdf_surface_create was added at cairo 1.2, and cairo is at 1.6.4).
>>> So updating to the current GTK distribution may be all that is needed (and
>>> Henrik could also try replacing your GTK's libcairo-2.dll by that
>>> distributed with Cairo).
>>>
>>
>> For compatibility sake I have updated the libcairo binary to 1.6.4 (based
>> on GTK+ build), so if EBImage gets updated all should be well.
>
> EBImage relies on a user installation of GTK (AFAICS). Last night I updated
> my GTK to 2.12.9 and used that's libcairo-2.dll in Cairo. It all seemed to
> work.
>
>>>> There is not much I can do now about this, but I will follow the thread
>>>> if anybody comes up with an idea to change the code if possible
>>>
>>> The Cairo package (which ships DLLs) could rename them, as R itself does
>>> where it builds its own versions. Or it could link statically (if that
>>> works, which it does not for e.g. package XML).
>>
>> I'd rather not maintain my own build of libcairo for Windows since I don't
>> use it. I may consider renaming the DLL, but given that I'm not building it
>> from sources I'm not sure whether there is a trivial way to do that.
>
> If you are not building it yourself, then the only way is to use an editor on
> the DLL to change the embedded name. I wouldn't suggest you do that (I had
> thought you were building it yourself).
>
>>
>> Best,
>> Simon
>>
>>
>>> I don't really understand why this was posted to R-devel: it is not an R
>>> issue.
>>>
>>>
>>>> Dr Oleg Sklyar
>>>> Technology Group
>>>> Man Investments Ltd
>>>> +44 (0)20 7144 3803
>>>> osklyar at maninvestments.com
>>>>
>>>>> -----Original Message-----
>>>>> From: r-devel-bounces at r-project.org
>>>>> [mailto:r-devel-bounces at r-project.org] On Behalf Of Henrik Bengtsson
>>>>> Sent: 19 July 2008 19:26
>>>>> To: R-devel
>>>>> Subject: [Rd] Clash between 'Cairo' and 'EBImage' packages on Windows
>>>>>
>>>>> Hi,
>>>>>
>>>>> on Windows XP Pro with R version 2.7.1 Patched (2008-06-27
>>>>> r46012) the 'Cairo' and the 'EBImage' packages does not play
>>>>> well together.
>>>>>
>>>>> Loading EBImage before Cairo cause the following to happen:
>>>>>
>>>>> # Rterm --vanilla
>>>>>> library(EBImage);
>>>>>> library(Cairo)
>>>>> Error in inDL(x, as.logical(local), as.logical(now), ...) :
>>>>> unable to load shared library
>>>>> 'C:/PROGRA~1/R/R-2.7.1pat/library/Cairo/libs/Cai
>>>>> ro.dll':
>>>>> LoadLibrary failure: The specified procedure could not be found.
>>>>>
>>>>> Error : .onLoad failed in 'loadNamespace' for 'Cairo'
>>>>> Error: package/namespace load failed for 'Cairo'
>>>>>
>>>>> with a dialog titled 'Rterm.exe - Entry Point Not Found'
>>>>> saying 'The procedure entry point cairo_pdf_surface_create
>>>>> could not be located in the dynamic link library libcairo-2.dll'.
>>>>>
>>>>> Loading the packages in the reverse order works, but the
>>>>> Rterm seems unstable, e.g. calling q() immediately after will
>>>>> exit the R session without questions:
>>>>>
>>>>> # Rterm --vanilla
>>>>>> library(Cairo)
>>>>>> library(EBImage)
>>>>>> q()
>>>>> [Immediately back to the command line].
>>>>>
>>>>> I cannot reproduce the problem on R v2.7.1 on Ubuntu Hardy.
>>>>>
>>>>>> sessionInfo()
>>>>> R version 2.7.1 Patched (2008-06-27 r46012)
>>>>> i386-pc-mingw32
>>>>>
>>>>> locale:
>>>>> LC_COLLATE=English_United States.1252;LC_CTYPE=English_United
>>>>> States.1252;LC_MON ETARY=English_United
>>>>> States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252
>>>>>
>>>>>
>>>>> attached base packages:
>>>>> [1] stats graphics grDevices utils datasets methods base
>>>>>
>>>>> other attached packages:
>>>>> [1] EBImage_2.4.0 Cairo_1.4-2
>>>>>
>>>>> Cheers
>>>>>
>>>>> Henrik
>>>>>
>>>>> ______________________________________________
>>>>> R-devel at r-project.org mailing list
>>>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>>>>
>>>>
>>>>
>>>> **********************************************************************
>>>> The contents of this email are for the named addressee(s...{{dropped:22}}
>>>>
>>>> ______________________________________________
>>>> R-devel at r-project.org mailing list
>>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>>>
>>>
>>> --
>>> Brian D. Ripley, ripley at stats.ox.ac.uk
>>> Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
>>> University of Oxford, Tel: +44 1865 272861 (self)
>>> 1 South Parks Road, +44 1865 272866 (PA)
>>> Oxford OX1 3TG, UK Fax: +44 1865 272595
>>>
>>> ______________________________________________
>>> R-devel at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>>
>>>
>>
>> ______________________________________________
>> R-devel at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>
> --
> Brian D. Ripley, ripley at stats.ox.ac.uk
> Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
> University of Oxford, Tel: +44 1865 272861 (self)
> 1 South Parks Road, +44 1865 272866 (PA)
> Oxford OX1 3TG, UK Fax: +44 1865 272595
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
More information about the R-devel
mailing list