[petsc-dev] [petsc-maint #49590] problem building petsc-dev
Satish Balay
balay at mcs.anl.gov
Sat Jul 17 00:27:20 CDT 2010
On Fri, 16 Jul 2010, Satish Balay wrote:
> > >>> Part of the problem is: configure cannot distinguish between user
> > >>> provided value vs configure default value - for any given option. So
> > >>> we can't do both:
Actually this looks simple to fix. A single liner already exists in
PETSc/Configure.py. So I just need it in framework.py
-----------------------------------------------------
args = dict([(nargs.Arg.parseArgument(arg)[0], arg) for arg in self.framework.clArgs])
-----------------------------------------------------
diff -r 583bb7a11b3a config/framework.py
--- a/config/framework.py Fri Jul 16 19:44:18 2010 -0500
+++ b/config/framework.py Fri Jul 16 23:42:31 2010 -0500
@@ -104,6 +104,8 @@
# List of packages actually found
self.packages = []
self.createChildren()
+ # Create argDB for user specified options only
+ self.userArgDB = dict([(nargs.Arg.parseArgument(arg)[0], arg) for arg in self.clArgs])
return
def __getstate__(self):
asterix:/home/balay/tmp/petsc-dev/config/BuildSystem>
--------------------------------------------------------
Now the following works
>>>>>>>>>>
# if user specifies inconsistant 'with-dynamic-loader with-shared-libraries with-pic' options - flag error.
if self.framework.argDB['with-dynamic-loader'] and not self.framework.argDB['with-shared-libraries'] and 'with-shared-libraries' in self.framework.userArgDB:
raise RuntimeError('If you use --with-dynamic-loader you cannot disable --with-shared-libraries')
if self.framework.argDB['with-dynamic-loader'] and not self.framework.argDB['with-pic'] and 'with-pic' in self.framework.userArgDB:
raise RuntimeError('If you use --with-dynamic-loader you cannot disable --with-pic')
if self.framework.argDB['with-shared-libraries'] and not self.framework.argDB['with-pic'] and 'with-pic' in self.framework.userArgDB:
raise RuntimeError('If you use --with-shared-libraries you cannot disable --with-pic')
<<<<<<<<<<
But I'd also like to do:
>>>>>>>>>>>>
# default with-dynamic-loader=1 => with-shared-libraries=1 --with-pic=1
# default with-shared-libraries=1 => --with-pic=1
if self.framework.argDB['with-dynamic-loader'] and not self.framework.argDB['with-shared-libraries']: self.framework.argDB['with-shared-libraries'] = 1
if self.framework.argDB['with-shared-libraries'] and not self.framework.argDB['with-pic']: self.framework.argDB['with-pic'] = 1
<<<<<<<<<<<<
but the code in buildsystem checkPIC() etc gets run before
sharedLibraries.py - so having the above code in sharedLibraries.py
won't work. [have to figure this out..]
Satish
More information about the petsc-dev
mailing list