#!/usr/bin/env python """ Make PETSc appear to be a Python package; so it can be depended on by petsc4py """ def setup(): import os,sys os.environ['PETSC_DIR'] = os.path.abspath(os.getcwd()) os.environ['PETSC_ARCH'] = 'arch-python-test' os.chdir(os.environ['PETSC_DIR']) sys.path.insert(0,os.path.join(os.environ['PETSC_DIR'],'config')) return def configure(prefix): import configure configure.petsc_configure(['--with-fc=0','--with-mpi=0','--with-shared-libraries','--prefix='+prefix]) # force save of configure information, or build will fail to load it # work around bug in logger.Logger that when log file is closed Logger.defaultLog still points to something import logger logger.Logger.defaultLog = None return def build(): import builder builder.PETScMaker().run() # work around bug in logger.Logger that when log file is closed Logger.defaultLog still points to something import logger logger.Logger.defaultLog = None return def install(prefix): import install import sys import os install.Installer(sys.argv[1:]+['--destDir='+prefix]).run() # temporary hack - delete log files created by BuildSystem - when 'sudo make install' is invoked delfiles=['RDict.db','RDict.log','build.log','default.log','build.log.bkp','default.log.bkp'] for delfile in delfiles: if os.path.exists(delfile) and (os.stat(delfile).st_uid==0): os.remove(delfile) if __name__ == '__main__': setup() configure("/Users/barrysmith/tmp/petsc-install") build() install("/Users/barrysmith/tmp/petsc-install") # -----------------------------------------------------------------------------