1import config.package 2 3class Configure(config.package.Package): 4 def __init__(self, framework): 5 config.package.Package.__init__(self, framework) 6 self.gitcommit = '668c2e36991b0a2c39275949277e6ce817414f94' #master sep-25-2020 7 self.download = ['git://https://github.com/libMesh/libmesh.git'] 8 self.functions = [] 9 self.includes = [] 10 self.skippackagewithoptions = 1 11 self.useddirectly = 0 12 self.linkedbypetsc = 0 13 self.builtafterpetsc = 1 14 return 15 16 def setupHelp(self, help): 17 config.package.Package.setupHelp(self,help) 18 import nargs 19 return 20 21 def setupDependencies(self, framework): 22 config.package.Package.setupDependencies(self, framework) 23 self.setCompilers = framework.require('config.setCompilers',self) 24 self.sharedLibraries = framework.require('PETSc.options.sharedLibraries', self) 25 self.installdir = framework.require('PETSc.options.installDir',self) 26 return 27 28 def Install(self): 29 import os 30 31 # if installing as Superuser than want to return to regular user for clean and build 32 if self.installSudo: 33 newuser = self.installSudo+' -u $${SUDO_USER} ' 34 else: 35 newuser = '' 36 37 # if installing prefix location then need to set new value for PETSC_DIR/PETSC_ARCH 38 if self.argDB['prefix']: 39 newdir = 'PETSC_DIR='+os.path.abspath(os.path.expanduser(self.argDB['prefix']))+' ' 40 prefix = os.path.abspath(os.path.expanduser(self.argDB['prefix'])) 41 else: 42 newdir = ' ' 43 prefix = os.path.join(self.petscdir.dir,self.arch) 44 45 self.addDefine('HAVE_LIBMESH',1) 46 self.addMakeMacro('LIBMESH','yes') 47 self.addMakeRule('libmeshbuild','', \ 48 ['@echo "*** Building libmesh ***"',\ 49 '@${RM} -f ${PETSC_ARCH}/lib/petsc/conf/libmesh.errorflg',\ 50 '@(cd '+self.packageDir+' && \\\n\ 51 '+newdir+' ./configure --prefix='+prefix+' && \\\n\ 52 '+newdir+' '+self.make.make_jnp+' ) > ${PETSC_ARCH}/lib/petsc/conf/libmesh.log 2>&1 || \\\n\ 53 (echo "**************************ERROR*************************************" && \\\n\ 54 echo "Error building libmesh. Check ${PETSC_ARCH}/lib/petsc/conf/libmesh.log" && \\\n\ 55 echo "********************************************************************" && \\\n\ 56 touch ${PETSC_ARCH}/lib/petsc/conf/libmesh.errorflg && \\\n\ 57 exit 1)']) 58 self.addMakeRule('libmeshinstall','', \ 59 ['@echo "*** Installing libmesh ***"',\ 60 '@(cd '+self.packageDir+' && \\\n\ 61 '+newuser+newdir+' make install ) >> ${PETSC_ARCH}/lib/petsc/conf/libmesh.log 2>&1 || \\\n\ 62 (echo "**************************ERROR*************************************" && \\\n\ 63 echo "Error building libmesh. Check ${PETSC_ARCH}/lib/petsc/conf/libmesh.log" && \\\n\ 64 echo "********************************************************************" && \\\n\ 65 exit 1)']) 66 if self.argDB['prefix']: 67 self.addMakeRule('libmesh-build','') 68 # the build must be done at install time because PETSc shared libraries must be in final location before building libmesh 69 self.addMakeRule('libmesh-install','libmeshbuild libmeshinstall') 70 else: 71 self.addMakeRule('libmesh-build','libmeshbuild libmeshinstall') 72 self.addMakeRule('libmesh-install','') 73 74 return self.installDir 75 76 def alternateConfigureLibrary(self): 77 self.addMakeRule('libmesh-build','') 78 self.addMakeRule('libmesh-install','') 79 80