<div dir="ltr">On Thu, Apr 11, 2013 at 9:48 AM, Satish Balay <span dir="ltr"><<a href="mailto:balay@mcs.anl.gov" target="_blank">balay@mcs.anl.gov</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Thu, 11 Apr 2013, Matthew Knepley wrote:<br>
<br>
> On Thu, Apr 11, 2013 at 9:38 AM, Satish Balay <<a href="mailto:balay@mcs.anl.gov">balay@mcs.anl.gov</a>> wrote:<br>
><br>
> > On Thu, 11 Apr 2013, Matthew Knepley wrote:<br>
> ><br>
> > > On Thu, Apr 11, 2013 at 9:17 AM, Satish Balay <<a href="mailto:balay@mcs.anl.gov">balay@mcs.anl.gov</a>> wrote:<br>
> > ><br>
> > > > On Thu, 11 Apr 2013, Matthew Knepley wrote:<br>
> > > ><br>
> > > > > On Wed, Apr 10, 2013 at 7:53 PM, Satish Balay <<a href="mailto:balay@mcs.anl.gov">balay@mcs.anl.gov</a>><br>
> > wrote:<br>
> > > > ><br>
> > > > > > How do we handle these packages with complicated dependencies [they<br>
> > > > > > are complicated as petsc dependencies?]<br>
> > > > > ><br>
> > > > > > In this report hdf5 was built with szip-2.1 and zlib-1.2.7. So how<br>
> > > > > > does petsc configure automatically detect this?<br>
> > > > > ><br>
> > > > > > And I've recently used the following for hdf5/necddf5 on fusion<br>
> > [with<br>
> > > > > > the extra implicit depenceny of hdf5 on zlib, and netcdf5 on hdf5<br>
> > from<br>
> > > > > > within configure]<br>
> > > > > ><br>
> > > > > >     '--with-hdf5-lib=-L/soft/hdf5/1.8.6-parallel/lib -lhdf5_hl<br>
> > -lhdf5<br>
> > > > > > -lgpfs',<br>
> > > > > ><br>
> > > > > >     '--with-netcdf-lib=-L/soft/netcdf/4.1.1-parallel/lib -lnetcdff<br>
> > > > > > -lnetcdf -L/usr/kerberos/lib64 -lcurl -ldl -lgssapi_krb5 -lkrb5<br>
> > > > -lk5crypto<br>
> > > > > > -lcom_err -lidn -lssl -lcrypto -lz',<br>
> > > > > ><br>
> > > > > > Yeah - things work if the user knows the dependencies and the link<br>
> > > > > > command for those dependencies - and specify it to petsc configure<br>
> > as<br>
> > > > > > above. But I'm not sure how to autodetect this.<br>
> > > > > ><br>
> > > > > > Also currently -lz is handled in package.py with<br>
> > > > > > 'self.needsCompression' similar to 'self.needsMath' with the<br>
> > detection<br>
> > > > > > of -lz in libraires.py:checkCompression() - but one can't specify a<br>
> > > > > > --with-zlib-lib option this way. I guess this part can be fixed by<br>
> > > > > > migrating it a standalone package z.py. [And somehow handle the<br>
> > > > > > optional part of this dependency for hdf5]<br>
> > > > ><br>
> > > > ><br>
> > > > > We already have a mechanism for this. Lots of packages depend on<br>
> > > > > other packages. This is just screwed up in the case of libz because<br>
> > > > > someone (maybe me) did not want to write an entire package file for<br>
> > > > > it, and instead copped out with the needsCompression.<br>
> > > ><br>
> > > > Currently we handle 'mandatory' dependencies properly - and optional<br>
> > > > >depencencies for --download-pakcage somewhat - but not for<br>
> > > > --with-package-dir<br>
> > > ><br>
> > > > For hdf5 - handling just zlib.py is not sufficient. Do we add szip.py,<br>
> > > > zlib.py, gpfs.py [and perhaps more] for hdf5? And somehow use these as<br>
> > > > optionaly when testing for user provided --with-hdf5? Which package<br>
> > > > currently implements this usage [to check for this optionaly<br>
> > > > dependency - and give the correct error]?<br>
> > > ><br>
> > > > i.e In this case - when the user specified --with-hdf5-dir option. We<br>
> > > > had to print an error.:<br>
> > > >  * please provide --with-zlib-dir and --with-szip-dir options.<br>
> > > > [For a different user - with the same usage - there would be no error]<br>
> > > ><br>
> > > > For netcdf above one would have kerbros.py, curl.py and perhaps more?<br>
> > ><br>
> > ><br>
> > > We have had this same discussion a million times, and we always<br>
> > eventually<br>
> > > get to the same answer and forget. Do we need our own error message for<br>
> > > petsc-dev?<br>
> > ><br>
> > > We cannot possibly guess everything that can go wrong. What we need is a<br>
> > > system<br>
> > > where the user can specify what he actually wants and we check it. So,<br>
> > zlib<br>
> > > and<br>
> > > everything else are optional dependencies for hdf5. If something is not<br>
> > > specified, it<br>
> > > fails, and the user goes back and specifies the right thing.<br>
> ><br>
> > Sure - but specify how? specify everything with<br>
> > --with-hdf5-lib,--with-hdf5-include options?<br>
> ><br>
> > Or somehow he knows that he has to specify<br>
> > --with-zlib-include/-with-zlib-lib options?<br>
> ><br>
><br>
> This. It would be nice if HDF5 would tell us about its dependencies, but if<br>
> it does not, then<br>
> the user has to, and this is our system (packages).<br>
<br>
</div></div>So we would start adding zlib.py, szip.py and manymore [and support<br>
--download-zlib --download-szip]. And if user gets the error:<br>
<br>
--with-hdf5-dir=/foo/bar does not work.<br>
<br>
So he/she send us configure.log<br>
<br>
Then we look at it and respond saying: you need to specify --with-zlib-dir --with-szip-dir options aswell.<br>
<br>
Does this look right?</blockquote><div><br></div><div style>Yes, that is what I think makes sense.</div><div style><br></div><div style>We can always try to add another layer that 'greps' for libz in the hdf5 error message and guesses that</div>
<div style>the user forgot it, but hopefully before we get to it, a sane storage library appears, or HDF5 gets its act</div><div style>together.</div><div style><br></div><div style>   Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span class="HOEnZb"><font color="#888888"><br>
Satish<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
><br>
>    Matt<br>
><br>
><br>
> > This thread started becasue one expected --with-hdf5-dir to be<br>
> > sufficient - and its not.  current workarround [becuase of<br>
> > self.needsCompression] is to specify zlib with LIBS otpions - and all<br>
> > other dependencies with --with-hdf5-lib. It works - but if were were<br>
> > satisfactory - this whole thread on petsc-dev wouldn't arise.<br>
> ><br>
> > Satish<br>
> ><br>
><br>
><br>
><br>
><br>
<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>
-- Norbert Wiener
</div></div>