source: issm/trunk-jpl/externalpackages/petsc-dev/src/config/PETSc/packages/c2html.py@ 11896

Last change on this file since 11896 was 11896, checked in by habbalf, 13 years ago

petsc-dev : Petsc development code in external packages. Mercurial updates

File size: 3.3 KB
Line 
1import PETSc.package
2
3class Configure(PETSc.package.NewPackage):
4 def __init__(self, framework):
5 PETSc.package.NewPackage.__init__(self, framework)
6 self.download = ['http://ftp.mcs.anl.gov/pub/petsc/externalpackages/c2html.tar.gz']
7 self.complex = 1
8 self.double = 0
9 self.requires32bitint = 0
10 self.worksonWindows = 1
11 self.downloadonWindows = 1
12
13 def Install(self):
14 import os
15 if self.framework.argDB['with-batch']:
16 args = ['--prefix='+self.installDir]
17 else:
18 args = ['--prefix='+self.installDir, '--with-cc='+'"'+self.setCompilers.CC+'"']
19 args = ' '.join(args)
20 fd = file(os.path.join(self.packageDir,'c2html.args'), 'w')
21 fd.write(args)
22 fd.close()
23 if self.installNeeded('c2html.args'):
24 # check if flex or lex are in PATH
25 self.getExecutable('flex')
26 self.getExecutable('lex')
27 if not hasattr(self, 'flex') and not hasattr(self, 'lex'):
28 raise RuntimeError('Cannot build c2html. It requires either "flex" or "lex" in PATH. Please install flex and retry.\n\
29 Or disable c2html with --with-c2html=0')
30 try:
31 output,err,ret = PETSc.package.NewPackage.executeShellCommand('cd '+self.packageDir+' && ./configure '+args, timeout=900, log = self.framework.log)
32 except RuntimeError, e:
33 raise RuntimeError('Error running configure on c2html: '+str(e)+'.\n\
34 Try disable c2html with --with-c2html=0')
35 try:
36 output,err,ret = PETSc.package.NewPackage.executeShellCommand('cd '+self.packageDir+' && make && make install && make clean', timeout=2500, log = self.framework.log)
37 except RuntimeError, e:
38 raise RuntimeError('Error running make; make install on c2html: '+str(e)+'.\n\
39 Try disable c2html with --with-c2html=0')
40 output,err,ret = PETSc.package.NewPackage.executeShellCommand('cp -f '+os.path.join(self.packageDir,'c2html.args')+' '+self.confDir+'/c2html', timeout=5, log = self.framework.log)
41 self.framework.actions.addArgument('C2HTML', 'Install', 'Installed c2html into '+self.installDir)
42 self.binDir = os.path.join(self.installDir, 'bin')
43 self.c2html = os.path.join(self.binDir, 'c2html')
44 self.addMakeMacro('C2HTML',self.c2html)
45 return self.installDir
46
47 def alternateConfigureLibrary(self):
48 self.checkDownload(1)
49
50 def configure(self):
51 '''Determine whether the c2html exist or not'''
52
53 if (self.framework.clArgDB.has_key('with-c2html') and not self.framework.argDB['with-c2html']) or \
54 (self.framework.clArgDB.has_key('download-c2html') and not self.framework.argDB['download-c2html']):
55 self.framework.logPrint("Not checking c2html on user request\n")
56 return
57
58 if self.petscdir.isClone:
59 self.framework.logPrint('PETSc clone, checking for c2html\n')
60 self.getExecutable('c2html', getFullPath = 1)
61
62 if hasattr(self, 'c2html'):
63 self.addMakeMacro('C2HTML ', self.c2html)
64 self.framework.logPrint('Found c2html, will not install c2html')
65 else:
66 self.framework.logPrint('Installing c2html')
67 if not self.framework.argDB.get('download-c2html'): self.framework.argDB['download-c2html'] = 1
68 PETSc.package.NewPackage.configure(self)
69 else:
70 self.framework.logPrint("Not a clone of PETSc, don't need c2html\n")
71 return
Note: See TracBrowser for help on using the repository browser.