added more tests, described in the test matrix
Description:
test -r
test -l
expanded -d, -p and -n tests
test different types to include links and named types
test for non supported classes, e.g bitfield, opaque , etc
Platforms tested:
Linux 2.4 (rockaway)
SunOS 5.7 (arabica)
IRIX 6.5 (modi4)
Misc. update:
Minor improvement
Description:
Moved the H5FD_mpio_Debug initialization to H5FD_mpio_init() so
that it is done only once instead of every file open.
Fixed blocked out patch that checks on INFO object so that
H5FD_mpio_Debug can be set via the INFO object.
(All these had been done to v1.4, now folded them int v1.5)
Platforms tested:
Did not h5committest since this is purely parallel code.
The changes were made in an isolated copy in Copper.
Tested in Copper parallel.
Misc. update:
Bug Fix
Description:
The compression stuff includes the "zlib.h" header file. This
file on the SP machine was including another file which would
#define const as nothing if the compiler wasn't a Standard C
compiler.
Solution:
Included a flag to make the compiler into an ANSI compiler.
Platforms tested:
Blue (Only affects powerPC computers)
Misc. update:
Purpose:
Code cleanup
Description:
Removed debug statement bracketed by H5FDmpiposix_DEBUG or alike.
They were added in by mistakes.
Platforms tested:
Did not h5committested but tested in Copper since there changes are
limited in parallel codes.
Misc. update:
Bug Fix
Description:
If there was a header file with a path like:
/some/path/mpich.optimized/...
The dependencies script would change that to
/some/path/mpich.loptimized/...
^--Note.
Solution:
Mike McKay offered the solution to replace the substitution script
from "s/\.o/\.lo/g" to "s/\.o(\b)/\.lo$1/g". It doesn't crash when
run on Linux, but we need to make sure that it's okay for his
machine.
Platforms tested:
Linux, since this script is only run on GNU platforms.
Misc. update:
Improvment
Description:
No default setting of fortran compiler when --enable-parallel is
used.
Solution:
Changed it to use mpxlf_r as the default parallel fortran compiler.
This is consistent with the default C compilers.
Platforms tested:
Did not h5committested because the changes were made offsite.
Tested in LLNL SP BLUE, both serial and parallel modes.
(There is a compiling error in src but the configure result are
verified.)
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.
bug fix
Description:
The default of CC used to be gcc which is not compatible with the
default fortran compiler of xlf.
Solution:
Copied the CC default setting from the C-API level.
Platforms tested:
Run test in Copper since this is a purely AIX change.
Misc. update:
Purpose: Bug fix
Description: on Cray T90IEEE compact storage test (in test_misc8)
fails since dataset dimensions are too big; dataset
will not fit into the message header.
Solution: Reduced dimension sizes from 100 to 50.
Platforms tested: h5committested on arabica and mod4; verbena failed
because of the F90 license problem. I tested on verbena
by hand and C only; Cray T90IEEE
Misc. update:
Purpose: Verify library behavior
Description: A file is first opened as read only. Then it's closed with
an object left open. A second open of the same file for read and
write should fail.
Platforms tested: arabica - simply test to verify correct library behavior.
feature
Description:
added test_fapl_mpiposix_dup to verify the MPIPOSIX is making
duplicates of Communicator correctly.
Platforms tested:
Did not h5committested because these are all MPI code and well protected
by HAVE_PARALLEL.
Tested in eirene and modi4, both parallel mode.
Misc. update:
Feature
Description:
Added the feature to store and return a duplicate of Communicator in
the access of property list and file operations. (no duplicate for
INFO object because MPIPOSIX driver does not process INFO object.
Platforms tested:
Did not h5committested because these are all MPI code and well protected
by HAVE_PARALLEL.
Tested in eirene and modi4, both parallel mode.
Misc. update:
Code cleanup
Description:
Replaced the comm/info freeing with H5FD_mpio_comm_info_free to make
it cleaner and consistent.
Replaced couple FUNC_LEAVE_NOAPI(SUCCEED) with FUNC_LEAVE_NOAPI(ret_value).
These were bugs since it was possible errors may occur at FUNC_ENTER...()
time and this hardcoding would not report those errors.
Documented some modification history.
Platforms tested:
Did not h5committested because these are all MPI code and well protected
by HAVE_PARALLEL.
Tested in eirene and modi4, both parallel mode.
Misc. update:
Code cleanup
Description:
Remove some cruft left over from the switch from int->H5G_obj_t
Platforms tested:
FreeBSD 4.8 (sleipnir), triple check not necessary.
Code cleanup
Description:
Christi Forsythe reported that the NGROUPS macro in this file was causing
a macro redefinition warning on the QT machine.
Solution:
Rename NGROUPS to UNLINK_NGROUPS
Platforms tested:
Eyeballed, too trivial for triple check.
Update
Description:
The H5FC was already in this doc...but under "bug fixes". Removed
that since it's really a new feature.
Platforms tested:
IBM/PC Jr.
Misc. update:
Bug Fix
Description:
In parallel mode, the MPI libraries were being added to the LDFLAGS
variable instead of the LIBS variable. This was playing havoc with
the h5fc script (the order you specify libraries is important to some
compilers).
Solution:
The AC_CHECK_FLIB macro was placing these libraries into the LDFLAGS
instead of LIBS, which is where they should have gone. Replaced
LDFLAGS with LIBS in that case.
Platforms tested:
Modi4 (Parallel & Fortran)
Arabica (Fortran)
Verbena (Fortran, no C++ since it's not affected)
Ran "make check-install" after installation...
Misc. update:
Bug Fix
Description:
On Kelgia, building of the Fortran stuff would fail because of a bad
commandline. A "" was being put into it.
Solution:
I was stupid and put quotes around a variable in the commence.in file
when I shouldn't have. Removed those quotes.
Platforms tested:
Kelgia (Fortran)
Verbena (Fortran, no C++ since Fortran only)
Arabica (Fortran)
Modi4 (Fortran & Parallel)
Misc. update:
Bug Fix
Description:
When going to compile on a platform (like HP-UX) which doesn't have
libz.a in it's path, the script would fail. The reason was that the
LDFLAGS variable which holds the directories to these libraries was
last in the compile line. So the compiler couldn't find the library
Solution:
Put the LDFLAGS variable before the linker variables.
Platforms tested:
Kelgia (Fortran)
Verbena (Fortran, no C++ since only Fortran affected)
Arabica (Fortran)
Modi4 (Fortran & Parallel)
Also ran "make check-install"
Misc. update:
Purpose: A little code rewriting
Description: object types were defined as macros in H5Gpublic.h
Solution: changed them to enumerate type
Platforms tested: h5committtest
code cleanup.
Description:
Rename test_comm_info_delete to test_fapl_mpio_dup to better decribe
what it does. Updated the comments to describe more accurate.
Platforms tested:
Did not run h5commmittest since the changes were all in parallel area.
Ran parallel tests on modi4 and eirene.
Misc. update:
simple code cleanup.
Description:
While debug a problem in multiple_group_write(), noticed some returned
values were not checked. Added code to check on all returned code.
Platforms tested:
h5committested.
Misc. update:
Bug Fix
Description:
H5FC was failing on Copper (IBM P690). The reason: the xlf compiler
needs files to end in .f in stead of .f90. If you have .f90 files,
you need the "-qsuffix=f=f90" flag defined. This was defined for
compiling things via the "-c" option (to object files) but not for
straight compilation of a file.
I also noticed that the directory modules were being extracted from
was "." and "../src". H5FC would find these alright when doing a
"make check-install" but if Suzie User were to try this, it might
fail for her. Suzie would have to specify explicitly where to grab
these files.
Solution:
The solution to the problem was a bit more involved. I added a new
variable called "F9XSUFFIXFLAG" which is set to this value if the
machine needs it.
Added new variable called "FSEARCH_DIRS" which can be set to the
directories to find modules during compilation. The H5FC script knows
where to find the correct modules (it's in the lib/ directory), so it
uses the F9XMODFLAG to find them and not the FSEARCH_DIRS flag.
Platforms tested:
Modi4 (Fortran & Parallel)
Verbena (Fortran) C++ not needed since this is Fortran-only fix
Arabica (Fortran)
Copper (Fortran)
Ran "make install" and "make check-install" afterwards...
Misc. update:
Code cleanup
Description:
Add & improve assertion that was removed in last commit, to check for
compact dataset storage.
Platforms tested:
FreeBSD 4.8 (sleipnir)
triple check not necessary.
update
Description:
Added h5fc to the h5tools list.
Added feature that it will udpate tools that are present.
(Would still abort if no tools found at all.)
Platforms tested:
Did not h5committest since it does not test this tool at all.
Did various test in eirene by hand.
Misc. update:
Update
Description:
Ran "autoheader" to gather some of the added #defines that were
included in the configure.in file over the months...
Platforms tested:
Arabica & Baldric (Fortran)
Modi4 (Parallel & Fortran)
Verbena (C++ & Fortran)
All with --enable-stream-vfd and doing a "make check-install".
Misc. update:
Bug Fix
Description:
The h5fc script couldn't find the correct libraries needed when it
was used on Solaris and the --enable-stream-vfd was enabled.
Solution:
Added checks for the -lnsl and -lsocket libraries if we're on Solaris
or HP-UX.
Platforms tested:
Arabica & Baldric (Fortran)
Modi4 (Parallel & Fortran)
Verbena (C++ & Fortran)
All with --enable-stream-vfd and doing a "make check-install".
Misc. update:
Bug fix and feature
Description:
The patch to Makefile.in failed if an empty directory of fortran/examples
was left behind by a previous build.
Solution:
Attempted to put it in config/conclude.in just became a mess since
it is hard to predict when we will include examples in the subdirs
or not.
Borrow the structure of install-examples and do some handcode per
interface. The Makefile.in of each interface (C, Fortran, C++)
controls everything. Not very systematic but pretty clean for this
case.
Platforms tested:
h5committested.
Also tested in modi4 with various combinations of fortran, c++
enabled.
Misc. update:
Silly bug fix.
Description:
Forgot to put the comm/info duplication code in.
Solution:
Put them back in.
Platforms tested:
Did not run h5committest since the changes are all in the MPIO driver code.
Tested on eirene and Modi4, both parallel modes.
Misc. update:
Feature
Description:
Added a simple way to run make check in the fortran/examples too.
This would be a good exercise of the installed h5fc command.
(A more systematic way, similar to install-examples, should be
implemented.)
Platforms tested:
h5committested--that only made sure the change did not break anything.
Also tested "make check-install" in modi4 to make sure the changes do
work.
Misc. update:
Commenting
Description:
Added comments to the H5Fget_access_plist function to remind people
that if they are going to be overwriting a value in the plist which
was originally opened and inserted into the plist, then it should be
closed before overwriting that value.
Platforms tested:
Modi4 (Only comment change, so no h5committest needed).
Misc. update:
changed the h5pubconf.h file the MALLOC_WORKS definition
for code warrior , which is #undef
this is because pt=malloc(0) returns 0 in code warrior
and was causing a failure in the config_malloc_test
Platforms tested:
code warrior
Misc. update:
bug fix
Description:
in the close strong case in H5F_close there was a do..while loop
that executed when nfiles==0, calling malloc(0)
this was causing a failure in the close call in Code Warrior, that returns 0
in the call pt=malloc(0)
Solution:
replaced with a while loop (checks the condition before executing)
Platforms tested:
code warrior, linux
Misc. update:
Bug Fix
Description:
A resource leak happened if the H5Fget_access_plist() function was
called. What was happening: the driver ID and info parts of the
property list copied in H5Fget_access_plist were being overwritten,
but those properties were copied initially, so we lost information.
Added calls to the H5Fget_access_plist function to get the PList and
then immediately close it. It would cause an infinite loop if there
is a resource leak.
Solution:
Before copying over those values, call the H5F_acs_close() function
to close those values.
Platforms tested:
Modi4 (Parallel & Fortran)
Arabica (Fortran)
Verbena (Fortran & C++)
Misc. update:
Bug Fix
Description:
A resource leak happened if the H5Fget_access_plist() function was
called. What was happening: the driver ID and info parts of the
property list copied in H5Fget_access_plist were being overwritten,
but those properties were copied initially, so we lost information.
Solution:
Before copying over those values, call the H5F_acs_close() function
to close those values.
Platforms tested:
Modi4 (Parallel & Fortran)
Arabica (Fortran)
Verbena (Fortran & C++)
Misc. update:
bug fix
Description:
The fphdf5.o and similar files are not included in the make clean
target. So, if the same directory is used again for a different
build, the left behind file could cause a problem (e.g., if
the second build is for a different binary format.)
Solution:
Added fphdf5.c to the TEST_SRC list which indirect form the clean
target list.
Platforms tested:
Did not run h5committest tests because they don't verify this
failure. I tested the fix in modi4 pp to verify all files are cleaned.
Misc. update:
Feature
Description:
Test program for the Flexible PHDF5 feature.
Platforms tested:
Tested on modi4 before but the feature is currenly disabled in
configure. Checking this in for future work.
Misc. update:
Bug fix
Description:
Sometimes when H5detect fails (incorrect code, incorrect mpi launch
command, insufficient resources,...), it generates an incomplete or
even empty H5Tinit.c file. If the empty file is not removed but
the make is run again, make will just use the empty file to generate
the library which will have lots of missing routines. Make won't
fail until much later and the missing routines would be puzzling
to inexperienced users.
Solution:
If H5detect fails, the generated H5Tinit.c will be removed unless
$HDF5_Make_Ignore is set. This is similar to removing .o file if
the compile fails.
Platforms tested:
Copper (parallel) which has a condition causing H5detect to fail.
That verified the change works.
Eirene (parallel) in which H5detect runs well. This verified the
change works in normal conditions too.
Did not do the h5committest because this is just a makefile change
and the above two tests covered it well.
Misc. update:
Bug fixes/API changes
Description:
Previously, the Communicator and Info object arguments supplied
to H5Pset_fapl_mpio() are stored in the property with its handle
values. This meant changes to the communicator or the Info object
after calling H5Pset_fapl_mpio would affect the how the property
list function. This was also the case when H5Fopen/create operated.
They just stored the handle value. This is not according to the
MPI-2 defined behavior of how Info objects should be handled. (MPI-2
defines Info objects must be parsed when called.)
The old design was trying to avoid numerous duplicates of the same
information (e.g., every property object holds one version, every
file opened holds another version, when all of them are referring to
the same original version.) Nevertheless it is safer to implement
it according to MPI-2 definition.
Futhermore, the library often needs to do message passing using the
supplied communicator. Using the same communicator as the application
version may result in some messages mix up.
Solution:
H5Pset_fapl_mpio now stores a duplicate of each of the communicator
and Info object.
H5Pget_fapl_mpio returns a duplicate of its stored communicator and
Info object. It is now the responsibility of the applications to free
those objects when done.
H5Fopen/create also stores a duplicate of the communicator and Info
object supplied by the File Access Property list.
H5Fclose frees those duplicates.
There are a few more internal VFL call back functions that they
follow this "make duplicates" requirement.
Platforms tested:
"h5committested".
What other platforms/configurations were tested?
Eirene (mpicc), sol(mpicc), copper(parallel)
Misc. update:
Need to update MANIFEST for the added t_ph5basic.c which tests the
correctness of duplicated communicator and INFO object.