[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