[f2py] still wrapping SHTOOLS with f2py
Paul Anton Letnes
paul.anton.letnes at gmail.com
Wed May 11 06:49:08 EEST 2011
Hi,
still working on wrapping SHTOOLS with f2py. I have decided to write a wrapper fortran module with !f2py style directives in order to wrap SHTOOLS in a more general fashion. However, when I am trying to compile and link, I get in trouble with the parts of SHTOOLS that use the LAPACK routine dsysv:
% python shtools-test.py
Traceback (most recent call last):
File "shtools-test.py", line 4, in <module>
from pyshtools import pyshtools
ImportError: dlopen(/Users/paulanto/Code/SHTOOLS/src/pyshtools.so, 2): Symbol not found: _dsysv__
Referenced from: /Users/paulanto/Code/SHTOOLS/src/pyshtools.so
Expected in: flat namespace
in /Users/paulanto/Code/SHTOOLS/src/pyshtools.so
It would appear that an extra underscore is appended: _dsysv__
When I run nm on the library that I link to (checked using otool -L; ldd does the equivalent on Linux, I believe):
/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A % nm libLAPACK.dylib| grep -i dsysv
0000000000190a60 T _DSYSV
0000000000190cf0 T _DSYSVX
0000000000190cf0 T _DSYSVX_
0000000000190a60 T _DSYSV_
0000000000190a60 T _dsysv
0000000000190a60 T _dsysv_
0000000000190cf0 T _dsysvx
0000000000190cf0 T _dsysvx_
Aha, dsysv only has one trailing underscore. How can I fix this problem?
I see f2py spitting out this stuff:
Fortran f90 compiler: /opt/local/bin/gfortran-mp-4.4 -fPIC -fbounds-check -ftrapv -fno-automatic -Wall -Wuninitialized -O0 -pedantic -fimplicit-none -fno-second-underscore -fPIC -O3 -funroll-loops
But further down it does not include the -fno-second-underscore flag. See at the bottom of the e-mail for the full f2py log.
It would be great to get some help on this, so we can make one more great fortran library available to the python world! f2py is awesome!
Paul.
gfortran -c -fPIC -fbounds-check -ftrapv -fno-automatic -Wall -Wuninitialized -O0 -pedantic -fimplicit-none -fno-second-underscore pyshtools.f95
f2py -c -m pyshtools pyshtools.f95 shtools.o CilmPlus.o ComputeD0.o ComputeDG82.o ComputeDm.o DHaj.o djpi2.o FFTW3.o HilmGLQ.o MakeGrid2D.o GLQGridCoord.o MakeGridGLQ.o MakeGridPoint.o MakeMagGrid2D.o PlanetsConstants.o PlBar.o PlBar_d1.o PLegendre.o PLegendreA.o PLegendreA_d1.o PlmBar.o PlmBar_d1.o PlmIndex.o PlmSchmidt.o PlmSchmidt_d1.o PlSchmidt.o PlSchmidt_d1.o PreCompute.o PreGLQ.o Random.o ReadWisdom.o SHAdmitCorr.o SHBias.o SHBiasK.o SHConvertCoef.o SHExpandDH.o SHExpandGLQ.o SHFindLWin.o SHLocalizedAdmitCorr.o SHMultiply.o SHMultiTaperCSE.o SHMultiTaperSE.o SHPowerSpectra.o SHRead.o SHReadJPL.o SHReturnTapersM.o SHRotateCoef.o SHRotateRealCoef.o SHTOOLS.o SphericalCapCoef.o Wigner3j.o wl.o SHReadGRACE.o SHReadCHAMP.o MakeGeoidGrid.o MakeGridDH.o MakeCircleCoord.o SHSjkPG0.o SHReturnTapers.o SHSjkPG.o PlON.o PlON_d1.o PlmON.o PlmON_d1.o MakeGravGrid2D.o SHConfidence.o SHMagPowerSpectra.o SHExpandDHC.o MakeGridDHC.o SHExpandGLQC.o MakeGridGLQC.o SHBiasAdmitCorr.o SHCilmToVector.o YilmIndex.o ComputeDMap.o SHReturnTapersMap.o Curve2Mask.o EigValSym.o EigValVecSym.o EigValVecSymTri.o SHExpandLSQ.o SHMTDebias.o SHMTVarOpt0.o SHMTVarOpt.o -L/Users/paulanto/usr/local/lib -llapack -lfftw3 --fcompiler=gnu95 -DF2PY_REPORT_ON_ARRAY_COPY=1 --f90flags='-fPIC -fbounds-check -ftrapv -fno-automatic -Wall -Wuninitialized -O0 -pedantic -fimplicit-none -fno-second-underscore'
running build
running config_cc
unifing config_cc, config, build_clib, build_ext, build commands --compiler options
running config_fc
unifing config_fc, config, build_clib, build_ext, build commands --fcompiler options
running build_src
build_src
building extension "pyshtools" sources
f2py options: []
f2py:> /var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/src.macosx-10.6-x86_64-2.7/pyshtoolsmodule.c
creating /var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y
creating /var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/src.macosx-10.6-x86_64-2.7
Reading fortran codes...
Reading file 'pyshtools.f95' (format:free)
Post-processing...
Block: pyshtools
Block: pyshtools
imunit {}
In: :pyshtools:pyshtools.f95:pyshtools
get_parameters: got "invalid syntax (<string>, line 1)" on '(0.0_8, 1.0_8)'
Block: plmbar
Post-processing (stage 2)...
Block: pyshtools
Block: unknown_interface
Block: pyshtools
Block: plmbar
Building modules...
Building module "pyshtools"...
Constructing F90 module support for "pyshtools"...
Variables: imunit
Constructing wrapper function "pyshtools.plmbar"...
p = plmbar(lmax,z,[csphase,cnorm])
Wrote C/API module "pyshtools" to file "/var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/src.macosx-10.6-x86_64-2.7/pyshtoolsmodule.c"
Fortran 90 wrappers are saved to "/var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/src.macosx-10.6-x86_64-2.7/pyshtools-f2pywrappers2.f90"
adding '/var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/src.macosx-10.6-x86_64-2.7/fortranobject.c' to sources.
adding '/var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/src.macosx-10.6-x86_64-2.7' to include_dirs.
copying /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/f2py/src/fortranobject.c -> /var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/src.macosx-10.6-x86_64-2.7
copying /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/f2py/src/fortranobject.h -> /var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/src.macosx-10.6-x86_64-2.7
adding '/var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/src.macosx-10.6-x86_64-2.7/pyshtools-f2pywrappers2.f90' to sources.
build_src: building npy-pkg config files
running build_ext
customize UnixCCompiler
customize UnixCCompiler using build_ext
customize Gnu95FCompiler
Found executable /opt/local/bin/gfortran-mp-4.4
customize Gnu95FCompiler using build_ext
building 'pyshtools' extension
compiling C sources
C compiler: /usr/bin/gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -pipe -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes
creating /var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/var
creating /var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/var/folders
creating /var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/var/folders/5A
creating /var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI
creating /var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-
creating /var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y
creating /var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/src.macosx-10.6-x86_64-2.7
compile options: '-DF2PY_REPORT_ON_ARRAY_COPY=1 -I/var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/src.macosx-10.6-x86_64-2.7 -I/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/core/include -I/opt/local/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c'
gcc-4.2: /var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/src.macosx-10.6-x86_64-2.7/pyshtoolsmodule.c
gcc-4.2: /var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/src.macosx-10.6-x86_64-2.7/fortranobject.c
compiling Fortran 90 module sources
Fortran f77 compiler: /opt/local/bin/gfortran-mp-4.4 -Wall -ffixed-form -fno-second-underscore -fPIC -O3 -funroll-loops
Fortran f90 compiler: /opt/local/bin/gfortran-mp-4.4 -fPIC -fbounds-check -ftrapv -fno-automatic -Wall -Wuninitialized -O0 -pedantic -fimplicit-none -fno-second-underscore -fPIC -O3 -funroll-loops
Fortran fix compiler: /opt/local/bin/gfortran-mp-4.4 -Wall -ffixed-form -fno-second-underscore -fPIC -fbounds-check -ftrapv -fno-automatic -Wall -Wuninitialized -O0 -pedantic -fimplicit-none -fno-second-underscore -fPIC -O3 -funroll-loops
compile options: '-DF2PY_REPORT_ON_ARRAY_COPY=1 -I/var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/src.macosx-10.6-x86_64-2.7 -I/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/core/include -I/opt/local/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c'
extra options: '-J/var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/ -I/var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/'
gfortran-mp-4.4:f90: pyshtools.f95
compiling Fortran sources
Fortran f77 compiler: /opt/local/bin/gfortran-mp-4.4 -Wall -ffixed-form -fno-second-underscore -fPIC -O3 -funroll-loops
Fortran f90 compiler: /opt/local/bin/gfortran-mp-4.4 -fPIC -fbounds-check -ftrapv -fno-automatic -Wall -Wuninitialized -O0 -pedantic -fimplicit-none -fno-second-underscore -fPIC -O3 -funroll-loops
Fortran fix compiler: /opt/local/bin/gfortran-mp-4.4 -Wall -ffixed-form -fno-second-underscore -fPIC -fbounds-check -ftrapv -fno-automatic -Wall -Wuninitialized -O0 -pedantic -fimplicit-none -fno-second-underscore -fPIC -O3 -funroll-loops
compile options: '-DF2PY_REPORT_ON_ARRAY_COPY=1 -I/var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/src.macosx-10.6-x86_64-2.7 -I/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/core/include -I/opt/local/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c'
extra options: '-J/var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/ -I/var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/'
gfortran-mp-4.4:f90: /var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/src.macosx-10.6-x86_64-2.7/pyshtools-f2pywrappers2.f90
/opt/local/bin/gfortran-mp-4.4 -Wall -Wall -undefined dynamic_lookup -bundle /var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/src.macosx-10.6-x86_64-2.7/pyshtoolsmodule.o /var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/src.macosx-10.6-x86_64-2.7/fortranobject.o /var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/pyshtools.o /var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y/src.macosx-10.6-x86_64-2.7/pyshtools-f2pywrappers2.o shtools.o CilmPlus.o ComputeD0.o ComputeDG82.o ComputeDm.o DHaj.o djpi2.o FFTW3.o HilmGLQ.o MakeGrid2D.o GLQGridCoord.o MakeGridGLQ.o MakeGridPoint.o MakeMagGrid2D.o PlanetsConstants.o PlBar.o PlBar_d1.o PLegendre.o PLegendreA.o PLegendreA_d1.o PlmBar.o PlmBar_d1.o PlmIndex.o PlmSchmidt.o PlmSchmidt_d1.o PlSchmidt.o PlSchmidt_d1.o PreCompute.o PreGLQ.o Random.o ReadWisdom.o SHAdmitCorr.o SHBias.o SHBiasK.o SHConvertCoef.o SHExpandDH.o SHExpandGLQ.o SHFindLWin.o SHLocalizedAdmitCorr.o SHMultiply.o SHMultiTaperCSE.o SHMultiTaperSE.o SHPowerSpectra.o SHRead.o SHReadJPL.o SHReturnTapersM.o SHRotateCoef.o SHRotateRealCoef.o SHTOOLS.o SphericalCapCoef.o Wigner3j.o wl.o SHReadGRACE.o SHReadCHAMP.o MakeGeoidGrid.o MakeGridDH.o MakeCircleCoord.o SHSjkPG0.o SHReturnTapers.o SHSjkPG.o PlON.o PlON_d1.o PlmON.o PlmON_d1.o MakeGravGrid2D.o SHConfidence.o SHMagPowerSpectra.o SHExpandDHC.o MakeGridDHC.o SHExpandGLQC.o MakeGridGLQC.o SHBiasAdmitCorr.o SHCilmToVector.o YilmIndex.o ComputeDMap.o SHReturnTapersMap.o Curve2Mask.o EigValSym.o EigValVecSym.o EigValVecSymTri.o SHExpandLSQ.o SHMTDebias.o SHMTVarOpt0.o SHMTVarOpt.o -L/Users/paulanto/usr/local/lib -L/opt/local/lib/gcc44/gcc/x86_64-apple-darwin10/4.4.6 -llapack -lfftw3 -lgfortran -o ./pyshtools.so
running scons
Removing build directory /var/folders/5A/5AGb4GQfEAKf-5kSrBqG+++++TI/-Tmp-/tmpVLKc_Y
More information about the f2py-users
mailing list