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