Author: eudoxos
Date: 2009-07-18 13:07:40 +0200 (Sat, 18 Jul 2009)
New Revision: 1877

Modified:
   trunk/SConstruct
   trunk/lib/SConscript
   trunk/py/SConscript
   trunk/scripts/test/gts-horse.py
Log:
1. Fix linking logic for _packPredicates (fixes 
https://bugs.launchpad.net/yade/+bug/401029)
2. Make gts-horse coarse original horse automatically


Modified: trunk/SConstruct
===================================================================
--- trunk/SConstruct    2009-07-18 08:35:07 UTC (rev 1876)
+++ trunk/SConstruct    2009-07-18 11:07:40 UTC (rev 1877)
@@ -541,7 +541,8 @@
        for root,dirs,files in os.walk(env.subst('$PREFIX/lib/yade${SUFFIX}')):
                for f in files:
                        ff=os.path.join(root,f)
-                       if ff not in toInstall and not ff.endswith('.pyo'):
+                       # do not delete python-optimized files and symbolic 
links (lib_gts__python-module.so, for instance)
+                       if ff not in toInstall and not ff.endswith('.pyo') and 
not os.path.islink(ff):
                                print "Deleting extra plugin", ff
                                os.remove(ff)
 

Modified: trunk/lib/SConscript
===================================================================
--- trunk/lib/SConscript        2009-07-18 08:35:07 UTC (rev 1876)
+++ trunk/lib/SConscript        2009-07-18 11:07:40 UTC (rev 1877)
@@ -78,6 +78,13 @@
                env.File('py/pygts-0.3.1/__init__.py'),
                env.File('py/pygts-0.3.1/pygts.py')
        ])
+       #
+       # the _packPredicates module needs to link to us, but linker by 
defaults looks for lib*.so files
+       # Therefore we will create symlink with that name (in lib/ rather than 
py/gts, so that it is in the RPATH
+       # without further modifications). If the file were copied (installed 2 
times), static data would be
+       # created twice and it would break python type identification (among 
other things).
+       #
+       
env.Command('$PREFIX/lib/yade$SUFFIX/lib/lib_gts__python-module.so','$PREFIX/lib/yade$SUFFIX/py/gts/_gts.so','ln
 -s -f ../py/gts/_gts.so $TARGET')
 
 env.Install('$PREFIX/lib/yade$SUFFIX/lib',[
 

Modified: trunk/py/SConscript
===================================================================
--- trunk/py/SConscript 2009-07-18 08:35:07 UTC (rev 1876)
+++ trunk/py/SConscript 2009-07-18 11:07:40 UTC (rev 1877)
@@ -8,13 +8,8 @@
                env.SharedLibrary('log',['log.cpp'],SHLIBPREFIX=''),
                
env.SharedLibrary('_utils',['_utils.cpp'],SHLIBPREFIX='',LIBS=env['LIBS']+['Shop','ConcretePM']),
                
env.SharedLibrary('_packPredicates',['_packPredicates.cpp'],SHLIBPREFIX='',
-                       # if we compile with GTS, link to the python module, as 
inGtsSurface uses some of its symbols.
-                       # because the module doesn't have the lib- suffix, we 
put it directly to SHLINKFLAGS
-                       # using the -l: syntax (see man ld); we further have to 
add a special LIBDIR (for link-time lookup)
-                       # and RPATH (for run-time lookup)
-                       SHLINKFLAGS=env['SHLINKFLAGS']+(['-l:_gts.so'] if 'GTS' 
in env['features'] else []),
-                       
LIBPATH=env['LIBPATH']+(['$PREFIX/lib/yade$SUFFIX/py/gts'] if 'GTS' in 
env['features'] else []),
-                       
RPATH=env['RPATH']+(['$runtimePREFIX/lib/yade$SUFFIX/py/gts'] if 'GTS' in 
env['features'] else []),     
+                       # link to the symlink to the python module (created in 
lib/SConstruct; see explanation there)
+                       LIBS=env['LIBS']+(['_gts__python-module'] if 'GTS' in 
env['features'] else []),
                        ),
                
env.SharedLibrary('_packSpheres',['_packSpheres.cpp'],SHLIBPREFIX='',LIBS=env['LIBS']+['Shop']),
                env.SharedLibrary('_packObb',['_packObb.cpp'],SHLIBPREFIX=''),
@@ -27,7 +22,6 @@
                
env.SharedLibrary('wrapper',['yadeWrapper/yadeWrapper.cpp'],SHLIBPREFIX='',LIBS=env['LIBS']+['XMLFormatManager','yade-factory','yade-serialization','Shop','BoundingVolumeMetaEngine','GeometricalModelMetaEngine','InteractingGeometryMetaEngine','InteractionGeometryMetaEngine','InteractionPhysicsMetaEngine','PhysicalParametersMetaEngine','ConstitutiveLawDispatcher','InteractionDispatchers','STLImporter','ParallelEngine','Clump'],),
                
env.SharedLibrary('_customConverters',['yadeWrapper/customConverters.cpp'],SHLIBPREFIX='',LIBS=env['LIBS']+['boost_python_indexing_suite_v2'])
        ])
-       if 'GTS' in env['features']: 
env.Depends('_packPredicates.so','$PREFIX/lib/yade$SUFFIX/py/gts/_gts.so')
 
        # 3rd party modules:
        # ==================

Modified: trunk/scripts/test/gts-horse.py
===================================================================
--- trunk/scripts/test/gts-horse.py     2009-07-18 08:35:07 UTC (rev 1876)
+++ trunk/scripts/test/gts-horse.py     2009-07-18 11:07:40 UTC (rev 1877)
@@ -5,19 +5,23 @@
 to facets representing the surface."""
 
 from yade import pack
-import gts
+import gts, os.path
 
-try:
-       #surf=gts.read(open('horse.gts')); surf.coarsen(1000); 
surf.write(open('horse.coarse.gts','w'))
-       surf=gts.read(open('horse.coarse.gts'))
-except IOError:
-       print """horse.gts not found, you need to download input data:
+# coarsen the original horse if we have it
+# do nothing if we have the coarsened horse already
+if not os.path.exists('horse.coarse.gts'):
+       if os.path.exists('horse.gts'):
+               surf=gts.read(open('horse.gts')); surf.coarsen(1000); 
surf.write(open('horse.coarse.gts','w'))
+       else:
+               print """horse.gts not found, you need to download input data:
 
-       wget http://gts.sourceforge.net/samples/horse.gts.gz
-       gunzip horse.gts.gz
-       """
-       quit()
-print dir(surf)
+               wget http://gts.sourceforge.net/samples/horse.gts.gz
+               gunzip horse.gts.gz
+               """
+               quit()
+
+surf=gts.read(open('horse.coarse.gts'))
+
 if surf.is_closed():
        pred=pack.inGtsSurface(surf)
        aabb=pred.aabb()


_______________________________________________
Mailing list: https://launchpad.net/~yade-dev
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~yade-dev
More help   : https://help.launchpad.net/ListHelp

Reply via email to