xref: /petsc/config/BuildSystem/config/packages/ascem-io.py (revision feff33ee0b5b037fa8f9f294dede656a2f85cc47)
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