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