Skip to content

Check (and probably fix) test module linkage on Mac OS #3

Closed

Description

@TallJimbo

Experience from other projects suggests that just using LoadableModule isn't enough to compile and link a Python module on Mac OS. Need to test what we've done here and probably fix it.

Activity

  1. Kameshkk commented on Apr 28, 2012

    @Kameshkk

    When I build Boost.Numpy on OS X 10.6, the targets get built fine, but the tests fail.
    The shared libraries in libs/numpy/test/ cannot be imported in Python, and I get a module-not-found error.

    The executables in libs/numpy/example work fine though.

  2. Kameshkk commented on Apr 28, 2012

    @Kameshkk

    ...a quick note:

    the libraries get built in libs/numpy/test/ without any extension (no .so). I was mucking around in that directory - and tried adding a .so to the files (e.g. ndarray_mod.so instead of ndarray_mod). Calling ndarray.py from the base directory worked fine. I got messages like :

    In [7]: %run libs/numpy/test/ndarray.py

    .......

    Ran 7 tests in 0.002s

    OK

    In [8]: %run libs/numpy/test/indexing.py

    ....

    Ran 4 tests in 0.003s

    OK

    I don't know what changes to make to SCons, but I hope it's not too much trouble.
    This extension is something I've wanted for a while! Keep up the good work!

  3. TallJimbo commented on Apr 28, 2012

    @TallJimbo
    MemberAuthor

    Thanks, I think that makes this an easier fix than I expected at least for 10.6. Could you put the following in an SConstruct file in an empty directory, run scons from that directory, and send me the output, please?

    env = Environment()
    print env.Dump()
    
  4. Kameshkk commented on Apr 29, 2012

    @Kameshkk

    Here's the output:

    scons: Reading SConscript files ...
    { 'AR': 'ar',
      'ARCOM': '$AR $ARFLAGS $TARGET $SOURCES',
      'ARFLAGS': ['rc'],
      'AS': 'as',
      'ASCOM': '$AS $ASFLAGS -o $TARGET $SOURCES',
      'ASFLAGS': [],
      'ASPPCOM': '$CC $ASPPFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES',
      'ASPPFLAGS': '$ASFLAGS',
      'BUILDERS': {'CFile': <SCons.Builder.CompositeBuilder object at 0x10164f410>, 'Zip': <SCons.Builder.BuilderBase object at 0x101637550>, 'Jar': <SCons.Builder.BuilderBase object at 0x10164fbd0>, 'StaticLibrary': <SCons.Builder.BuilderBase object at 0x10163f510>, 'M4': <SCons.Builder.BuilderBase object at 0x10164f2d0>, 'Program': <SCons.Builder.BuilderBase object at 0x101637dd0>, 'RPCGenHeader': <SCons.Builder.BuilderBase object at 0x10164f650>, 'CXXFile': <SCons.Builder.CompositeBuilder object at 0x10164f510>, 'Object': <SCons.Builder.CompositeBuilder object at 0x10163f0d0>, 'RPCGenXDR': <SCons.Builder.BuilderBase object at 0x10164f7d0>, 'JavaClassDir': <SCons.Builder.BuilderBase object at 0x10164fd90>, 'LoadableModule': <SCons.Builder.BuilderBase object at 0x101637f50>, 'CopyAs': <SCons.Builder.BuilderBase object at 0x10164f210>, 'SharedLibrary': <SCons.Builder.BuilderBase object at 0x101637cd0>, 'JavaH': <SCons.Builder.BuilderBase object at 0x10164fed0>, 'CopyTo': <SCons.Builder.BuilderBase object at 0x10164f150>, 'PDF': <SCons.Builder.CompositeBuilder object at 0x101652150>, 'StaticObject': <SCons.Builder.CompositeBuilder object at 0x10163f0d0>, 'SharedObject': <SCons.Builder.CompositeBuilder object at 0x10163f210>, 'Tar': <SCons.Builder.BuilderBase object at 0x1016210d0>, 'JavaClassFile': <SCons.Builder.BuilderBase object at 0x10164fcd0>, 'RPCGenService': <SCons.Builder.BuilderBase object at 0x10164f750>, 'Library': <SCons.Builder.BuilderBase object at 0x10163f510>, 'RMIC': <SCons.Builder.BuilderBase object at 0x101613190>, 'JavaFile': <SCons.Builder.CompositeBuilder object at 0x10164fa50>, 'RPCGenClient': <SCons.Builder.BuilderBase object at 0x10164f690>},
      'CC': 'gcc',
      'CCCOM': '$CC -o $TARGET -c $CFLAGS $CCFLAGS $_CCCOMCOM $SOURCES',
      'CCFLAGS': [],
      'CCVERSION': '4.2.1',
      'CFILESUFFIX': '.c',
      'CFLAGS': [],
      'CONFIGUREDIR': '#/.sconf_temp',
      'CONFIGURELOG': '#/config.log',
      'COPYSTR': 'Copy file(s): "$SOURCES" to "$TARGETS"',
      'CPPDEFPREFIX': '-D',
      'CPPDEFSUFFIX': '',
      'CPPSUFFIXES': [ '.c',
                       '.C',
                       '.cxx',
                       '.cpp',
                       '.c++',
                       '.cc',
                       '.h',
                       '.H',
                       '.hxx',
                       '.hpp',
                       '.hh',
                       '.F',
                       '.fpp',
                       '.FPP',
                       '.m',
                       '.mm',
                       '.S',
                       '.spp',
                       '.SPP'],
      'CVS': 'cvs',
      'CVSCOFLAGS': [],
      'CVSCOM': '$CVS $CVSFLAGS co $CVSCOFLAGS ${TARGET.posix}',
      'CVSFLAGS': ['-d', '$CVSREPOSITORY'],
      'CXX': 'g++',
      'CXXCOM': '$CXX -o $TARGET -c $CXXFLAGS $CCFLAGS $_CCCOMCOM $SOURCES',
      'CXXFILESUFFIX': '.cc',
      'CXXFLAGS': [],
      'CXXVERSION': '4.2.1',
      'DSUFFIXES': ['.d'],
      'DVIPDF': 'dvipdf',
      'DVIPDFCOM': 'cd ${TARGET.dir} && $DVIPDF $DVIPDFFLAGS ${SOURCE.file} ${TARGET.file}',
      'DVIPDFFLAGS': [],
      'Dir': <SCons.Defaults.Variable_Method_Caller object at 0x101477b10>,
      'Dirs': <SCons.Defaults.Variable_Method_Caller object at 0x101477b50>,
      'ENV': { 'PATH': '/usr/local/bin:/opt/bin:/bin:/usr/bin:/sw/bin'},
      'ESCAPE': <function escape at 0x1015d0b90>,
      'F77': 'gfortran',
      'F77COM': '$F77 -o $TARGET -c $F77FLAGS $_F77INCFLAGS $SOURCES',
      'F77FLAGS': [],
      'F77PPCOM': '$F77 -o $TARGET -c $F77FLAGS $CPPFLAGS $_CPPDEFFLAGS $_F77INCFLAGS $SOURCES',
      'F90': 'gfortran',
      'F90COM': '$F90 -o $TARGET -c $F90FLAGS $_F90INCFLAGS $_FORTRANMODFLAG $SOURCES',
      'F90FLAGS': [],
      'F90PPCOM': '$F90 -o $TARGET -c $F90FLAGS $CPPFLAGS $_CPPDEFFLAGS $_F90INCFLAGS $_FORTRANMODFLAG $SOURCES',
      'F95': 'gfortran',
      'F95COM': '$F95 -o $TARGET -c $F95FLAGS $_F95INCFLAGS $_FORTRANMODFLAG $SOURCES',
      'F95FLAGS': [],
      'F95PPCOM': '$F95 -o $TARGET -c $F95FLAGS $CPPFLAGS $_CPPDEFFLAGS $_F95INCFLAGS $_FORTRANMODFLAG $SOURCES',
      'FORTRAN': 'gfortran',
      'FORTRANCOM': '$FORTRAN -o $TARGET -c $FORTRANFLAGS $_FORTRANINCFLAGS $_FORTRANMODFLAG $SOURCES',
      'FORTRANFLAGS': [],
      'FORTRANMODDIR': '',
      'FORTRANMODDIRPREFIX': '',
      'FORTRANMODDIRSUFFIX': '',
      'FORTRANMODPREFIX': '',
      'FORTRANMODSUFFIX': '.mod',
      'FORTRANPPCOM': '$FORTRAN -o $TARGET -c $FORTRANFLAGS $CPPFLAGS $_CPPDEFFLAGS $_FORTRANINCFLAGS $_FORTRANMODFLAG $SOURCES',
      'FORTRANSUFFIXES': [ '.f',
                           '.for',
                           '.ftn',
                           '.fpp',
                           '.FPP',
                           '.F',
                           '.FOR',
                           '.FTN',
                           '.f77',
                           '.F77',
                           '.f90',
                           '.F90',
                           '.f95',
                           '.F95'],
      'FRAMEWORKPATH': [],
      'FRAMEWORKPATHPREFIX': '-F',
      'FRAMEWORKS': [],
      'File': <SCons.Defaults.Variable_Method_Caller object at 0x101477b90>,
      'GS': 'gs',
      'GSCOM': '$GS $GSFLAGS -sOutputFile=$TARGET $SOURCES',
      'GSFLAGS': ['-dNOPAUSE', '-dBATCH', '-sDEVICE=pdfwrite'],
      'HOST_ARCH': None,
      'HOST_OS': None,
      'IDLSUFFIXES': ['.idl', '.IDL'],
      'INCF77PREFIX': '-I',
      'INCF77SUFFIX': '',
      'INCF90PREFIX': '-I',
      'INCF90SUFFIX': '',
      'INCF95PREFIX': '-I',
      'INCF95SUFFIX': '',
      'INCFORTRANPREFIX': '-I',
      'INCFORTRANSUFFIX': '',
      'INCPREFIX': '-I',
      'INCSUFFIX': '',
      'JAR': 'jar',
      'JARCOM': "${TEMPFILE('$_JARCOM')}",
      'JARFLAGS': ['cf'],
      'JARSUFFIX': '.jar',
      'JAVABOOTCLASSPATH': [],
      'JAVAC': 'javac',
      'JAVACCOM': "${TEMPFILE('$_JAVACCOM')}",
      'JAVACFLAGS': [],
      'JAVACLASSPATH': [],
      'JAVACLASSSUFFIX': '.class',
      'JAVAH': 'javah',
      'JAVAHCOM': '$JAVAH $JAVAHFLAGS $_JAVAHOUTFLAG $_JAVAHCLASSPATH ${SOURCES.attributes.java_classname}',
      'JAVAHFLAGS': [],
      'JAVASOURCEPATH': [],
      'JAVASUFFIX': '.java',
      'LDMODULE': '$SHLINK',
      'LDMODULECOM': '$LDMODULE -o ${TARGET} $LDMODULEFLAGS $SOURCES $_LIBDIRFLAGS $_LIBFLAGS $_FRAMEWORKPATH $_FRAMEWORKS $FRAMEWORKSFLAGS',
      'LDMODULEEMITTER': '$SHLIBEMITTER',
      'LDMODULEFLAGS': ['$LINKFLAGS', '-bundle'],
      'LDMODULEPREFIX': '',
      'LDMODULESUFFIX': '',
      'LEX': 'flex',
      'LEXCOM': '$LEX $LEXFLAGS -t $SOURCES > $TARGET',
      'LEXFLAGS': [],
      'LIBDIRPREFIX': '-L',
      'LIBDIRSUFFIX': '',
      'LIBLINKPREFIX': '-l',
      'LIBLINKSUFFIX': '',
      'LIBPREFIX': 'lib',
      'LIBPREFIXES': ['$LIBPREFIX'],
      'LIBSUFFIX': '.a',
      'LIBSUFFIXES': ['$LIBSUFFIX', '$SHLIBSUFFIX'],
      'LINK': '$SMARTLINK',
      'LINKCOM': '$LINK -o $TARGET $LINKFLAGS $SOURCES $_LIBDIRFLAGS $_LIBFLAGS $_FRAMEWORKPATH $_FRAMEWORKS $FRAMEWORKSFLAGS',
      'LINKFLAGS': [],
      'M4': 'm4',
      'M4COM': 'cd ${SOURCE.rsrcdir} && $M4 $M4FLAGS < ${SOURCE.file} > ${TARGET.abspath}',
      'M4FLAGS': ['-E'],
      'MAXLINELENGTH': 128072,
      'OBJPREFIX': '',
      'OBJSUFFIX': '.o',
      'PDFCOM': ['$DVIPDFCOM'],
      'PDFPREFIX': '',
      'PDFSUFFIX': '.pdf',
      'PLATFORM': 'darwin',
      'PROGPREFIX': '',
      'PROGSUFFIX': '',
      'PSPAWN': <function piped_env_spawn at 0x1015dd140>,
      'RANLIB': 'ranlib',
      'RANLIBCOM': '$RANLIB $RANLIBFLAGS $TARGET',
      'RANLIBFLAGS': [],
      'RCS': 'rcs',
      'RCS_CO': 'co',
      'RCS_COCOM': '$RCS_CO $RCS_COFLAGS $TARGET',
      'RCS_COFLAGS': [],
      'RDirs': <SCons.Defaults.Variable_Method_Caller object at 0x101477bd0>,
      'RMIC': 'rmic',
      'RMICCOM': '$RMIC $RMICFLAGS -d ${TARGET.attributes.java_lookupdir} -classpath ${SOURCE.attributes.java_classdir} ${SOURCES.attributes.java_classname}',
      'RMICFLAGS': [],
      'RPCGEN': 'rpcgen',
      'RPCGENCLIENTFLAGS': [],
      'RPCGENFLAGS': [],
      'RPCGENHEADERFLAGS': [],
      'RPCGENSERVICEFLAGS': [],
      'RPCGENXDRFLAGS': [],
      'SCANNERS': [<SCons.Scanner.ClassicCPP object at 0x10164fb10>],
      'SHCC': '$CC',
      'SHCCCOM': '$SHCC -o $TARGET -c $SHCFLAGS $SHCCFLAGS $_CCCOMCOM $SOURCES',
      'SHCCFLAGS': ['$CCFLAGS', '-fPIC'],
      'SHCFLAGS': ['$CFLAGS'],
      'SHCXX': '$CXX',
      'SHCXXCOM': '$SHCXX -o $TARGET -c $SHCXXFLAGS $SHCCFLAGS $_CCCOMCOM $SOURCES',
      'SHCXXFLAGS': ['$CXXFLAGS'],
      'SHELL': 'sh',
      'SHF77': '$F77',
      'SHF77COM': '$SHF77 -o $TARGET -c $SHF77FLAGS $_F77INCFLAGS $SOURCES',
      'SHF77FLAGS': ['$F77FLAGS', '-fPIC'],
      'SHF77PPCOM': '$SHF77 -o $TARGET -c $SHF77FLAGS $CPPFLAGS $_CPPDEFFLAGS $_F77INCFLAGS $SOURCES',
      'SHF90': '$F90',
      'SHF90COM': '$SHF90 -o $TARGET -c $SHF90FLAGS $_F90INCFLAGS $_FORTRANMODFLAG $SOURCES',
      'SHF90FLAGS': ['$F90FLAGS', '-fPIC'],
      'SHF90PPCOM': '$SHF90 -o $TARGET -c $SHF90FLAGS $CPPFLAGS $_CPPDEFFLAGS $_F90INCFLAGS $_FORTRANMODFLAG $SOURCES',
      'SHF95': '$F95',
      'SHF95COM': '$SHF95 -o $TARGET -c $SHF95FLAGS $_F95INCFLAGS $_FORTRANMODFLAG $SOURCES',
      'SHF95FLAGS': ['$F95FLAGS', '-fPIC'],
      'SHF95PPCOM': '$SHF95 -o $TARGET -c $SHF95FLAGS $CPPFLAGS $_CPPDEFFLAGS $_F95INCFLAGS $_FORTRANMODFLAG $SOURCES',
      'SHFORTRAN': '$FORTRAN',
      'SHFORTRANCOM': '$SHFORTRAN -o $TARGET -c $SHFORTRANFLAGS $_FORTRANINCFLAGS $_FORTRANMODFLAG $SOURCES',
      'SHFORTRANFLAGS': ['$FORTRANFLAGS', '-fPIC'],
      'SHFORTRANPPCOM': '$SHFORTRAN -o $TARGET -c $SHFORTRANFLAGS $CPPFLAGS $_CPPDEFFLAGS $_FORTRANINCFLAGS $_FORTRANMODFLAG $SOURCES',
      'SHLIBEMITTER': [<function shlib_emitter at 0x1015e55f0>],
      'SHLIBPREFIX': '$LIBPREFIX',
      'SHLIBSUFFIX': '.dylib',
      'SHLINK': '$LINK',
      'SHLINKCOM': '$SHLINK -o $TARGET $SHLINKFLAGS $SOURCES $_LIBDIRFLAGS $_LIBFLAGS $_FRAMEWORKPATH $_FRAMEWORKS $FRAMEWORKSFLAGS',
      'SHLINKFLAGS': ['$LINKFLAGS', '-dynamiclib'],
      'SHOBJPREFIX': '$OBJPREFIX',
      'SHOBJSUFFIX': '.os',
      'SMARTLINK': <function smart_link at 0x1015e5578>,
      'SPAWN': <function spawnvpe_spawn at 0x1015d0e60>,
      'STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME': 0,
      'SWIG': 'swig',
      'SWIGCFILESUFFIX': '_wrap$CFILESUFFIX',
      'SWIGCOM': '$SWIG -o $TARGET ${_SWIGOUTDIR} ${_SWIGINCFLAGS} $SWIGFLAGS $SOURCES',
      'SWIGCXXFILESUFFIX': '_wrap$CXXFILESUFFIX',
      'SWIGDIRECTORSUFFIX': '_wrap.h',
      'SWIGFLAGS': [],
      'SWIGINCPREFIX': '-I',
      'SWIGINCSUFFIX': '',
      'SWIGPATH': [],
      'SWIGVERSION': '1.3.31',
      'TAR': 'tar',
      'TARCOM': '$TAR $TARFLAGS -f $TARGET $SOURCES',
      'TARFLAGS': ['-c'],
      'TARGET_ARCH': None,
      'TARGET_OS': None,
      'TARSUFFIX': '.tar',
      'TEMPFILE': <class 'SCons.Platform.TempFileMunge'>,
      'TEMPFILEPREFIX': '@',
      'TOOLS': [ 'default',
                 'applelink',
                 'gcc',
                 'g++',
                 'gfortran',
                 'as',
                 'ar',
                 'filesystem',
                 'm4',
                 'lex',
                 'yacc',
                 'rpcgen',
                 'swig',
                 'jar',
                 'javac',
                 'javah',
                 'rmic',
                 'dvipdf',
                 'gs',
                 'tar',
                 'zip',
                 'CVS',
                 'RCS'],
      'WIXCANDLE': 'candle.exe',
      'WIXLIGHT': 'light.exe',
      'YACC': 'bison',
      'YACCCOM': '$YACC $YACCFLAGS -o $TARGET $SOURCES',
      'YACCFLAGS': [],
      'YACCHFILESUFFIX': '.h',
      'YACCHXXFILESUFFIX': '.hpp',
      'YACCVCGFILESUFFIX': '.vcg',
      'ZIP': 'zip',
      'ZIPCOM': <SCons.Action.FunctionAction object at 0x1016374d0>,
      'ZIPCOMPRESSION': 8,
      'ZIPFLAGS': [],
      'ZIPSUFFIX': '.zip',
      '_CCCOMCOM': '$CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS $_FRAMEWORKPATH',
      '_CPPDEFFLAGS': '${_defines(CPPDEFPREFIX, CPPDEFINES, CPPDEFSUFFIX, __env__)}',
      '_CPPINCFLAGS': '$( ${_concat(INCPREFIX, CPPPATH, INCSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)',
      '_F77INCFLAGS': '$( ${_concat(INCF77PREFIX, F77PATH, INCF77SUFFIX, __env__, RDirs, TARGET, SOURCE)} $)',
      '_F90INCFLAGS': '$( ${_concat(INCF90PREFIX, F90PATH, INCF90SUFFIX, __env__, RDirs, TARGET, SOURCE)} $)',
      '_F95INCFLAGS': '$( ${_concat(INCF95PREFIX, F95PATH, INCF95SUFFIX, __env__, RDirs, TARGET, SOURCE)} $)',
      '_FORTRANINCFLAGS': '$( ${_concat(INCFORTRANPREFIX, FORTRANPATH, INCFORTRANSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)',
      '_FORTRANMODFLAG': '$( ${_concat(FORTRANMODDIRPREFIX, FORTRANMODDIR, FORTRANMODDIRSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)',
      '_FRAMEWORKPATH': '${_concat(FRAMEWORKPATHPREFIX, FRAMEWORKPATH, "", __env__)}',
      '_FRAMEWORKS': '${_concat("-framework ", FRAMEWORKS, "", __env__)}',
      '_JARCOM': '$JAR $_JARFLAGS $TARGET $_JARMANIFEST $_JARSOURCES',
      '_JARFLAGS': <function jarFlags at 0x1015f4500>,
      '_JARMANIFEST': <function jarManifest at 0x1015f4488>,
      '_JARSOURCES': <function jarSources at 0x1015f4410>,
      '_JAVABOOTCLASSPATH': '${_javapathopt("-bootclasspath", "JAVABOOTCLASSPATH")} ',
      '_JAVACCOM': '$JAVAC $JAVACFLAGS $_JAVABOOTCLASSPATH $_JAVACLASSPATH -d ${TARGET.attributes.java_classdir} $_JAVASOURCEPATH $SOURCES',
      '_JAVACLASSPATH': '${_javapathopt("-classpath", "JAVACLASSPATH")} ',
      '_JAVAHCLASSPATH': <function getJavaHClassPath at 0x101610938>,
      '_JAVAHOUTFLAG': <function JavaHOutFlagGenerator at 0x1016108c0>,
      '_JAVASOURCEPATH': '${_javapathopt("-sourcepath", "JAVASOURCEPATH", "_JAVASOURCEPATHDEFAULT")} ',
      '_JAVASOURCEPATHDEFAULT': '${TARGET.attributes.java_sourcedir}',
      '_LIBDIRFLAGS': '$( ${_concat(LIBDIRPREFIX, LIBPATH, LIBDIRSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)',
      '_LIBFLAGS': '${_stripixes(LIBLINKPREFIX, LIBS, LIBLINKSUFFIX, LIBPREFIXES, LIBSUFFIXES, __env__)}',
      '_SWIGINCFLAGS': '$( ${_concat(SWIGINCPREFIX, SWIGPATH, SWIGINCSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)',
      '_SWIGOUTDIR': '${"-outdir \\"%s\\"" % SWIGOUTDIR}',
      '__RPATH': '$_RPATH',
      '_concat': <function _concat at 0x10147b410>,
      '_defines': <function _defines at 0x10147b5f0>,
      '_javapathopt': <class 'SCons.Tool.javac.pathopt'>,
      '_stripixes': <function _stripixes at 0x10147b500>}
    scons: done reading SConscript files.
    scons: Building targets ...
    scons: `.' is up to date.
    scons: done building targets.
    
  5. TallJimbo commented on Apr 29, 2012

    @TallJimbo
    MemberAuthor

    Thanks. This should be fixed with dbe4903; please confirm.

  6. Kameshkk commented on Apr 29, 2012

    @Kameshkk

    Now it works on OS X 10.6

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions