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
> 
> 
> 
> 

Reply via email to