1from __future__ import generators 2import config.base 3import os 4import re 5 6class Configure(config.base.Configure): 7 def __init__(self, framework): 8 config.base.Configure.__init__(self, framework) 9 self.headerPrefix = 'PETSC' 10 self.substPrefix = 'PETSC' 11 self.updated = 0 12 self.strmsg = '' 13 self.datafilespath = '' 14 return 15 16 def __str__(self): 17 return self.strmsg 18 19 def setupHelp(self, help): 20 import nargs 21 help.addArgument('PETSc', '-DATAFILESPATH=<dir>', nargs.Arg(None, None, 'Specifiy location of PETSc datafiles, e.g. test matrices')) 22 return 23 24 def setupDependencies(self, framework): 25 config.base.Configure.setupDependencies(self, framework) 26 self.petscdir = framework.require('PETSc.options.petscdir', self) 27 return 28 29 def getDatafilespath(self): 30 '''Checks what DATAFILESPATH should be''' 31 self.datafilespath = None 32 if self.framework.argDB.has_key('DATAFILESPATH'): 33 if os.path.isdir(self.framework.argDB['DATAFILESPATH']) & os.path.isdir(os.path.join(self.framework.argDB['DATAFILESPATH'], 'matrices')): 34 self.datafilespath = str(self.framework.argDB['DATAFILESPATH']) 35 else: 36 raise RuntimeError('Path given with option -DATAFILES='+self.framework.argDB['DATAFILESPATH']+' is not a valid datafiles directory') 37 elif os.path.isdir(os.path.join('/home','petsc','datafiles')) & os.path.isdir(os.path.join('/home','petsc','datafiles','matrices')): 38 self.datafilespath = os.path.join('/home','petsc','datafiles') 39 elif os.path.isdir(os.path.join(self.petscdir.dir, '..', 'datafiles')) & os.path.isdir(os.path.join(self.petscdir.dir, '..', 'datafiles', 'matrices')): 40 self.datafilespath = os.path.join(self.petscdir.dir, '..', 'datafiles') 41 if self.datafilespath is not None: 42 self.addMakeMacro('DATAFILESPATH',self.datafilespath) 43 return 44 45 def configure(self): 46 self.executeTest(self.getDatafilespath) 47 return 48