Gentoo Archives: gentoo-science

From: fbissey@××××××××××××.nz
To: gentoo-science@l.g.o
Subject: [gentoo-science] new blas infrastructure on OS X prefix
Date: Fri, 09 Sep 2011 02:56:41
Message-Id: 20110909145107.4cgssok0gw0kw8kc@webmail.slingshot.co.nz
In Reply to: Re: [gentoo-science] new blas infrastructure and prefix by fbissey@slingshot.co.nz
Hi,

I have to sadly report that currently the new blas infrastructure from the
science overlay is broken on at least OS X prefix. For example sage doesn't
start with the following message:
sage
----------------------------------------------------------------------
| Sage Version 4.7.2.alpha2, Release Date: 2011-08-24                |
| Type notebook() for the GUI, and license() for information.        |
----------------------------------------------------------------------
**********************************************************************
*                                                                    *
* Warning: this is a prerelease version, and it may be unstable.     *
*                                                                    *
**********************************************************************
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)

/Users/frb15/Desktop/Gentoo/usr/lib/python2.7/site-packages/IPython/ipmaker.pyc
in force_import(modname, force_reload)
      61         reload(sys.modules[modname])
      62     else:
---> 63         __import__(modname)
      64
      65

/Users/frb15/Desktop/Gentoo/usr/bin/ipy_profile_sage.py in ()
       5     preparser(True)
       6
----> 7     import sage.all_cmdline
       8     sage.all_cmdline._init_cmdline(globals())
       9

/Users/frb15/Desktop/Gentoo/usr/lib/python2.7/site-packages/sage/all_cmdline.py
in ()
      12 try:
      13
---> 14     from sage.all import *
      15     from sage.calculus.predefined import x
      16     preparser(on=True)

/Users/frb15/Desktop/Gentoo/usr/lib/python2.7/site-packages/sage/all.py in ()
      73 from time                import sleep
      74
---> 75 from sage.misc.all       import *         # takes a while
      76
      77 from sage.misc.sh import sh

/Users/frb15/Desktop/Gentoo/usr/lib/python2.7/site-packages/sage/misc/all.py 
in
()
      79 from func_persist import func_persist
      80
---> 81 from functional import (additive_order,
      82                         sqrt as numerical_sqrt,
      83                         arg,

/Users/frb15/Desktop/Gentoo/usr/lib/python2.7/site-packages/sage/misc/functional.py
in ()
      36
      37
---> 38 from sage.rings.complex_double import CDF
      39 from sage.rings.real_double import RDF, RealDoubleElement
      40

ImportError:
dlopen(/Users/frb15/Desktop/Gentoo/usr/lib/python2.7/site-packages/sage/rings/complex_double.bundle,
2): Symbol not found: _cblas_caxpy
   Referenced from: /Users/frb15/Desktop/Gentoo/usr/lib/libgsl.0.dylib
   Expected in: dynamic lookup

The key word is dynamic lookup. On OS X most library have an install_name that
is losely speaking similar to a rpath. Library declare their install_name and
the install_name of all the libraries they depend on. But you can use "dynamic
look up" to get the kind of behavior you would expect on linux. For 
some reason
switching to the new infrastructure break the dynamic look up of cblas 
for gsl,
and probably scipy and other. I don't know if it is limited to python 
extension
(in OS X speak bundles, on linux they appear as .so but in fact they may have
more in common with plugins).

I also don't know if it is broken on other prefix, I suspect linux 
prefixes are
OK.

Francois