Update
Description:
Updated the configure scripts. Fortran and C++ didn't have proper
checks for Linux LFS support. Also needed to remove the "-g" flag
from the compile line if --enable-production is set. For that, I took
how it's being done in HDF5 Lite...
Platforms tested:
Linux
Bug Fix
Description:
Some compilers were having problems if we included the -I/usr/include
and -L/usr/lib flags which are completely redundant. This could occur
if the user configured with something like:
./configure --with-zlib=/usr/include,/usr/lib
Solution:
Check if the --with-* command is specified with /usr/include and
/usr/lib. If so, then don't place them in the compile macros.
Platforms tested:
Linux, Modi4
Another patch
Description:
libtool will fail if pgcc compiler is used.
Now apply the patch if gcc is NOT used.
Platforms tested:
Tested only on eirene because I am sure it is correct and am trying
to beat the daily test checkout.
a patch
Description:
When intel compilers (icc, ecc) are used in a linux system, the libtool
generated has a wrong setting of '$wl" for linking.
Put in a "ed ..." command script to edit the generated libtool with
the proper setting. The libtool people has fixed this problem.
This can ben taken out when that version of libtool is released.
Platforms tested:
Tested h5committest {arabica (fortran), eirene (fortran, C++)
modi4 (parallel, fortran)}? YES.
Other platforms/configurations tested? platinum and titan using
gcc and intel CC.
Misc. update:
Update MANIFEST if you add or remove any file.
Update release_docs/RELEASE for bug fixes, new features, etc.
Update applicable document files too.
Lots of performance improvements & a couple new internal API interfaces.
Description:
Performance Improvements:
- Cached file offset & length sizes in shared file struct, to avoid
constantly looking them up in the FCPL.
- Generic property improvements:
- Added "revision" number to generic property classes to speed
up comparisons.
- Changed method of storing properties from using a hash-table
to the TBBT routines in the library.
- Share the propery names between classes and the lists derived
from them.
- Removed redundant 'def_value' buffer from each property.
- Switching code to use a "copy on write" strategy for
properties in each list, where the properties in each list
are shared with the properties in the class, until a
property's value is changed in a list.
- Fixed error in layout code which was allocating too many buffers.
- Redefined public macros of the form (H5open()/H5check, <variable>)
internally to only be (<variable>), avoiding innumerable useless
calls to H5open() and H5check_version().
- Reuse already zeroed buffers in H5F_contig_fill instead of
constantly re-zeroing them.
- Don't write fill values if writing entire dataset.
- Use gettimeofday() system call instead of time() system when
checking the modification time of a dataset.
- Added reference counted string API and use it for tracking the
names of objects opening in a file (for the ID->name code).
- Removed redundant H5P_get() calls in B-tree routines.
- Redefine H5T datatype macros internally to the library, to avoid
calling H5check redundantly.
- Keep dataspace information for dataset locally instead of reading
from disk each time. Added new module to track open objects
in a file, to allow this (which will be useful eventually for
some FPH5 metadata caching issues).
- Remove H5AC_find macro which was inlining metadata cache lookups,
and call function instead.
- Remove redundant memset() calls from H5G_namei() routine.
- Remove redundant checking of object type when locating objects
in metadata cache and rely on the address only.
- Create default dataset object to use when default dataset creation
property list is used to create datasets, bypassing querying
for all the property list values.
- Use default I/O vector size when performing raw data with the
default dataset transfer property list, instead of querying for
I/O vector size.
- Remove H5P_DEFAULT internally to the library, replacing it with
more specific default property list based on the type of
property list needed.
- Remove redundant memset() calls in object header message (H5O*)
routines.
- Remove redunant memset() calls in data I/O routines.
- Split free-list allocation routines into malloc() and calloc()-
like routines, instead of one combined routine.
- Remove lots of indirection in H5O*() routines.
- Simplify metadata cache entry comparison routine (used when
flushing entire cache out).
- Only enable metadata cache statistics when H5AC_DEBUG is turned
on, instead of always tracking them.
- Simplify address comparison macro (H5F_addr_eq).
- Remove redundant metadata cache entry protections during dataset
creation by protecting the object header once and making all
the modifications necessary for the dataset creation before
unprotecting it.
- Reduce # of "number of element in extent" computations performed
by computing and storing the value during dataspace creation.
- Simplify checking for group location's file information, when file
has not been involving in file-mounting operations.
- Use binary encoding for modification time, instead of ASCII.
- Hoist H5HL_peek calls (to get information in a local heap)
out of loops in many group routine.
- Use static variable for iterators of selections, instead of
dynamically allocation them each time.
- Lookup & insert new entries in one step, avoiding traversing
group's B-tree twice.
- Fixed memory leak in H5Gget_objname_idx() routine (tangential to
performance improvements, but fixed along the way).
- Use free-list for reference counted strings.
- Don't bother copying object names into cached group entries,
since they are re-created when an object is opened.
The benchmark I used to measure these results created several thousand
small (2K) datasets in a file and wrote out the data for them. This is
Elena's "regular.c" benchmark.
These changes resulted in approximately ~4.3x speedup of the
development branch when compared to the previous code in the
development branch and ~1.4x speedup compared to the release
branch.
Additionally, these changes reduce the total memory used (code and
data) by the development branch by ~800KB, bringing the development
branch back into the same ballpark as the release branch.
I'll send out a more detailed description of the benchmark results
as a followup note.
New internal API routines:
Added "reference counted strings" API for tracking strings that get
used by multiple owners without duplicating the strings.
Added "ternary search tree" API for text->object mappings.
Platforms tested:
Tested h5committest {arabica (fortran), eirene (fortran, C++)
modi4 (parallel, fortran)}
Other platforms/configurations tested?
FreeBSD 4.7 (sleipnir) serial & parallel
Solaris 2.6 (baldric) serial
new feature
Description:
Added MPICH/MPE instrumentation support.
All source code are bracketed by the macro H5_HAVE_MPE.
Use "--enable-mpe" to configure it in.
Currently only worked in Eirene because the MPE library is
not installed in all machines yet.
Platforms tested:
Tested h5committest {arabica (fortran), eirene (fortran, C++)
modi4 (parallel, fortran)}? Yep.
Other platforms/configurations tested?
--enable-mpe feature tested in Eirene.
Cleanup
Description:
Removed the option (--enable-parallel=mpich). It did not work.
Platforms tested:
Tested h5committest {arabica (fortran), eirene (fortran, C++)
modi4 (parallel, fortran)}? All passed.
New feature.
Description:
Add in '--enable-filters=filter1,filter2' flag to configure script. This
can also be used as '--enable-filters=all' or just '--enable-filters' to
enable all the internal I/O filters in the library.
This flag can also be set to '--disable-filters' to disable all the internal
I/O filters. Individual filters can not be disabled due to the limitations
of autoconf.
Additionally, added "H5_HAVE_FILTER_<foo>" macros to H5pubconf.h header
file, so the presence of each filter can be detected.
This is in preparation for Kent's shuffling filter to be imported shortly.
Platforms tested:
Tested h5committest {arabica (fortran), eirene (fortran, C++)
modi4 (parallel, fortran)}
Tested FreeBSD 4.7 (sleipnir) also
Update
Description:
Added new files to the MANIFEST and added a new configure switch for
enabling building of the Flexible parallel HDF5 module.
Platforms tested:
Modi4 Eirene Arabica
fix/feature
Description:
v1.4's configure had enable-trace default as on. That is not right for
production code as it increase the object code and uses up compute time.
Changed --enable-trace default to depend on --enable-debug. If debug is
on, trace is on. Otherwise it is off.
Also added the printing of CFLAGS, CPPFLAGS, and LDFLAGS in the summary.
Platforms tested:
eirene, arabica (pp).
Small Coding Change
Description:
Zeroed out the MPI_Status structure in one of our tests to determine
if MPI_Get_count() works on the machine or not. This is similar to
what we do in the library code to the status...
Fix
Description:
Better check for versions of Linux. We didn't support kernels with
major version numbers >2 and minor version numbers <4...
Solution:
Fixed to check just that.
Platforms tested:
Linux 2.2 && 2.4
Update, Bug Fix, and Feature Add
Description:
- Updated how AC_{ENABLE,WITH} help messages were being generated.
Autoconf now gives you an AC_HELP_STRING macro to use to create
them.
- Fixed the problem with Linux LFS on RedHat 7.3 machines. It wasn't
finding getdents64(), so we can't rely on that being present
anymore...
- Added GPFS detection and setting.
- Updated how compression is specified. It's no longer necessary to
test for HAVE_ZLIB_H, HAVE_LIBZ, and HAVE_COMPRESS2. The one macro
{H5_}HAVE_COMPRESSION takes care of all of these.
Solution:
Changed the check for Linux LFS from looking for getdents() to
looking at the version number of the kernel (using the uname -r
command). You can still override with the --enable-linux-lfs switch
if you really believe that your <2.4 kernel has LFS support.
Platforms tested:
Linux (2.2 and 2.4)
New feature
Description:
Changed parallel I/O tests to use test script instead of just running
testphdf5 executable. This allows the MPI-posix driver to be tested easily.
Platforms tested:
FreeBSD 4.6 (sleipnir) w/parallel and IRIX64 6.5 (modi4) w/parallel
New feature
Description:
Add support in for "dmalloc" debugging malloc library to configure script
and library headers.
Platforms tested:
IRIX64 6.5 (modi4) and FreeBSD 4.6 (sleipnir)
Porting to AIX 5.x
Description:
These have been tested out in v1.4. Folding them in here.
aclocal.m4:
Snow's names were not included in the special hack.
Added its names in.
Removed the trailing * in pacific.llnl.gov too.
configure.in:
fortran/configure.in:
Added a case to group all AIX 5.* versions as aix5.x. This allows
them to share one common config/*aix5.x file.
configure:
fortran/configure:
Derived from configure.in (done in eirene).
config/powerpc-ibm-aix4.x:
Added a comment explaining why not to cache sizeof size_t and off_t
fortran/config/powerpc-ibm-aix4.x:
Turned of cache of sizeof size_t and off_t because they are depedent
on compiler options.
config/powerpc-ibm-aix5.x:
fortran/config/powerpc-ibm-aix5.x:
New config file for AIX 5.X
Platforms tests:
LLNL Blue, Frost, Snow, both serial and parallel.
Update
Description:
Updated the h5vers script to automatically update the configure.in
files so that they reflect the correct version in the AC_INIT line.
Platforms tested:
Linux
Update
Description:
Updated the way we used the AC_INIT macros so that it's current to
the new standard way and not deprecated anymore.
Also, added a test for some functions during parallel Fortran
configure. This required the creation of an H5config_fortran.h file
so that we can test for these...
Platforms tested:
Elena is going to test the changes to the fortran after she checks in
her other code. I will test on SDSC machines after getting her code.
The other changes were tested on Linux.
Feature Fix
Description:
Modified the AC_OUTPUT macro to coincide with the now-standard way of
doing things. I.e., you put all of the files you want to generate
into the AC_CONFIG_FILES macro and invode AC_OUTPUT with no
parameters.
Platforms tested:
Linux
Bug fix
Description:
Zlib-compression was reported according to if a Z-library (e.g., libz.a)
has been found. It actually needs the presence of a valid zlib.h header
file and the compress2() routine.
Solution:
Changed the IF_YES_NO to be more general by accepting multiple arguments
and changed the Zlib-compression depends on zlib.h header and the
compress2() routine.
Platforms tested:
Eirene.
Autotools Update
Description:
I've updated autoconf, automake, and libtool to the latest/greatest
versions; 2.53, 1.6, and 1.4.2 resp.
Many changes come with the new versions:
- ltconfig is no longer used
- acconfig.h is no longer used (#define values are declared with
the macro)
- regeneration of all of the aclocal.m4, configure, and
H5config.h.in files.
- new config.{guess,sub} files
- new ltmain.sh file
Platforms tested:
AIX (blue), and Linux
Code Motion
Description:
Removal of HDF4 from the configure/Makefiles. This is a precursor to
the actual physical removal of the HDF4 tools from the HDF5 tree.
Platforms tested:
Arabica, Dangermouse
Bug Fix
Description:
Didn't need to test that the Pablo library had a function in it only
that it was there.
Solution:
Removed that check. Just checked if we can actually find the physical
library and include files where the user tells us they're hiding.
Platforms tested:
Linux
Bug Fix
Description:
Fixed wrong test for the HAVE_PABLO flag. Was testing if it was not a
null string when I should have been testing if it was equal to "yes".
Solution:
Changed test so that it checks if it's equal to "yes" instead of
non-null...
Platforms tested:
Linux
Bug Fix
Description:
Some -I paths weren't included in the h5cc script. That would cause
the compiler to fail if it was trying to find gass header files or
the like.
Solution:
Added the CPPFLAGS macro to the h5cc.in file so that it'll be there
when it's generated. This will also include some -D options which we
compiled the library with, like the LFS flags on Linux.
Also changed the configure* files so that it will "chmod" the created
h5cc file to 755 (executable) since that wasn't happening all the
time...
Platforms tested:
Linux
Purpose:
Bug Fix
Description:
On some systems, doing the shell command:
if test -z $DEBUG_PKG; then
doesn't work if $DEBUG_PKG is null..
Solution:
Changed to "if test "X$DEBUG_PKG" = "X"; then" which will do the same
thing but without the error...
Platforms tested:
Linux
Bug Fix
Description:
When printing out the summary information after the configuration,
the Compilation Mode and Debugging information would be incorrect.
The library is set to compile to "Production" mode for a release.
Yet, the default compilation mode before that was "Development". If
the user doesn't specify "--enable-production" on the command line,
the configure defaults to "Production" mode, but the summary still
reported "Development" mode.
Solution:
Modified script so that after we've determined which compilation mode
we're in, we reset the "enable_production" variable to the correct
setting. So, we no longer have a "default". The summary part then
reads the new value and uses that to determine which mode we're in.
The debugging summary information was reworked so that it would
output the correct summary information. Slight hacking of the summary
script to check the values a bit more closely...
Platforms tested:
Linux (eirene)
New feature check
Description:
Added check to determine if malloc(0) returns a valid pointer for a
particular architecture.
Platforms tested:
FreeBSD 4.5 (sleipnir) where malloc(0) works
Cray SV1 (killeen) where malloc(0) doesn't work
Bug fix.
Description:
FreeBSD would fail the threadsafe feature if static-exec is not on.
Solution:
Force enable-static-exec on if enable-threadsafe is on.
Also moved the chunk of FreeBSD specific code for Pthread setup
from configure.in to config/freebsd.
Also changed enable-threadsafe to check on linking pthread program.
That takes care of platforms (e.g. freebsd) that has pthread
support builtin the default C library. Now one can just use
"enable-threadsafe" if the compiler has pthread support by default.
Platforms tested:
eirene, Sleipnir
Removing the DPSS (gridstorage) driver source code.
Description:
The DPSS (using Grid-Storage) driver is retired.
Removed the configure option with-gridstorage from configure.in.
Cvs remove the following files
./src/H5FDdpss.c
./src/H5FDdpss.h
./test/dpss_read.c
./test/dpss_write.c
Regenerated Dependencies files (some had to be hand-edited since
'make depend' did not cover them.)
Removed reference to DPSS Virtual file driver from H5F.c.
Platforms tested:
modi4 (Parallel; -with-gass=...), eirene, arabica (fortran, cxx).
Purpose:
Feature Fix
Description:
The new feature (allowing the user to specify =DIR for a --with-xxx
option instead of requiring =INC,LIB for them) needed a better
explanation.
Solution:
Created a phoney --with-fnord option whose only purpose is to supply
a --help message.
Platforms tested:
Linux
Purpose:
Feature Add
Description:
Added the feature which will accept a directory for all of the
features which now accept an =INC,LIB directive. The old way of doing
things (=INC,LIB) is still valid, but we prefer the user uses the
=DIR method from now on. It saves typing.
Platforms tested:
Linux
Bug fix
Description:
GASS nor gridstorage worked any more because SSL library testing
was moved after them.
Solution:
Moved SSL library to be tested before GASS or Gridstorage options
are tested. Also make the testing of SSL libraries default to
no testing, so that it won't get activated unnecessarily.
Platforms tested:
IRIX64 -64, serial and parallel. (GASS driver needs globus
software which is available in modi4 only.)
'Bug fix'
Description:
When testing the validity of zlib, the compress() function is
used. HDF5 actually requires a newer version of zlib which
contains compress2(). Compress2 is tested in later part of
the configure. This caused redundent tests and confusion too.
Solution:
Changed zlib test to look for compress2() instead.
Older version of HDF4 libraries (e.g. 4.1r2) would fail this
test correctly. This eliminated the possibility of using an
older version of HDF4 without using zlib compression in HDF5.
But since we need newer version of hdp (with loops detection),
the older version hdf4 is not old any more.
Remark: the compress2 test is not removed. After this change
proven working correctly for all platforms, the extra compress2
test can be removed and source code must be updated too.
Platforms tested:
modi4: tested with hdf4.1r2 and failed as expected. Tested with
newer hdf4 libraries and succeeded as expected.
Purpose:
Final Fantasy...er...fix
Description:
I fixed the problem with the summary printing newlines when we didn't
want it to when using "ksh".
Solution:
There's a flag '\c' which should be used at the end of the line if
you can't use the '-n' flag.
Platforms tested:
linux and modi4.
Purpose:
Bug Fix
Description:
Some platforms don't handle echo -n correctly.
Solution:
Copied some code from the configure which determines which flag to
give echo.
Platforms tested:
Linux
Purpose:
Feature Add
Description:
Added "install-example" and "install-all" to the Makefile system.
The behaviour of the "make install*" options:
make install - Installs binaries, libraries, include
files, and example programs.
make install-examples - Installs only the example programs.
The directories are:
${prefix}/doc/hdf5/examples/{c,c++,fortran}
make install-all - Install the binaries, libraries, include
files, example programs, and
documentation. The whole kit-n'-caboodle.
make uninstall-examples - Get rid of those example files (but not
the ${prefix}/doc/hdf5/examples/...
directories)
There's a new bin/ program which helps create directories which are
deeply nested called "mkdirs". It's a simple shell script.
Platforms tested:
Linux
Purpose:
New Feature
Description:
Added final output for the configure script which shows a summary of
options people chose while configuring.
Platforms tested:
Linux
Portability Bug Fixes
Description:
FreeBSD wants the -pthread flag on both the compile and link lines. Also,
the cipher library is required for certain threading features and needs to
be linked in.
Solution:
Add the -pthread to the compile line and the cipher library to the list of
libraries.
Platforms tested:
FreeBSD 4.4 (hawkwind)
New feature
Description:
Added perform programs to test the HDF5 library performance. Programs
are installed in directory perform/.
Platforms tested:
eirene
Purpose:
Bug Fix
Description:
The new way of determining directory information for HDF4 and ZLIB
bombed on me.
Solution:
For some reason, the way I was linking together all of the
"CHECK_LIBRARY" macros wasn't working. I separated them.
Platforms tested:
Kelgia.
Feature shift
Description:
Take out the v1.2.x compatibility stubs and put in the hooks for v1.4.x
compatibility when needed.
Platforms tested:
FreeBSD 4.3 (hawkwind)
Purpose:
Bug Fix
Description:
The way we were generating Dependencies and .depend files was broken.
If the $srcdir or other macros began with a ".", then it would match
anything and cause problems since it would then overwrite the
beginning of the header file's path.
Solution:
Wrote a Perl script which can handle this type of weirdness better.
It's only used when the environment is a GNU one with a GCC
compiler...
Platforms tested:
Linux
Purpose:
Cleanup
Description:
The SSL library was being tested for even if we didn't need it. This
was causing some libraries to be included in our library which
weren't needed (i.e., libcrypto).
Solution:
Only check for the SSL library if either GASS or Grid Storage is
specified.
Platforms tested:
Linux
Bug fix.
Description:
On some systems (linux when not using gcc) the 'dev_t' is not actually
a scalar variable. This causes the code which compares dev_t's in
the file drivers to not compile.
Solution:
Detect this and set the DEV_T_IS_SCALAR flag so we can code around it
in the file drivers.
Platforms tested:
FreeBSD 4.3 (hawkwind), Linux 2.4.2 (chiba city cluster at Argonne)
Purpose:
Bug Fix
Description:
The HP-UX 11 platform needs the NSL library.
Solution:
Check for the HPUX 11 platform and then do the check for the NSL
library.
Platforms tested:
Kelgia
Bug fix... (sorta)
Description:
Added --enable-linux-lfs configure flag to have better control over whether
the enable large file support on Linux machines. Also removed the
-malign-double flag for gcc since it can potentially cause errors which
are difficult to detect.
Platforms tested:
Linix 2.2 & 2.4 (eirene and dangermouse)
Purpose:
Bug Fix
Description:
Changed the README file's name to README.txt to coincide with the
file's actual name change. Also removed check for the nsl library
unless we're dealing with a SunOS system as this can conflict with
libraries on other strange platforms.
Platforms tested:
Eirene.
Code cleanup
Description:
Several system functions don't have prototypes on Linux machines with our
current compile flags.
Solution:
Add _POSIX_SOURCE and _BSD_SOURCE macros to the compile line when compiling
on Linux machines, to pick up missing prototypes.
Platforms tested:
Linux (eirene), FreeBSD 4.3 (hawkwind)
bug fix
Description:
The last reported problem that the parallel example program
in examples could not be compiled, could not be duplicated
again. I guessed maybe Rushad mistook the compile warning
messages as error messages. Just a guess.
Furthermore, the changed examples/Makefile.in and configure.in,
did not work for the parallel case. The examples/ph5example.c
was never included for compiling.
Solution:
Removed the fix in configure.in, put ph5exmple directly back
in the examples/Makefile.in but put it in a variable for
easier future maintenance. Also, easier to identify the
parallel examples too.
Platforms tested:
Eirene, both serial and parallel modes.
Test Addition
Description:
I added a small test to determine if the MPI library has a working
version of the MPI_Get_count() function. If it does, then I define
the macro:
MPI_GET_COUNT_WORKS
This should (hopefully) take care of the kludges in H5FDmpio.c...
NOTE: This isn't implemented in the H5FDmpio.c file since I don't
know the code in there and don't know which solution will work. Also,
the test program I put into the configure script needs to be checked
on a platform which does have a working MPI_Get_count()
function...I.e., this is just a first stab.
Platforms tested:
Linux
Purpose:
Adding new feature
Description:
Added gif2h5 and h52gif conversion utilities
Solution:
The utilites follow the framework built for the gif2hdf and hdf2gif
utilities for hdf4. The main files modified were those that read the
H5 file and those that write H5 file. In the future, if you wish to
continue with the framework and extend it to .png or some other fileformat
the main files to edit will be the gif reader and writer.
One point to note with h52gif. You have to specify the exact location of
the image and the palette that it links to. You can choose not to specify
a palette (uniform grayscale chosen in this case) but you must specify
image location. In the future, someone could edit the readhdf.c source
to enable the reader to parse the hdf file and select all images with
corresponding palettes.
Platforms tested:
modi4 , eirene , hawkwind , arabica , Ren (NT 4.0) , Personal box (win2k)
Bug Fix
Description:
A parallel example was added to the examples/ subdirectory. This was
being built whether --enable-parallel was defined or not. This was
causing some havoc with certain setups.
Solution:
Added logic to make it so that the parallel examples are made only if
--enable-parallel is specified.
Platforms tested:
Linux
Bug Fix
Description:
Small fix. The "off_t" typedef's size wasn't being set correctly.
Solution:
The tests for 64-bit files (getdents64() in particular) needed to
occur before checking for the sizeof off_t.
Platforms tested:
Linux
Better Mouse Trap^W^WBug Fix
Description:
Instead of having the large file support stuff be in the
config/gnu-flags directory, I added it to the configure.in file so
that it first checks for the syscall ``getdents64()''. If it finds
it, then it removes the ``-malign-double'' flag if the GCC compiler
is 2.95.x since this flag doesn't play well with the LFS stuff.
Solution:
Added test for getdents64(), if found it removes the -malign-double
flag if the compiler is 2.95.x. This is done in the configure.in
file. The gnu-flags file is returned to normal. A new field is added
to the H5config.h.in file because of the getdents64 check.
Platforms tested:
Linux
Portability changes
Description:
Very quick port to Compaq (nee DEC) Alpha OSF5.
Solution:
Added a new "dec-osf5.x" configuration file and changed configure.in
to look for it.
The local test machine is now passing all the tests, except I can't get
the "-L<path>" stuff to work, so tools which depend on the HDF4 library
around tested.
Platforms tested:
Compaq Alpha 5.1 (compaq.ncsa.uiuc.edu)
Bug Fix
Description:
Forgot to propagate the '-c' flag if the install-sh script is being
used. This caused some machines *cough*T3E*cough* to move instead of
copy the files...
Solution:
Added -c flag back in with the install-sh script.
Platforms tested:
Gondolin
Bug Fix
Description:
We shouldn't create Makefiles in the testpar/ directory unless we're
building this as parallel.
Solution:
Put flag in there specifying that we're doing this in Parallel and we
should build the Makefile in testpar/.
Code cleanup
Description:
ssize_t is not defined on certain (non-UNIX) platforms.
Solution:
Added steps to configure to generate SIZEOF_SSIZE_T macro and then used
the new macro to define ssize_t for platforms which don't have it.
Platforms tested:
FreeBSD 4.3 (hawkwind)
Improvement
Description:
Changed the default value of $NPROCS from 2 to 3. This is the
value libSAF uses since 3 processes have a much bigger chance
catching parallel errors than just 2 processes.
Platforms tested:
Modi4 (IRIX64) both serial and parallel modes.
Bug Fix
Description:
On the Nersc machines, the install-sh script wasn't being found in
the proper place.
Solution:
Corrected the "fix" I put in there awhile ago. Essentially, if the
INSTALL macro is the program "install-sh" with anything around it,
then we assume they want our install-sh program and force the
Makefiles to find it in the hdf5/bin directory.
Platforms tested:
Nersc.
Bug Fix
Description:
Removed generation of the Makefile in the
doc/html/Tutor/examples/java directory since they ahve their own
Makefile which is actually distributed with the documents.
Platforms tested:
Linux
Fixlet
Description:
FIxed the hack for the INSTALL macro. It was checking the "whole"
path to the install-sh script instead of if it was just a relative
path with install-sh at the end.
Solution:
Changed the test to match any relative path with install-sh at the
end. This assumes that the install-sh is the one we supply to them
(an assumption it was making before, really).
Platforms tested:
Gondolin, Linux
Fix
Description:
On machines which use the bin/install-sh script, it wasn't picking up
the install-sh script unless it was one directory depth away from it
(ie, it thought that it was in ../bin/install-sh, which isn't good
if, like with the documentation, it's in a deeper directory).
Solution:
Hacked it up so that, if it does use the broken relative-path schema,
then it will change it to use the $(top_srcdir) macro instead.
Platforms tested:
Linux
[is this a bug fix? feature? ...]
Description:
Changed the default settings for enable-production and enable-debug
to no and yes respective, for this development branch.
Platforms tested:
Modi4 parallel and eirene.
Code cleaning
Description:
Moved all gcc compiler flags into the config/gnu-flags file and re-added
the warning flags removed during the beta testing.
Platforms tested:
FreeBSD 4.2 (hawkwind)
Feature Fix
Description:
When user specifies the --disable-hsizet flag, we still warn them
about this when they use gcc 2.91.66.
Solution:
I moved the check above the place where it checks what version gcc
compiler it is. If they did specify the flag and it is a 2.91.66
compiler, then it won't print the message out.
Platforms tested:
Linux
Suppress warnings for release.
Description:
Took out the -Wconversion -Wredundant-decls warning flags for gcc until
after the tree is split.
Platforms tested:
Linux 2.2.16 (eirene)
Warning Reduction
Description:
Removed the -Wpointer-arith flag which complains about addintion with
void * pointers. This is a known gcc 2.95.2 annoyance.
There's still some issues with many str* warnings...not 7000, though.
Platforms tested:
Linux
Name change
Description:
Changed the names of the testh5toh4 and testh4toh5 scripts to the
"canonical" form -- testh4toh5.sh and testh5toh4.sh.
Platforms tested:
Linux
New configure feature.
Description:
The H5private.h header file was re-defining the strdup function on several
platforms, generating a warning.
Solution:
Detect if the system defines a strdup function and don't re-define it, if
so.
Platforms tested:
FreeBSD 4.2 (hawkwind), IRIX64-64 (modi4)
Bug fix
Description:
The zlib.h header check was skipped if it thought it had
found -lz already. That resulted in H5_HAVE_ZLIB_H not defined
which caused compression feature not compiled even though everything
else said it was in.
The --with-hdf4 was default to yes but configure had no clue where to
find them. A plain waste of time and affected ZLIB's searching later.
Solution:
Basically restored what it was before--checking the optional switch
of with-hdf4 first, then with-zlib. (with-hdf4 now defaults to no.)
Added a big chunk of comments explaining why these two options must
be checked in this order.
Changes applied to configure.in. Then ran autoconf to generate
configure.
Platforms tested:
eirene (default and with-hdf4), modi4-64-parallel (with-hdf4),
arabica (with-hdf4) and, gondoline. That is right, even tested
it out with gondoline (with-hdf4 too.) All except modi4 configured,
compiled and tested correctly. Modi4 died in the compiling of
src/H5Zdeflate.c but that was not due to the configure changes.
Prepare for 1.4.0beta1 release
README:
src/H5public.h:
Updated with 1.4.0beta1 version information.
configure.in:
Changed default setting to --enable-production --disable-debug.
configure:
Derived from configure.in via autoconf.
Platforms tested:
Eirene (linux) running just the configure command and compared
difference with previous configure output to verify expected
difference.
Bug fix
Description:
The last modification put an extra comma in the AC_CHECK_HEADERS
that would generate an bad configure file.
Solution:
Removed the comma.
Platforms tested:
Ran autoconf and verified it by comparing the same with
the current working configure file which has been tested.
Purpose:
Bugfix
Description:
Under SunOS 5.5 the symbol FIONBIO wasn't known when compiling
with the Stream VFD configured.
Solution:
This symbol is defined in the system header file <sys/filio.h>.
Here we check whether this header is available.
Platforms tested:
SunOS 5.5 (hatteras), SunOS 5.6 (thor.sistec.kp.dlr.de)
Bug Fix
Description:
Some platforms, when building static libraries, complain that
libc doesn't have dlopen and friends.
Solution:
libtool supports workarounds for this. The one used here may not
work, but it's an attempt to correct it. If it doesn't work, then
there's something going on which I'm not privvy to...
Platforms tested:
(untested as of yet)
* 2000-11-15 Robb Matzke <matzke@llnl.gov> (CC_VERSION)
The compiler is always expanded to a
full path name if possible. This feature enhancement was
requested by Mark Miller, LLNL.
Command-line name change
Description:
Changed --with-stream-vfd to --enable-strea-vfd to be more
consistent with what people expect from the --with-FOO and
--enable-FOO arguments.
Backward compatibility additions
Description:
Added "--enable-hdf5v1_2" flag to enable HDF5 v1.2 compatibility API
functions (H5Tget_member_dims & H5Tinsert_array) being built in the
library.
Platforms tested:
FreeBSD 4.1.1 (hawkwind)
Purpose:
Bugfix
Description:
Rename the [H5_]HAVE_STRUCT_SOCKLEN_T into [H5_]HAVE_SOCKLEN_T.
Solution:
As pointed out by Bill the socklen_t type isn't a structure if
is it defined by the system headers.
So we should better take out the _STRUCT_ from the defines.
Platforms tested:
Purpose:
Bugfix
Description:
Detect whether the 'struct socklen_t' type is defined in the
system include header files.
Solution:
Added an AC_TRY_COMPILE test for 'struct socklen_t' to the configure
script. This test is only executed if the Stream VFD is configured.
Also added detection of <sys/types.h> and <sys/socket.h> system
header files.
Platforms tested:
Solaris 2.6 and 2.7
IRIX64
Linux
Windows NT (command line configure with gcc and cl)
Buglet
Description:
Wasn't picking up specified directories for the run-time linking
stuff that libtools does.
Solution:
There was some confusion about how the regex stuff works with
scripts. It's not `.*' for any character by `*'...Fixed.
Platforms tested:
Arabica
Bug Fix...AGAIN!
Description:
The logic to create the DYNAMIC_DIRS macro was accepting such
things as -lnoop_stubs which would cause libtools to barf.
Solution:
I'm pretty sure I fixed this once before. The change was lost. I
now test to make sure that the flag I'm adding has a "-L" prefix
on it...
Purpose:
Detect whether the system has the netinet/tcp.h header file.
Description:
The Stream VFD uses setsockopt(2) to set TCP_NODELAY on an opened
socket. This constant is defined normally in netinet/tcp.h
except for GNU cc under Windows where this header doesn't exist.
Platforms tested:
Windows NT, GNU cc
Buglet Fix...kinda
Description:
The --enable-c++ flag is in there, but configure can't handle the
++ on the end.
Solution:
Changed it to --enable-cxx instead. N.B. This feature isn't
really needed yet since C++ isn't integrated with the library
proper.
Platforms tested:
Linux
Bug Fix
Description:
Broke on Arabica trying to export the SEARCH macro.
Solution:
Assigned to the SEARCH macro and then exported it.
Platforms tested:
Arabica.
Bug Fix
Description:
When running configure on subdirectories (like fortran/), looking
up how make implements SEARCHes failed.
Solution:
Exporting the SEARCH macro so that subdirectories don't have to
look for it.
Platforms tested:
Modi4.
Bug Fix
Description:
zlib was not being retrieved from the place specified by the user
even if the user used the --with-zlib flag.
Solution:
Removed the automatic inclusion of /usr/ncsa/* into the macros
and use the user-defined place to try to pickup the zlib. I'm
relying on the order of the -L flags in the compile line to
specify which libraries to look into first before going on to
look into the system libraries. If some compiler doesn't honor
the this order, yikes...
Platforms tested:
Linux
Purpose:
h4toh5 converter tool under tools
Description:
put flag h4toh5 and testh4toh5 into the configure file.
Solution:
[details about the changes, algorithm, etc...]
[Please as detail as you can since your own explanation is
better than others guessing it from the code.]
Platforms tested:
at eirene and arabica.
[machines you have tested the changed version. This is absolute
important. Test it out on at least two or three different platforms
such as Big-endian-32bit (SUN/IRIX), little-endian-32(LINUX) and
64-bit (IRIX64/UNICOS/DEC-ALPHA) would be good.]
Libtool bug
Description:
The AR macro wasn't being propagated to the libtool file
correctly. When libtool was being generated, it wasn't
recoginizing the AR that was set in the configure script.
Solution:
export the AR macro after it's set.
Platforms tested:
Linux
I introduced a small bug when trying to fix the zlib stuff.
Description:
-lz wouldn't be specified with the compile flags if it was found
while checking for the HDF4 library.
Solution:
Removed my bad check and replaced with a better one.
Platforms:
Linux, Solaris
Added new option --with-Stream-VFD.
Description:
The configure option --with-Stream-VFD[={yes}|{no}] is used
to configure HDF5 to build the Stream Virtual File Driver.
The default is not to build it.
Platforms:
all platforms
Cleaned up the configure file a bit.
Description:
There were a few small bugs having to do with checking if strings
were empty. Also needed to force paths to be absolute instead of
relative.
Solution:
I standardized string checking (test -z for an empty string and
test -n for a non-empty string). Also, if the user specifies a
relative path for any of the options, the configure now makes it
into an absolute path for both CPPFLAGS and LDFLAGS macros.
Platforms:
Solaris, Linux
macro didn't work on all systems. This fixes it.
This also introduces the ability to configure for fortran and c++. This
is not to be implemented yet, though!
command form (e.g., cc, gcc) and put that in the libhdf5.settings
file. This would help show exactly which compiler was used during
the configure stage. It may not be 100% "correct" in some cases
such as "configure done in one machine but compiling done in another."
Makefile.in:
acconfig.h:
src/H5F.c:
src/H5FDdpss.c:
src/H5FDdpss.h:
src/H5config.h.in:
test/dpss_read.c:
test/dpss_write.c:
Changed the name DPSS to GRIDSTORAGE since that is the real name
of the API from ANL. DPSS is just one of the protocols it can use.
Changed a bug in the --with-ssl option.
Makefile.in:
Removed the copying of Makefile.dist since it caused problems
when doing a make distclean in a --srcdir configured directory.