[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[netCDF #MVM-110226]: HDF5 and configure



Hi Mathieu,

> we were trying to compile HDF5 with configure
> and we found that there is no option for hdf5 in it:
> ------
> dutour@dutour-Satellite-L655:~/netcdf-4.1.3$ ./configure --help | grep -i
> hdf
> --disable-netcdf-4      build with netcdf-4 (HDF5 and zlib required)
> --enable-netcdf4        build with netcdf-4 (HDF5 and zlib required)
> --enable-hdf4           build netcdf-4 with HDF4 read capability (HDF4,
> HDF5
> --enable-hdf4-file-tests
> get some HDF4 files from Unidata ftp site and test
> Forecast conventions. (Requires netCDF-4 and HDF5)
> Specify default file cache chunk size for HDF5
> files
> file chunk cache chunk for HDF5 files (should be
> for HDF5 files (a number between 0 and 1,
> ------
> We would have expected a --with-hdf5-prefix=.... but there is no
> such thing. Instead we used CPPFLAGS and LDFLAGS.
> 
> There may be some reason for that but right now this looks very
> strange.

The change in how the locations of the various libraries are handled
was to fix a bug caused by using "--with-hdf5=".  

I need to promote this to an FAQ answer, so people can see what lead
to this decision.  Here's a draft of what the FAQ will look like:

Q: Why was the "--with-hdf5=" configure option dropped in netCDF
   versions after 4.1.3?

A: It fails badly in the area of 32/64 bit platforms (i.e. platforms
   that want both a 32 bit and a 64 bit version of the library
   installed at the same time.) It also adds a lot of code to our
   build system.

   Since this is not the normal way that packages are built, the use
   of these options caused netCDF to require more documentation, and,
   what's worse, required that each installer read the documentation
   (this is not the usual case with Unix packages, which can generally
   be built without setting any options.)

   More importantly, the use of the --with-hdf5 option (and similar
   ones like --with-zlib, --with-szlib, --with-pnetcdf, --with-hdf4)
   cause two serious bugs:

   1 - No way for these options to work on platforms that have libraries
       in /lib and /lib64 for 32 and 64 bit builds.
   2 - Caused problem for for cross-compiles link the mingw32 build and
       builds on some supercomputers.

   Ultimately, it is only possible for the builder of the software to
   know what settings to use in the various FLAG environment
   variables. All of our attempts to "help" in this area just result
   in problems for some small (but important) fraction of the user
   base. Therefore I have decided that all these options must go, both
   in netCDF and in libCF. I regret the inconvenience this may cause
   users who have become accustomed to these options.

   A fuller explanation can be found here:
   
     https://www.unidata.ucar.edu/jira/browse/NCF-20
   
   and the conspiracy behind this decision is explained in the last
   paragraph of this netcdfgroup mailing list posting:

    
http://www.unidata.ucar.edu/mailing_lists/archives/netcdfgroup/2011/msg00345.html

--Russ


Russ Rew                                         UCAR Unidata Program
address@hidden                      http://www.unidata.ucar.edu



Ticket Details
===================
Ticket ID: MVM-110226
Department: Support netCDF
Priority: Normal
Status: Closed