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