[Rd] (PR#14226) -- Re: libgfortran misplaced in Mac OS X R install

Michael Spiegel ms6ep at cs.virginia.edu
Tue Mar 9 04:03:42 CET 2010


Thank you both for the advice.  It sounds like we have a solution for
our next binary release of the beta package.

--Michael

On Thu, Mar 4, 2010 at 2:44 PM, Prof Brian Ripley <ripley at stats.ox.ac.uk> wrote:
> Another possibility is to link statically to libgfortran.  That has pros and
> cons, but for libgfortran not many cons apart from space for multiple copies
> in sundry packages (and is what is done on Windows, BTW).
>
> There are several ways to arrange that.  As far as I recall I temporarily
> removed /usr/local/lib/libgfortran*.dylib: another way is to edit FLIBS in
> Makeconf (but then you do need to know which copies of that file you need to
> edit).
>
> As far as I know we don't document in the standard manuals how to build
> distributable binary Mac packages, and perhaps we should do so in due course
> (or at least point at where the information can be found).
>
> On Thu, 4 Mar 2010, Simon Urbanek wrote:
>
>> Hi Michael,
>>
>> On Mar 3, 2010, at 12:01 , Michael Spiegel wrote:
>>
>>> I am the guy who compiles the OpenMx binaries.  We would be delighted to
>>> place our package on CRAN, once the project is stable enough so that we are
>>> comfortable releasing it to the larger public.  Let's try to track down
>>> where I made a mistake.  Our Makevars.in file contains the line:
>>>
>>> PKG_LIBS=$(FLIBS) $(BLAS_LIBS) $(LAPACK_LIBS)
>>>
>>> In addition, on the build machine I noticed that a copy of
>>> libgfortran.2.dylib exists at /usr/local/lib.  I believe the Xcode install
>>> placed a copy of it there.
>>
>> No, it is part of the GNU Fortran installation. Anything you compile with
>> a Fortran requires that you have that Fortran installed at run time, because
>> Fortran uses its own run-time libraries (if the Fortran you compiled with
>> used dynamic libraries). This implies that if you distribute your package
>> you have to tell users to install the same Fortran you used to compile it.
>>
>> However, unlike other unices Mac users don't necessarily have development
>> tools installed, so on CRAN we make an effort to modify the binaries such
>> that they work even without the tools they have been compiled with. There
>> are several possible approaches, but since R itself already uses the same
>> Fortran, we ship a copy of the Fortran libraries inside R and modify
>> packages such that they use it instead of the one from dev tools (see below
>> for details).
>>
>>
>>> To create the binary release, I run  R CMD INSTALL --build.
>>
>> That is not sufficient to create a binary of your package, because it
>> contains a configure script (this is unrelated to the above - see R-admin
>> 2.6). What you want to use is something like this (assuming R 2.10.1 Leopard
>> build and Fortran from CRAN):
>>
>> R --arch=i386 CMD INSTALL OpenMx_0.2.9-1147.tar.gz
>> R --arch=x86_64 CMD INSTALL --libs-only OpenMx_0.2.9-1147.tar.gz
>> R --arch=ppc CMD INSTALL --libs-only OpenMx_0.2.9-1147.tar.gz
>> cd /Library/Frameworks/R.framework/Versions/2.10/Resources/library
>>
>> # fix the Fortran paths to point to R 2.10 instead
>> for lib in `ls OpenMx/libs/*/*.so`; do
>> install_name_tool -change /usr/local/lib/libgfortran.2.dylib \
>>
>>  /Library/Frameworks/R.framework/Versions/2.10/Resources/lib/libgfortran.2.dylib
>> \
>>  $lib
>> done
>>
>> # change permissions for distribution
>> sudo chown -Rh root:admin OpenMx
>> sudo chmod -R g+w OpenMx
>>
>> # pack it up
>> tar fvcz ~/OpenMx_0.2.9-1147.tgz OpenMx
>>
>>
>> You can check that you have the correct paths using otool -L:
>>
>> ginaz:library$ otool -L OpenMx/libs/*/*.so
>> OpenMx/libs/i386/OpenMx.so:
>>        OpenMx.so (compatibility version 0.0.0, current version 0.0.0)
>>
>>  /Library/Frameworks/R.framework/Versions/2.10/Resources/lib/libgfortran.2.dylib
>> (compatibility version 3.0.0, current version 3.0.0)
>>
>>  /Library/Frameworks/R.framework/Versions/2.10/Resources/lib/libRblas.dylib
>> (compatibility version 0.0.0, current version 0.0.0)
>>
>>  /Library/Frameworks/R.framework/Versions/2.10/Resources/lib/libRlapack.dylib
>> (compatibility version 2.10.0, current version 2.10.1)
>>
>>  /Library/Frameworks/R.framework/Versions/2.10/Resources/lib/libR.dylib
>> (compatibility version 2.10.0, current version 2.10.1)
>>
>>  /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
>> (compatibility version 150.0.0, current version 476.19.0)
>>        /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current
>> version 1.0.0)
>>        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
>> version 111.1.4)
>>        /System/Library/Frameworks/vecLib.framework/Versions/A/vecLib
>> (compatibility version 1.0.0, current version 242.0.0)
>> OpenMx/libs/ppc/OpenMx.so:
>>        OpenMx.so (compatibility version 0.0.0, current version 0.0.0)
>>
>>  /Library/Frameworks/R.framework/Versions/2.10/Resources/lib/libgfortran.2.dylib
>> (compatibility version 3.0.0, current version 3.0.0)
>>
>>  /Library/Frameworks/R.framework/Versions/2.10/Resources/lib/libRblas.dylib
>> (compatibility version 0.0.0, current version 0.0.0)
>>
>>  /Library/Frameworks/R.framework/Versions/2.10/Resources/lib/libRlapack.dylib
>> (compatibility version 2.10.0, current version 2.10.1)
>>
>>  /Library/Frameworks/R.framework/Versions/2.10/Resources/lib/libR.dylib
>> (compatibility version 2.10.0, current version 2.10.1)
>>
>>  /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
>> (compatibility version 150.0.0, current version 476.19.0)
>>        /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current
>> version 1.0.0)
>>        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
>> version 111.1.4)
>>        /System/Library/Frameworks/vecLib.framework/Versions/A/vecLib
>> (compatibility version 1.0.0, current version 242.0.0)
>> OpenMx/libs/x86_64/OpenMx.so:
>>        OpenMx.so (compatibility version 0.0.0, current version 0.0.0)
>>
>>  /Library/Frameworks/R.framework/Versions/2.10/Resources/lib/libgfortran.2.dylib
>> (compatibility version 3.0.0, current version 3.0.0)
>>
>>  /Library/Frameworks/R.framework/Versions/2.10/Resources/lib/libRblas.dylib
>> (compatibility version 0.0.0, current version 0.0.0)
>>
>>  /Library/Frameworks/R.framework/Versions/2.10/Resources/lib/libRlapack.dylib
>> (compatibility version 2.10.0, current version 2.10.1)
>>
>>  /Library/Frameworks/R.framework/Versions/2.10/Resources/lib/libR.dylib
>> (compatibility version 2.10.0, current version 2.10.1)
>>
>>  /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
>> (compatibility version 150.0.0, current version 476.19.0)
>>        /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current
>> version 1.0.0)
>>        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
>> version 111.1.4)
>>        /System/Library/Frameworks/vecLib.framework/Versions/A/vecLib
>> (compatibility version 1.0.0, current version 242.0.0)
>>
>>
>> If you are dealing with only one R version, you can change the ID of your
>> Fortran library instead of touching the package files:
>>
>> install_name_tool -id \
>>
>>  /Library/Frameworks/R.framework/Versions/2.10/Resources/lib/libgfortran.2.dylib
>> /usr/local/lib/libgfortran.2.0.0.dylib
>>
>> Note, however, that this will lead to (possibly silent) errors if you
>> forget to change it when switching to another R version, so I prefer to fix
>> the package instead.
>>
>> Cheers,
>> Simon
>>
>>
>>> The beta test users install the package using the following script:
>>> http://openmx.psyc.virginia.edu/getOpenMx.R.
>>>
>>
>>
>>
>>>
>>> On Wed, Mar 3, 2010 at 9:48 AM, Tim Brick <tbrick at virginia.edu> wrote:
>>>>
>>>>
>>>>> From: Simon Urbanek <simon.urbanek at r-project.org>
>>>>> Date: March 3, 2010 8:32:52 AM MST
>>>>> To: tbrick at virginia.edu
>>>>> Cc: r-devel at stat.math.ethz.ch, R-bugs at r-project.org
>>>>> Subject: Re: [Rd] libgfortran misplaced in Mac OS X R install
>>>>> (PR#14226)
>>>>>
>>>>> This is not an R bug so please don't abuse R-bugs. It is likely a bug
>>>>> in the way OpenMx binaries are distributed by someone (you didn't even say
>>>>> where you got them from) - OpenMx is not even on CRAN so take that to
>>>>> whoever gave you the binaries. On CRAN we use the correct paths.
>>>>>
>>>>> Cheers,
>>>>> Simon
>>>>>
>>>>>
>>>>> On Mar 2, 2010, at 11:45 , tbrick at virginia.edu wrote:
>>>>>
>>>>>> Full_Name: Timothy Brick
>>>>>> Version: 2.10
>>>>>> OS: Mac OS X (seen on both 10.6 and 10.5)
>>>>>> Submission from: (NULL) (63.255.24.5)
>>>>>>
>>>>>>
>>>>>> When using install.packages in R on Mac OS X, packages that require
>>>>>> gfortran
>>>>>> throws an error (Example below from installation of OpenMx package):
>>>>>>
>>>>>> Loading required package: OpenMx
>>>>>> Error in dyn.load(file, DLLpath = DLLpath, ...) :
>>>>>> unable to load shared library
>>>>>>
>>>>>> '/Library/Frameworks/R.framework/Resources/library/OpenMx/libs/i386/OpenMx.so':
>>>>>>
>>>>>> dlopen(/Library/Frameworks/R.framework/Resources/library/OpenMx/libs/i386/OpenMx.so,
>>>>>> 6): Library not loaded: /usr/local/lib/libgfortran.2.dylib
>>>>>> Referenced from:
>>>>>> /Library/Frameworks/R.framework/Resources/library/OpenMx/libs/i386/OpenMx.so
>>>>>> Reason: image not found
>>>>>>
>>>>>> libgfortran.2.dylib does exist, but in
>>>>>>
>>>>>> /Library/Frameworks/R.framework/Versions/2.10/Resouces/lib/libgfortran.2.dylib
>>>>>> (or /2.9/, depending on version installed).
>>>>>>
>>>>>> A workaround at present involves creating a symbolic link from the
>>>>>> above file to
>>>>>> /usr/local/lib/libgfortran.2.dylib, however this requires sudo access
>>>>>> and is
>>>>>> confusing for novice users.
>>>>>>
>>>>>> There is more discussion of this bug as it relates to OpenMx at:
>>>>>> http://openmx.psyc.virginia.edu/thread/316
>>>>>>
>>>>>> Posts on other forums indicate a similar issue with other packages
>>>>>> including
>>>>>> vegan and lme4:
>>>>>>
>>>>>> http://r-forge.r-project.org/forum/forum.php?thread_id=728&forum_id=194
>>>>>> https://stat.ethz.ch/pipermail/r-sig-mac/2009-May/006210.html
>>>>>>
>>>>>
>>>>> Those are very old posts and those were temporary issues in the CRAN
>>>>> build system that have been promptly resolved.
>>>>>
>>>>>
>>>>
>>>>
>>>
>>> ______________________________________________
>>> 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
>



More information about the R-devel mailing list