mailRe: C module compiling -- relax_disp branch


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

Header


Content

Posted by Edward d'Auvergne on February 17, 2009 - 18:22:
Oh, for the print out, maybe you should modify it to be something like:

        # Print out string returning function.
        def print_string(target, source, env):
            string = "\n\n\n\n"
            string = string + "###########################\n"
            string = string + "# Compiling the C modules #\n"
            string = string + "###########################\n\n\n"
            string = string + "Building the relaxation curve fitting
module " + `str(self.compile_object[0])` + "\n"
            string = string + "Building the relaxation dispersion
module " + `str(self.compile_object[1][0])` + "\n"
            return string

Regards,

Edward


On Tue, Feb 17, 2009 at 6:18 PM, Edward d'Auvergne <edward@xxxxxxxxxxxxx> 
wrote:
Hi,

Just tested this and reproduced the error.  More below...


On Tue, Feb 17, 2009 at 3:17 PM, Sébastien Morin
<sebastien.morin.1@xxxxxxxxx> wrote:
Hi,

This code was absent from the repository, but I just added it.

However, to reproduce the error, you must first use the command 'scons
clean_all' to remove the compiled and temporary files.

Then, when you use the command 'scons', you get the following message:

==========
scons: Reading SConscript files ...

scons: warning: Two different environments were specified for target
maths_fns/c_chi2.os,
   but they appear to have the same action: $SHCC -o $TARGET -c
$SHCFLAGS $SHCCFLAGS $_CCCOMCOM $SOURCES
File
"/home/semor/pse-4/collaborations/relax/relax-1.3--relax_disp/sconstruct",
line 517, in relax_disp
scons: done reading SConscript files.
scons: Building targets ...




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


Building the relaxation dispersion curve fitting module
'maths_fns/relax_disp.so'

gcc -o maths_fns/c_chi2.os -c -I/usr/include/python2.5
-I/usr/lib/python2.5/site-packages/numpy/core/include -fPIC
maths_fns/c_chi2.c
gcc -o maths_fns/exponential.os -c -I/usr/include/python2.5
-I/usr/lib/python2.5/site-packages/numpy/core/include -fPIC
maths_fns/exponential.c
gcc -o maths_fns/relax_fit.os -c -I/usr/include/python2.5
-I/usr/lib/python2.5/site-packages/numpy/core/include -fPIC
maths_fns/relax_fit.c
gcc -o maths_fns/relax_fit.so -shared maths_fns/c_chi2.os
maths_fns/exponential.os maths_fns/relax_fit.os
gcc -o maths_fns/dispersion.os -c -I/usr/include/python2.5
-I/usr/lib/python2.5/site-packages/numpy/core/include -fPIC
maths_fns/dispersion.c
gcc -o maths_fns/relax_disp.os -c -I/usr/include/python2.5
-I/usr/lib/python2.5/site-packages/numpy/core/include -fPIC
maths_fns/relax_disp.c
gcc -o maths_fns/relax_disp.so -shared maths_fns/c_chi2.os
maths_fns/dispersion.os maths_fns/relax_disp.os
scons: done building targets.
==========

After this, both 'relax_disp.so' and 'relax_fit.so' are created. The
'relax_fit' code works fine, but it is difficult to tell whether the
'relax_disp' code works as it is still in development and very 
incomplete...

The files are both created on my system too.  As the relax_disp module
isn't complete, I would assume this doesn't work.  But from the system
tests, the relax_fit.so module is fine.  This is just a warning and is
nothing to worry about.  The c_chi module should only be compiled once
as the c_chi.o object is shared.

The solution is quite simple here, and have just tested it.  I would
remove all the changes you made to sconstruct and start again.  First
rename the relax_fit() method to compile().  Then rename the
self.relax_fit_object to self.compile_object.  The in the compile()
method, expand the file list to:

       # File names.
       files = ['c_chi2.c',
                'exponential.c',
                'relax_fit.c',
                'dispersion.c',
                'relax_disp.c']

Finally, you need to build both shared libraries by expanding this
section of the function with:

       # Build the relaxation curve fitting module.
       self.relax_fit_object = env.SharedLibrary(target=dir +
path.sep + 'relax_fit', source=nodes, SHLIBPREFIX=prefix,
SHLIBSUFFIX=suffix)
       self.relax_fit_object.append(env.SharedLibrary(target=dir +
path.sep + 'relax_disp', source=nodes, SHLIBPREFIX=prefix,
SHLIBSUFFIX=suffix))

This will then be a very simple solution to this compilation issue and
no warnings will be thrown.  I hope this will be sufficient.

Regards,

Edward




Related Messages


Powered by MHonArc, Updated Tue Feb 17 19:00:29 2009