mailRe: compiling 1.3.4 against python 2.6?


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by Edward d'Auvergne on August 17, 2009 - 19:09:
Hi,

I don't think this is an issue, as the include directories should only
contain *.h C header files.  Can you find any *.h python files which
are not in /sw/include/python2.6?  The second include directory is
just for the numpy *.h files.

Cheers,

Edward


2009/8/17 Jack Howarth <howarth@xxxxxxxxxxxxxxxx>:
Edward,
  I'll try these tonight as I don't have my laptop with me
today. I do notice that if I compare the linkage of the two
pythons....

[prrg4:~] howarth% otool -L /sw/bin/python2.5
/sw/bin/python2.5:
       /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current 
version 111.1.3)
       /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current 
version 1.0.0)
[prrg4:~] howarth% otool -L /sw/bin/python2.6
/sw/bin/python2.6:
       /sw/lib/python2.6/config/libpython2.6.dylib (compatibility version 
2.6.0, current version 2.6.0)
       /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current 
version 111.1.4)
       /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current 
version 1.0.0)

It would appear that...

gcc -o maths_fns/relax_fit.so -bundle -bundle_loader /sw/bin/python2.6 
-dynamic maths_fns/c_chi2.os maths_fns/exponential.os maths_fns/relax_fit.os

...isn't picking up /sw/lib/python2.6/config/libpython2.6.dylib for linkage.
                   Jack


On Mon, Aug 17, 2009 at 06:34:33PM +0200, Edward d'Auvergne wrote:
Hi,

Does one of the following commands compile the module (with the
test-suite passing as well)?

$ gcc -o maths_fns/relax_fit.so /sw/bin/python2.6 maths_fns/c_chi2.os
maths_fns/exponential.os maths_fns/relax_fit.os
$ gcc -o maths_fns/relax_fit.so /sw/bin/python2.6 -dynamic
maths_fns/c_chi2.os maths_fns/exponential.os maths_fns/relax_fit.os
$ gcc -o maths_fns/relax_fit.so -bundle_loader /sw/bin/python2.6
-dynamic maths_fns/c_chi2.os maths_fns/exponential.os
maths_fns/relax_fit.os
$ gcc -o maths_fns/relax_fit.so -bundle /sw/bin/python2.6 -dynamic
maths_fns/c_chi2.os maths_fns/exponential.os maths_fns/relax_fit.os
$ gcc -o maths_fns/relax_fit.so -module -bundle -bundle_loader
/sw/bin/python2.6 maths_fns/c_chi2.os maths_fns/exponential.os
maths_fns/relax_fit.os
$ gcc -o maths_fns/relax_fit.so -module -bundle -bundle_loader
/sw/bin/python2.6 -dynamic maths_fns/c_chi2.os
maths_fns/exponential.os maths_fns/relax_fit.os

Cheers,

Edward


2009/8/17 Edward d'Auvergne <edward@xxxxxxxxxxxxx>:
Hi,

The way we can solve this issue is to first type the gcc linking
command by hand, rather than using scons.  Then once all is
functional, I can fix the Scons script.  Here is what Douglas Kojetin
did to make this work
(https://mail.gna.org/public/relax-devel/2006-11/msg00092.html), and
then I tailored the scons script to match.  If you cut an past this
gcc command, can you compile the modules and run the system test
without failures?  Also, once this is all functional, I would like to
get your changes (well, modified to be compatible with all other
operating systems) into the repository so that it is easier for you
next time.

Cheers,

Edward



2009/8/17 Jack Howarth <howarth@xxxxxxxxxxxxxxxx>:
Edward,
  I'll have to look into that as I'm not very familar with scons.
Currently for 1.3.3, it is sufficient to use...

--- relax-1.3.0.orig/relax      2007-02-19 00:36:06.000000000 -0500
+++ relax-1.3.0/relax   2008-08-11 02:13:30.000000000 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/env python
+#! /usr/bin/env python2.X

 ###############################################################################
 #                                                                      
       #
--- relax-1.3.0/scons/install.py.sav    2008-08-10 15:31:01.000000000 
-0400
+++ relax-1.3.0/scons/install.py        2008-08-10 16:01:22.000000000 
-0400
@@ -112,8 +112,8 @@
    ###############

    # Run relax to create the *.pyc files.
-    print "\nRunning relax to create the byte-compiled *.pyc files."
-    system(env['SYMLINK'] + " --test")
+    # print "\nRunning relax to create the byte-compiled *.pyc files."
+    # system(env['SYMLINK'] + " --test")

    # Final print out.
    print "\n\n\n"
--- relax-1.3.0.orig/sconstruct 2007-02-19 00:36:06.000000000 -0500
+++ relax-1.3.0/sconstruct      2008-08-11 02:02:56.000000000 -0400
@@ -94,7 +94,7 @@
    SYS = SYSTEM

    # Mac OS X installation path.
-    INSTALL_PATH = sys.prefix + sep + 'local'
+    INSTALL_PATH = 'FINK_INSTALL_DIR' + sep + 'lib'


 # All other operating systems.
@@ -111,16 +111,15 @@
 ###############

 # Relax installation directory.
-RELAX_PATH = INSTALL_PATH + sep + 'relax'
+RELAX_PATH = INSTALL_PATH + sep + 'relax-py2X'

 # Installation path for binaries.
-BIN_PATH = INSTALL_PATH + sep + 'bin'
+BIN_PATH = 'FINK_INSTALL_DIR' + sep + 'bin'

 # Symbolic link installation path.
 SYMLINK = BIN_PATH + sep + 'relax'


-
 # The distribution files.
 #########################

@@ -486,7 +485,7 @@

        # Catch Mac OS X and send the correct command line options to 
the linker (these may become redundant as SCons improves).
        if env['PLATFORM'] == 'darwin':
-            env.Append(LINKFLAGS = ['-bundle', '-bundle_loader', 
sys.prefix + path.sep + 'bin' + path.sep + 'python', '-dynamic'])
+            env.Append(LINKFLAGS = ['-bundle', '-bundle_loader', 
sys.prefix + path.sep + 'bin' + path.sep + 'python2.X', '-dynamic'])
            env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS')
            env['SHLIBSUFFIX'] = '.so'


to build against the fink python24 and python25 packages.
                Jack

On Mon, Aug 17, 2009 at 03:55:06PM +0200, Edward d'Auvergne wrote:
Hi,

It could be, that Python 2.6 dynamically linked libraries are now
compiled differently to earlier Python versions.  I'll have to look
that up as well.  Would you know the linker options now required?

Cheers,

Edward


2009/8/17 Jack Howarth <howarth@xxxxxxxxxxxxxxxx>:
Edward,
  I think I see the problem. The link line is missing a linkage on 
either
/sw/lib/python2.6/config/libpython2.6.a or 
/sw/lib/python2.6/config/libpython2.6,dylib.
What do you have for the linkage of maths_fns/relax_fit.so on linux? 
Does
that build explicitly link in the python library?
                 Jack


On Mon, Aug 17, 2009 at 11:50:10AM +0200, Edward d'Auvergne wrote:
Hi,

Thank you for building these packages (or at least attempting for 
now
;).  I'm still looking into the problem, but it's looking like the
Python header files are missing or are from an old version.  Do you
know if this could be the issue, that the Python development 
packages
are out of date or are missing?

Cheers,

Edward



On Sun, Aug 16, 2009 at 4:08 AM, Jack 
Howarth<howarth@xxxxxxxxxxxxxxxx> wrote:
Edward,
  I am trying to build updated relax-py packaging
for fink using the 1.3.4 release on x86_64 fink
with python2.6. Although your web page indicates
that the binaries available are built against
python 2.5 and 2.6, I am seeing build failures
when I try here with scons 1.2.0...

/sw/bin/python2.6 /sw/bin/scons
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...




###########################
# Compiling the C modules #
###########################


Building the relaxation curve fitting module 
'maths_fns/relax_fit.so'

gcc -o maths_fns/c_chi2.os -c -I/sw/include/python2.6 
-I/sw/lib/python2.6/site-packages/numpy/core/include -fPIC 
maths_fns/c_chi2.c
gcc -o maths_fns/exponential.os -c -I/sw/include/python2.6 
-I/sw/lib/python2.6/site-packages/numpy/core/include -fPIC 
maths_fns/exponential.c
gcc -o maths_fns/relax_fit.os -c -I/sw/include/python2.6 
-I/sw/lib/python2.6/site-packages/numpy/core/include -fPIC 
maths_fns/relax_fit.c
gcc -o maths_fns/relax_fit.so -bundle -bundle_loader 
/sw/bin/python2.6 -dynamic maths_fns/c_chi2.os 
maths_fns/exponential.os maths_fns/relax_fit.os
Undefined symbols:
 "_PyArg_ParseTupleAndKeywords", referenced from:
     _setup in relax_fit.os
 "_PyErr_Print", referenced from:
     _initrelax_fit in relax_fit.os
 "_Py_InitModule4_64", referenced from:
     _initrelax_fit in relax_fit.os
 "_PyArg_ParseTuple", referenced from:
     _func in relax_fit.os
     _dfunc in relax_fit.os
 "_PyExc_RuntimeError", referenced from:
     __import_array in exponential.os
     __import_array in exponential.os
     __import_array in exponential.os
     __import_array in relax_fit.os
     __import_array in relax_fit.os
     __import_array in relax_fit.os
 "_PyList_New", referenced from:
     _back_calc_I in relax_fit.os
 "__Py_NoneStruct", referenced from:
     _setup in relax_fit.os
     _setup in relax_fit.os
     _setup in relax_fit.os
 "_PyExc_ImportError", referenced from:
     _initrelax_fit in relax_fit.os
 "_PyCObject_AsVoidPtr", referenced from:
     __import_array in exponential.os
     __import_array in relax_fit.os
 "_PyCObject_Type", referenced from:
     __import_array in exponential.os
     __import_array in relax_fit.os
 "_PyImport_ImportModule", referenced from:
     __import_array in exponential.os
     __import_array in relax_fit.os
 "_PyErr_SetString", referenced from:
     _initrelax_fit in relax_fit.os
 "_PyErr_Format", referenced from:
     __import_array in exponential.os
     __import_array in exponential.os
     __import_array in exponential.os
     __import_array in relax_fit.os
     __import_array in relax_fit.os
     __import_array in relax_fit.os
 "_PyList_SetItem", referenced from:
     _back_calc_I in relax_fit.os
 "_PyObject_GetAttrString", referenced from:
     __import_array in exponential.os
     __import_array in relax_fit.os
 "_Py_BuildValue", referenced from:
     _func in relax_fit.os
     _d2func in relax_fit.os
     _back_calc_I in relax_fit.os
ld: symbol(s) not found

Is the 1.3.4 release really python2.6 compatible or do I need 
additional
patches? Thanks in advance for any information.
             Jack
ps I am updating the minfx-py package to the newer 1.0.2 release 
of
course for the python 2.6 compatibility changes.

_______________________________________________
relax (http://nmr-relax.com)

This is the relax-users mailing list
relax-users@xxxxxxx

To unsubscribe from this list, get a password
reminder, or change your subscription options,
visit the list information page at
https://mail.gna.org/listinfo/relax-users








Related Messages


Powered by MHonArc, Updated Tue Aug 18 01:21:03 2009