[petsc-dev] BuildSystem: how to prevent 'make clean' before 'make'
Satish Balay
balay at mcs.anl.gov
Wed Nov 29 17:29:16 CST 2017
Right now there is no provision for this. The following can add it.
>>>>>>>>
$ git diff
diff --git a/config/BuildSystem/config/package.py b/config/BuildSystem/config/package.py
index 14de19502b..f9a2e68a25 100644
--- a/config/BuildSystem/config/package.py
+++ b/config/BuildSystem/config/package.py
@@ -80,6 +80,7 @@ class Package(config.base.Configure):
self.makerulename = '' # some packages do too many things with the make stage; this allows a package to limit to, for example, just building the libraries
self.installedpetsc = 0
self.installwithbatch = 0 # install the package even though configure is running in the initial batch mode; f2blaslapack and fblaslapack for example
+ self.skipcleanbeforebuild = 0 # skip running 'make clean' before starting a fresh build of a package
return
def __str__(self):
@@ -1322,7 +1323,8 @@ class GNUPackage(Package):
if self.parallelMake: pmake = self.make.make_jnp+' '+self.makerulename+' '
else: pmake = self.make.make+' '+self.makerulename+' '
- output2,err2,ret2 = config.base.Configure.executeShellCommand('cd '+self.packageDir+' && '+self.make.make+' clean', timeout=200, log = self.log)
+ if not self.skipcleanbeforebuild:
+ output2,err2,ret2 = config.base.Configure.executeShellCommand('cd '+self.packageDir+' && '+self.make.make+' clean', timeout=200, log = self.log)
output3,err3,ret3 = config.base.Configure.executeShellCommand('cd '+self.packageDir+' && '+pmake, timeout=6000, log = self.log)
self.logPrintBox('Running make install on '+self.PACKAGE+'; this may take several minutes')
self.installDirProvider.printSudoPasswordMessage(self.installSudo)
<<<<<<<<
But then - a dirty build dir might break subsequent builds with the same PETSC_ARCH [usually triggered when configure options change]
Satish
On Wed, 29 Nov 2017, Blaise A Bourdin wrote:
> Hi,
>
> I am trying to get BuildSystem to build pnetcdf (parallel netcdf automatically).
> The build process is very straightforward (configure; make; make install)
> Looking at other packages, I came up with the following for $PETSC_DIR/config/BuildSystem/config/packages/pnetcdf.py
>
> import config.package
> import os
>
> class Configure(config.package.GNUPackage):
> def __init__(self, framework):
> config.package.Package.__init__(self, framework)
> self.download = ['http://cucis.ece.northwestern.edu/projects/PnetCDF/Release/parallel-netcdf-1.8.1.tar.gz']
> self.functions = ['ncmpi_create']
> self.includes = ['pnetcdf.h']
> self.liblist = [['libpnetcdf.a']]
> self.downloaddirnames = ['parallel-netcdf-1.8.1']
> return
>
> def setupDependencies(self, framework):
> config.package.GNUPackage.setupDependencies(self, framework)
> self.mpi = framework.require('config.packages.MPI', self)
> self.deps = [self.mpi]
> return
>
> def formGNUConfigureArgs(self):
> args = config.package.GNUPackage.formGNUConfigureArgs(self)
> args.append('LIBS="'+self.compilers.LIBS+'"')
> return args
>
>
> Looking at configure.log, it looks like BuildSystem does a make clean between configure and make
> Unfortunately, there must be something wrong with the parallel-netcdf makefile, as make clean erases some of the files generated by pkgconfig (?), so that make install later fails...
>
> Is there an easy way to skip the 'make clean' step?
>
> Blaise
>
>
>
>
More information about the petsc-dev
mailing list