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 <rip...@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 <tbr...@virginia.edu> wrote: >>>> >>>> >>>>> From: Simon Urbanek <simon.urba...@r-project.org> >>>>> Date: March 3, 2010 8:32:52 AM MST >>>>> To: tbr...@virginia.edu >>>>> Cc: r-de...@stat.math.ethz.ch, r-b...@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 , tbr...@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@r-project.org mailing list >>> https://stat.ethz.ch/mailman/listinfo/r-devel >>> >>> >> >> ______________________________________________ >> R-devel@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel > > -- > Brian D. Ripley, rip...@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@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel