[Bioc-devel] xps build problem on veracruz2

cstrato cstrato at aon.at
Thu Apr 20 19:53:28 CEST 2017


Dear Herve,

Thank you for your efforts to try to install xps. I am glad to hear that 
you could build ROOT 5 from source.

It's a pity that Apple does no longer allow the use of 
DYLD_LIBRARY_PATH. This seems to break the code of a lot of people (when 
googling around).

I will try to change the build process and will see if I succeed. 
However, at the moment I have a couple of questions:


1, Is there any reason that you do not want to 'csrutil disable'?


2, It is easy to delete the test for DYLD_LIBRARY_PATH in my 
'configure.in' file, however, I have also to change the 'Makefile'.

Since you say that the problem can be solved by adding the -rpath flag 
when linking, I assume that I have to change  the following line in my 
'Makefile':
		$(LD) -bundle $(LDFLAGS) $^ $(GLIBS) $(MYLIBS) \
		   $(OutPutOpt) $(subst .$(DllSuf),.so,$@)

Since I am not familiar with -rpath can you give me a hint how to change it?


3, There is a Wikipedia explanation for '-rpath', see:
https://en.wikipedia.org/wiki/Rpath

Interestingly, there is the following line:

'Instead of specifying the -rpath to the linker, the environment 
variable LD_RUN_PATH can be set to the same effect.'

Do you think that using LD_RUN_PATH would solve the problem?
If yes, then how?


4, Googling for the DYLD_LIBRARY_PATH problem I have also found the 
following discussion:
https://forums.macrumors.com/threads/is-it-ok-to-use-dyld_library_path-on-mac-os-x-and-what%C2%92s-the-dynamic-library-search.956258/

There, one answer mentioned:
'Also, rpath is a good idea. Also see install_name_tool, which can 
change the load paths of libraries.'

Doing a search for 'install_name_tool' I found:
http://stackoverflow.com/questions/2985315/using-install-name-tool-whats-going-wrong

There, one answer mentioned (see also $man install_name_tool):
'Having experimented more: install_name_tool -id newname file will do 
the trick.'

See also: http://qin.laya.com/tech_coding_help/dylib_linking.html


Do you think that either using the environment variable LD_RUN_PATH or 
using 'install_name_tool' could solve the problem without having to use 
'-rpath'?


Thank you in advance.
Best regards,
Christian



On 04/19/17 22:51, Hervé Pagès wrote:
> Hi Christian,
>
> So I installed ROOT 5 from source on veracruz2. It's in
> /usr/local/root.
>
> However, Apple's SIP (System Integrity Protection, new and
> enabled by default on El Capitan) is getting in the way when
> trying to install xps. That's because xps configure and build
> process relies on DYLD_LIBRARY_PATH. Problem is that this
> environment variable (and any other variables that control
> dynamic loading) is not inherited by child processes when SIP
> is on:
>
> veracruz2:~ biocbuild$ if test "${DYLD_LIBRARY_PATH}"; then echo 'yep!';
> else echo 'nope!'; fi
> yep!
>
> veracruz2:~ biocbuild$ sh
> sh-3.2$ if test "${DYLD_LIBRARY_PATH}"; then echo 'yep!'; else echo
> 'nope!'; fi
> nope!
>
> That breaks xps configure script:
>
> veracruz2:~ biocbuild$ export LD_LIBRARY_PATH=$DYLD_LIBRARY_PATH
>
> veracruz2:~ biocbuild$ echo $LD_LIBRARY_PATH
> /usr/local/mysql/lib:/usr/local/root/lib/root:/ImageMagick-7.0.5/lib:/usr/local/ensembl-vep/htslib
>
>
> veracruz2:~ biocbuild$ R CMD INSTALL xps
> * installing to library
> ‘/Library/Frameworks/R.framework/Versions/3.4/Resources/library’
> * installing *source* package ‘xps’ ...
> checking for gcc... clang
> checking for C compiler default output file name... a.out
> checking whether the C compiler works... yes
> checking whether we are cross compiling... no
> checking for suffix of executables...
> checking for suffix of object files... o
> checking whether we are using the GNU C compiler... yes
> checking whether clang accepts -g... yes
> checking for clang option to accept ANSI C... none needed
> checking how to run the C preprocessor... clang -E
> checking for gcc... (cached) clang
> checking whether we are using the GNU C compiler... (cached) yes
> checking whether clang accepts -g... (cached) yes
> checking for clang option to accept ANSI C... (cached) none needed
> found ROOT version 5.34/36 in directory /usr/local/root
>
> xps configuration error:
>
>    You must set the shell variable LD_LIBRARY_PATH to the
>    directory where ROOT resides and re-run R CMD INSTALL
>    e.g., (using Bourne shell syntax):
>
>       export "LD_LIBRARY_PATH=$ROOTSYS/lib:$LD_LIBRARY_PATH"
>       R CMD INSTALL xps
>
>    Please consult the README file for more information
>
> ERROR: configuration failed for package ‘xps’
> * removing
> ‘/Library/Frameworks/R.framework/Versions/3.4/Resources/library/xps’
> * restoring previous
> ‘/Library/Frameworks/R.framework/Versions/3.4/Resources/library/xps’
>
> That also breaks the dynlib mechanism because, after I managed to
> produce xps.so, it turns out that this shared object is linked to
> the ROOT libraries via the @rpath mechanism:
>
> veracruz2:src biocbuild$ otool -L xps.so
> xps.so:
>     xps.so (compatibility version 0.0.0, current version 0.0.0)
>     @rpath/libGui.so (compatibility version 0.0.0, current version 0.0.0)
>     @rpath/libCore.so (compatibility version 0.0.0, current version 0.0.0)
>     @rpath/libCint.so (compatibility version 0.0.0, current version 0.0.0)
>     @rpath/libRIO.so (compatibility version 0.0.0, current version 0.0.0)
>     @rpath/libNet.so (compatibility version 0.0.0, current version 0.0.0)
>     @rpath/libHist.so (compatibility version 0.0.0, current version 0.0.0)
>     @rpath/libGraf.so (compatibility version 0.0.0, current version 0.0.0)
>     @rpath/libGraf3d.so (compatibility version 0.0.0, current version
> 0.0.0)
>     @rpath/libGpad.so (compatibility version 0.0.0, current version 0.0.0)
>     @rpath/libTree.so (compatibility version 0.0.0, current version 0.0.0)
>     @rpath/libRint.so (compatibility version 0.0.0, current version 0.0.0)
>     @rpath/libPostscript.so (compatibility version 0.0.0, current
> version 0.0.0)
>     @rpath/libMatrix.so (compatibility version 0.0.0, current version
> 0.0.0)
>     @rpath/libPhysics.so (compatibility version 0.0.0, current version
> 0.0.0)
>     @rpath/libMathCore.so (compatibility version 0.0.0, current version
> 0.0.0)
>     @rpath/libThread.so (compatibility version 0.0.0, current version
> 0.0.0)
>     /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
> version 1226.10.1)
>     @rpath/libGed.so (compatibility version 0.0.0, current version 0.0.0)
>     @rpath/libTreePlayer.so (compatibility version 0.0.0, current
> version 0.0.0)
>     @rpath/libTreeViewer.so (compatibility version 0.0.0, current
> version 0.0.0)
>     /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current
> version 120.1.0)
>
> so it can't be loaded in R:
>
>> dyn.load("xps.so")
> Error in dyn.load("xps.so") :
>   unable to load shared object
> '/Users/biocbuild/bbs-3.5-bioc/xps/src/xps.so':
>   dlopen(/Users/biocbuild/bbs-3.5-bioc/xps/src/xps.so, 6): Library not
> loaded: @rpath/libGui.so
>   Referenced from: /Users/biocbuild/bbs-3.5-bioc/xps/src/xps.so
>   Reason: image not found
>
> because R has no access to DYLD_LIBRARY_PATH:
>
>> Sys.getenv("DYLD_LIBRARY_PATH")
> [1] ""
>
> This can be addressed by adding the following flag when linking:
>
>   -rpath $(shell $(ROOTCONFIG) --prefix)/lib
>
> Do you think you can revisit xps configure and build process? Make sure
> you test it on a machine where SIP is enabled.
>
> Thanks,
> H.
>
>

 >>>  snip >>>

>>>>>>>>>>>
>>>>>>>>>>> On 03/23/17 17:47, Hervé Pagès wrote:
>>>>>>>>>>>> Hi Christian,
>>>>>>>>>>>>
>>>>>>>>>>>> The CRAN folks are currently experimenting with clang 4.0.0 for
>>>>>>>>>>>> producing the Mac binaries of R and CRAN packages so we are
>>>>>>>>>>>> using
>>>>>>>>>>>> the same on veracruz2. This is a version of clang that is
>>>>>>>>>>>> ahead of
>>>>>>>>>>>> what's in XCode 8.x or XCode 7.x. So I guess that means we'll
>>>>>>>>>>>> have
>>>>>>>>>>>> to compile ROOT from source on veracruz2.
>>>>>>>>>>>>
>>>>>>>>>>>> BTW any reason not to make xps work with ROOT 6?
>>>>>>>>>>>>
>>>>>>>>>>>> Cheers,
>>>>>>>>>>>> H.
>>>>>>>>>>>>
>>>>>>>>>>>> On 03/23/2017 07:28 AM, cstrato wrote:
>>>>>>>>>>>>> Dear Valerie,
>>>>>>>>>>>>>
>>>>>>>>>>>>> I have seen that you have set up a new Mac server, veracruz2,
>>>>>>>>>>>>> running El
>>>>>>>>>>>>> Capitan.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Although the development version of xps does even run on
>>>>>>>>>>>>> Mac OS
>>>>>>>>>>>>> Sierra,
>>>>>>>>>>>>> one issue still remains the same:
>>>>>>>>>>>>>
>>>>>>>>>>>>> You need to install the latest ROOT version 5, since xps does
>>>>>>>>>>>>> not
>>>>>>>>>>>>> run
>>>>>>>>>>>>> with ROOT 6!
>>>>>>>>>>>>>
>>>>>>>>>>>>> So you need to install on veracruz2 the same root version that
>>>>>>>>>>>>> you
>>>>>>>>>>>>> have
>>>>>>>>>>>>> installed on toluca2 running Maverics, i.e.
>>>>>>>>>>>>> root_v5.34.36.macosx64-10.11-clang70.dmg
>>>>>>>>>>>>>
>>>>>>>>>>>>> However, if you have installed on El Capitan XCode 8.x
>>>>>>>>>>>>> instead of
>>>>>>>>>>>>> XCode
>>>>>>>>>>>>> 7.x, then you need to compile ROOT from source, i.e.:
>>>>>>>>>>>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__root.cern.ch_download_root-5Fv5.34.36.source.tar.gz&d=DwICAg&c=eRAMFD45gAfqt84VtBcfhQ&r=BK7q3XeAvimeWdGbWY_wJYbW0WYiZvSXAJJKaaPhzWA&m=q9mk6yIytaNZlSdiLX_dFwchX8Tb7ra6x3WBBNIcs2o&s=Lz7YkqZ3XwjRsYIXVTbSvbDvTM-jTyoWvoVSa1PdBDw&e=
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> The README file of xps does explain how to compile ROOT for
>>>>>>>>>>>>> Sierra. This
>>>>>>>>>>>>> should also be valid for El Capitan running XCode 8.x.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thank you in advance.
>>>>>>>>>>>>> Best regards,
>>>>>>>>>>>>> Christian
>>>>>>>>>>>>> _._._._._._._._._._._._._._._._._._
>>>>>>>>>>>>> C.h.r.i.s.t.i.a.n   S.t.r.a.t.o.w.a
>>>>>>>>>>>>> V.i.e.n.n.a           A.u.s.t.r.i.a
>>>>>>>>>>>>> e.m.a.i.l:        cstrato at aon.at
>>>>>>>>>>>>> _._._._._._._._._._._._._._._._._._
>>>>>>>>>>>>>
>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>> Bioc-devel at r-project.org mailing list
>>>>>>>>>>>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__stat.ethz.ch_mailman_listinfo_bioc-2Ddevel&d=DwICAg&c=eRAMFD45gAfqt84VtBcfhQ&r=BK7q3XeAvimeWdGbWY_wJYbW0WYiZvSXAJJKaaPhzWA&m=q9mk6yIytaNZlSdiLX_dFwchX8Tb7ra6x3WBBNIcs2o&s=0bNMm-aoHuwWs9yBRjyGHTxT0y3UceNADHgMjtosTWU&e=
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Hervé Pagès
>>>>>>>>>>
>>>>>>>>>> Program in Computational Biology
>>>>>>>>>> Division of Public Health Sciences
>>>>>>>>>> Fred Hutchinson Cancer Research Center
>>>>>>>>>> 1100 Fairview Ave. N, M1-B514
>>>>>>>>>> P.O. Box 19024
>>>>>>>>>> Seattle, WA 98109-1024
>>>>>>>>>>
>>>>>>>>>> E-mail: hpages at fredhutch.org
>>>>>>>>>> Phone:  (206) 667-5791
>>>>>>>>>> Fax:    (206) 667-1319
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Bioc-devel at r-project.org mailing list
>>>>>>>>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__stat.ethz.ch_mailman_listinfo_bioc-2Ddevel&d=DwIF-g&c=eRAMFD45gAfqt84VtBcfhQ&r=TF6f93hjWmgMzjqP9F3thRifibmFvfjc5Ae-bzNwDGo&m=WB1ofcLb-W4SN6VNAgoSRdgRXQRPaelptAH2g0Ur7q8&s=IDfsJGqV_D7hzqLryd27eoZNIuiAIfSNATUnxMy61oo&e=
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>
>>>
>



More information about the Bioc-devel mailing list