1import config.package 2import os 3 4class Configure(config.package.Package): 5 def __init__(self, framework): 6 config.package.Package.__init__(self, framework) 7 self.download = ['http://software.lanl.gov/ascem/tpls/ascem-io-2.2.tar.gz'] 8 self.downloaddirnames = ['ascem-io'] 9 self.includes = ['ascemio_util.h'] 10 self.liblist = [['libparallelio.a']] 11 self.functions = [] 12 self.hastests = 1 13 self.useddirectly = 0 14 return 15 16 def setupDependencies(self, framework): 17 config.package.Package.setupDependencies(self, framework) 18 self.compilerFlags = framework.require('config.compilerFlags', self) 19 self.mpi = framework.require('config.packages.MPI',self) 20 self.hdf5 = framework.require('config.packages.HDF5',self) 21 self.deps = [self.mpi,self.hdf5] 22 return 23 24 def Install(self): 25 import os 26 self.pushLanguage('C') 27 if self.hdf5.include: 28 MAKEARGS = 'MACHINE="" CC="'+self.getCompiler()+' '+self.updatePackageCFlags(self.getCompilerFlags())+'" HDF5_INCLUDE_DIR="'+self.hdf5.include[0]+'"' 29 else: 30 MAKEARGS = 'MACHINE="" CC="'+self.getCompiler()+' '+self.updatePackageCFlags(self.getCompilerFlags())+'"' 31 self.popLanguage() 32 INSTALLARGS = 'ASCEMIO_INSTALL_DIR="'+self.installDir+'"' 33 g = open(os.path.join(self.packageDir,'compiledata'),'w') 34 g.write(MAKEARGS+INSTALLARGS) 35 g.close() 36 37 if self.installNeeded('compiledata'): 38 try: 39 self.logPrintBox('Compiling and installing ascem-io; this may take several minutes') 40 output,err,ret = config.package.Package.executeShellCommand('cd '+os.path.join(self.packageDir,'src')+' && '+self.make.make+' '+MAKEARGS+' && '+self.make.make+' '+INSTALLARGS+' install', timeout=2500, log = self.log) 41 except RuntimeError as e: 42 raise RuntimeError('Error running make on ascem-io: '+str(e)) 43 self.postInstall(output+err,'compiledata') 44 return self.installDir 45