[petsc-dev] Requiring $prefix/lib for --with-pkg-dir=

Satish Balay balay at mcs.anl.gov
Thu May 28 16:23:36 CDT 2015


Sorry - haven't checked on this - and replying late..

On Mon, 11 May 2015, Jed Brown wrote:

> Satish Balay <balay at mcs.anl.gov> writes:
> 
> > For one - I want to get rid of 'self.libdir,self.altlibdir' usage [but
> > self.libdir is used allover configure - so I should look at this usage
> > more closely before I make this change].
> >
> > But to adress your issue - I expected packages that don't have 'lib' to
> > set: [as in config/BuildSystem/config/packages/cusp.py]
> >
> > self.libdir = ''.
> >
> > But to get libdir check working for mpicc etc - perhaps the following would
> > suffice?
> >
> >>>>>>>>
> > $ git diff config/BuildSystem/config/packages/MPI.py
> > diff --git a/config/BuildSystem/config/packages/MPI.py b/config/BuildSystem/config/packages/MPI.py
> > index 0a0cb2a..312de0c 100644
> > --- a/config/BuildSystem/config/packages/MPI.py
> > +++ b/config/BuildSystem/config/packages/MPI.py
> > @@ -68,6 +68,7 @@ class Configure(config.package.Package):
> >    def generateLibList(self, directory):
> >      if self.setCompilers.usedMPICompilers:
> >        self.liblist = []
> > +      self.libdir  = []
> >      return config.package.Package.generateLibList(self,directory)
> >  
> >    # search many obscure locations for MPI
> > <<<<<<<<<
> 
> Why should MPI be special?

You mean wrt 'self.libdir = []' change? In that piece of code - we are
using MPICompilers [and not a library]. So this is the way to indicate
it. [similar to 'cusp.py' code thats already present]

> 
> > To get this working more generally - perhaps the following change?
> >
> >>>>>>>>>
> > $ git diff config/BuildSystem/config/package.py |cat
> > diff --git a/config/BuildSystem/config/package.py b/config/BuildSystem/config/package.py
> > index 4c1f2c4..7a7da1b 100644
> > --- a/config/BuildSystem/config/package.py
> > +++ b/config/BuildSystem/config/package.py
> > @@ -322,7 +322,7 @@ class Package(config.base.Configure):
> >    def generateGuesses(self):
> >      d = self.checkDownload()
> >      if d:
> > -      for libdir in [self.libdir, self.altlibdir]:
> > +      for libdir in [self.libdir, self.altlibdir, '']:
> >          libdirpath = os.path.join(d, libdir)
> >          if not os.path.isdir(libdirpath):
> >            self.logPrint(self.PACKAGE+': Downloaded DirPath not found.. skipping: '+libdirpath)
> > @@ -358,7 +358,7 @@ class Package(config.base.Configure):
> >                             fakeExternalPackagesDir+' is reserved for --download-package scratch space. \n'+
> >                             'Do not install software in this location nor use software in this directory.')
> >  
> > -      for libdir in [self.libdir, self.altlibdir]:
> > +      for libdir in [self.libdir, self.altlibdir, '']:
> >          libdirpath = os.path.join(d, libdir)
> >          if not os.path.isdir(libdirpath):
> >            self.logPrint(self.PACKAGE+': UserSpecified DirPath not found.. skipping: '+libdirpath)
> > @@ -405,7 +405,7 @@ class Package(config.base.Configure):
> >            self.logPrint(self.PACKAGE+': SearchDir DirPath not found.. skipping: '+d)
> >            continue
> >          includedir = self.getIncludeDirs(d, self.includedir)
> > -        for libdir in [self.libdir, self.altlibdir]:
> > +        for libdir in [self.libdir, self.altlibdir, '']:
> >            libdirpath = os.path.join(d, libdir)
> >            if not os.path.isdir(libdirpath):
> >              self.logPrint(self.PACKAGE+': DirPath not found.. skipping: '+libdirpath)
> > <<<<<<<<<<<<<
> 
> Was there a reason to check in the first place?

You mean - check for existance of the dir? Its an optimization to
avoid numerous compilers [that would fail anyway] in configure.

> Having an explicit check for a $prefix/lib directory and then
> circumventing the check just adds complexity.

I think its still a net gain - and reduces the number of compiles invoked.

And the check for libdir = '' is explicitly looking at default
compiler paths. [so a more correct thingy - than a successful link
test with a nonexistant path?]

At some point someone could rewrite this whole thing [with each
package listing its posible libdir list] - but do you object to this
change as a fix to the current code?

Satish



More information about the petsc-dev mailing list