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.downloadonWindows= 0 13 self.hastests = 1 14 self.useddirectly = 0 15 return 16 17 def setupDependencies(self, framework): 18 config.package.Package.setupDependencies(self, framework) 19 self.compilerFlags = framework.require('config.compilerFlags', self) 20 self.mpi = framework.require('config.packages.MPI',self) 21 self.hdf5 = framework.require('config.packages.hdf5',self) 22 self.deps = [self.mpi,self.hdf5] 23 return 24 25 def Install(self): 26 import os 27 self.pushLanguage('C') 28 if self.hdf5.include: 29 MAKEARGS = 'MACHINE="" CC="'+self.getCompiler()+' '+self.updatePackageCFlags(self.getCompilerFlags())+'" HDF5_INCLUDE_DIR="'+self.hdf5.include[0]+'"' 30 else: 31 MAKEARGS = 'MACHINE="" CC="'+self.getCompiler()+' '+self.updatePackageCFlags(self.getCompilerFlags())+'"' 32 self.popLanguage() 33 INSTALLARGS = 'ASCEMIO_INSTALL_DIR="'+self.installDir+'"' 34 g = open(os.path.join(self.packageDir,'compiledata'),'w') 35 g.write(MAKEARGS+INSTALLARGS) 36 g.close() 37 38 if self.installNeeded('compiledata'): 39 try: 40 self.logPrintBox('Compiling and installing ascem-io; this may take several minutes') 41 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) 42 except RuntimeError as e: 43 raise RuntimeError('Error running make on ascem-io: '+str(e)) 44 self.postInstall(output+err,'compiledata') 45 return self.installDir 46 47 48