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 homeloc = os.path.join(os.getenv('HOME', '.'), 'datafiles') 32 parentloc = os.path.join(self.petscdir.dir,'..','datafiles') 33 self.datafilespath = None 34 35 if 'DATAFILESPATH' in self.framework.argDB: 36 if os.path.isdir(self.framework.argDB['DATAFILESPATH']) and os.path.isdir(os.path.join(self.framework.argDB['DATAFILESPATH'], 'matrices')): 37 self.datafilespath = str(self.framework.argDB['DATAFILESPATH']) 38 else: 39 raise RuntimeError('Path given with option -DATAFILES='+self.framework.argDB['DATAFILESPATH']+' is not a valid datafiles directory') 40 elif os.path.isdir(homeloc) and os.path.isdir(os.path.join(homeloc,'matrices')): 41 self.datafilespath = homeloc 42 elif os.path.isdir(parentloc) and os.path.isdir(os.path.join(parentloc,'matrices')): 43 self.datafilespath = parentloc 44 elif os.path.isdir(os.path.join(self.petscdir.dir, '..', '..','Datafiles')) & os.path.isdir(os.path.join(self.petscdir.dir, '..','..', 'Datafiles', 'Matrices')): 45 self.datafilespath = os.path.join(self.petscdir.dir, '..','..', 'Datafiles') 46 return 47 48 def configure(self): 49 self.executeTest(self.getDatafilespath) 50 return 51