#41122: py-obspy obspy.taup.taup ImportError: libtaup not linked to libgfortran.a ----------------------------+-------------------------------- Reporter: andy.nowacki@… | Owner: macports-tickets@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 2.2.1 Keywords: | Port: py-obspy ----------------------------+-------------------------------- When trying to use py-obspy on OS X 10.8.5, one cannot load the obspy.taup module: {{{ $ sudo port install py27-obspy @gcc46 --- snip --- $ /opt/local/bin/python2.7 Python 2.7.5 (default, Aug 1 2013, 01:01:17) [GCC 4.2.1 Compatible Apple Clang 4.1 ((tags/Apple/clang-421.11.66))] on darwin Type "help", "copyright", "credits" or "license" for more information.
from obspy.taup import taup Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7 /site-packages/obspy/taup/taup.py", line 8, in <module> from obspy.taup.util import flibtaup as lib File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7 /site-packages/obspy/taup/util.py", line 34, in <module> raise ImportError(msg) ImportError: Could not load shared library for obspy.taup.
dlopen(/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7 /site-packages/obspy/taup/../lib/libtaup.so, 6): Symbol not found: __gfortran_compare_string Referenced from: /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7 /site-packages/obspy/taup/../lib/libtaup.so Expected in: flat namespace in /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7 /site-packages/obspy/taup/../lib/libtaup.so
}}}
This occurs because the Patch file for the port source:trunk/dports/python /py-obspy/files/patch-setup.py.diff contains the line: {{{ @@ -621,7 +620,6 @@ taupargs = [] lib = MyExtension(lib_name, - libraries=['gfortran'], extra_link_args=extra_link_args, sources=[src + 'emdlv.f', src + 'libtau.f', src + 'ttimes_subrout.f']) }}} Hence, during the final link stage, {{{/usr/bin/clang}}} does not link to libgfortran, hence the missing reference to {{{__gfortran_compare_string}}}. Removing removing this part of the diff does not help. This time, {{{/usr/bin/clang}}} cannot link to {{{-lgfortran}}} because it can't be found in the usual MacPorts location of {{{${prefix}/lib}}}: it is acutally in {{{${prefix}/lib/gcc${ver_no_dot}}}} (e.g., /opt/local/lib/gcc46 in may case). I'm afraid I know very little about portfiles and how MacPorts works in general, but I tried a number of things without success: 1. {{{$ sudo LIBRARY_PATH=/opt/local/lib/gcc46 install py27-obspy +gcc46}}} The rationale is that {{{setup.py}}} searches {{{LIBRARY_PATH}}} for directories to add in the final link stage. However, I could never get this to be picked up. 2. Editing the source:trunk/dports/python/py-obspy/Portfile to add {{{configure.env-append ${prefix}/lib/gcc${ver_no_dot}}}} 3. Adding {{{extra_env LIBRARY_PATH}}} to {{{$prefix/etc/macports/macports.conf}}}. In the end, I replaced the source:trunk/dports/python/py-obspy/files /patch-setup.py.diff with the attached file (pertinent bit below). {{{ @@ -621,7 +620,7 @@ taupargs = [] lib = MyExtension(lib_name, libraries=['gfortran'], - extra_link_args=extra_link_args, + extra_link_args=['-L/opt/local/lib/gcc46'], sources=[src + 'emdlv.f', src + 'libtau.f', src + 'ttimes_subrout.f']) }}} This is obviously not a satisfactory fix at all, but like I say, I don't know how to do this more generally. I hope this helps the maintainers or someone else more conversant with MacPorts to get obspy working 'out of the box' from here on. -- Ticket URL: <https://trac.macports.org/ticket/41122> MacPorts <http://www.macports.org/> Ports system for OS X