Bring r17981 from trunk to 1.8 branch:
Abstract "print header" code into separate routine.
Tested on:
Mac OS X/32 10.6.2 (amazon) w/debug
(too minor to require h5committest)
Bring r17953 from trunk to 1.8 branch:
Bring Coverity changes into the trunk:
r17877:
Error 266: Uninitialized memspace set to -1. Changed malloc and free to HDmalloc and HDfree. Removed unused dtype var.
r17878:
Error 265: Uninitialized mem_space set to -1. Changed malloc and free to HDmalloc and HDfree.
Error 267: Uninitialized smspace set to -1. Changed malloc and free to HDmalloc and HDfree.
r17879:
Error 242: Uninitialized aid set to -1.
Error 243: Uninitialized sid set to -1.
Uninitialized tid set to -1 for consistency
r17880:
Error 242: reinitialized aid to -1 after close to be ready for reuse.
Error 243: reinitialized sid to -1 after close to be ready for reuse.
reinitialized tid to -1 for consistency after close to be ready for reuse.
r17881:
use valgrind to check there is a memory leak. The fix is to free ptrstr in line 5838 at xml_dump_group() of h5dump.c after it is used. run the valgrind after the fix, no memory leak for that part of the code.
r17882:
Fix Coverity items 256 and 269.
r17883:
Error 222-230: initialized hid_t vars to -1 after close to be ready for reuse.
Also added H5Tclose for tid in gent_bigdims
r17884:
Bug fix (Coverity run2, view 23, dead code)
(this is pair-program done by Albert, Elena and Larry).
Confirmed and fixed the deadcode in hyperslab read branch of function
diff_datasetid.
(Discovered other bad code that diff_datasetid() should be recoded.
Bug 1693 is entered for this.)
r17906:
Fix Coverity item 260.
r17907:
262: Initialized hid_t's dtype, dtype_tmp and file to -1. Initialized H5T_t * dt to NULL.
r17908:
Fix Coverity item 261.
r17909:
Fix Coverity item 248.
r17910:
Revise fix for Coverity item 248.
r17911:
Resolved coverity issues #s 263, 162, 163, 164. All issues in dsets.c. Initialized fid and did hid_t's. filter_corrupt function was returning in the middle of an if statement, bypassing free calls. Updated error handling to free buffers and hid_t's appropriately.
r17912:
(done by Larry and Albert)
Cleanup Coverity view warnings (#231-241) about
using uninitialized variables. Initialized all
of them.
r17913:
Resolved issue 251 and 264. Initialized tid2 to -1 and initialized buffers that were freed in case of an error.
r17914:
Resolved coverity issues 66, 220, and 221:
66: Negative Return assignment ignored
220,221: Initialized hid_t's.
r17915:
Fix Coverity item 247.
r17916:
Fix Coverity item 246.
r17917:
Fix Coverity item 245.
r17918:
Fix Coverity item 244.
r17919:
Coverity Issue #84: Moved asserts in H5T_cmp to the top of the function, and converted them to HDassert. Coverity complaining about using potentially NULL pointer without checking it. Want to see if Coverity will accept Assertions as acceptable checking before using the value.
Tested on:
FreeBSD/32 6.3 (duty) w/debug
(h5committested on trunk)
Fix potential problem similar to Bug1672 (getting garbage values)
Description:
This will resolve the potential problem like Bug1672 when comparing
attributes. It improves the performance by not calling diff_array
twice. (diffing time in half). Little clean up on comment lines.
Refer to the Bug fix 1672. (svn revision 17921 on 1.8 branch)
Tested on:
linux32 (jam) , linux64 (almani), solaris (linew)
Fix Bug1672 - Display garbage value on LE machine for BE data.
Description:
Casuing by calling diff_dataset twice when -r or no option was given.
Change to call it once which fix the problem.
It also improves the performance. (diffing time in half)
According further test, it also occurred on BE machine as well and it
seems occruing only with the BE data attached to Bugzilla.
Don't know how the file was created. Anyway this fix will prevent
from diffing with garbage values in similiar potential case.
Tested on:
linux32 (jam) , linux64 (almani), solaris (linew)
Merge from Trunk
Description:
Merging all of my CFLAGS-related changes from trunk to 1.8
This includes revision #s: 17616, 17625, 17627, 17639, and 17643.
Tested:
h5committest and some additional checks on our FreeBSD as well
as NCSA's machines.
Stage 2 implementation of embedded library information feature.
H5.c: added code to print the embedded library information when there is
a library versions mis-match occurs. This ensures the library information
string is included in the executable.
Also modifies the code so that the Library mismatch warning string is
included only once in the executable.
H5private.h:
Added a global reference to the libinfo string variable to prepare
for possible stage 3 implementation of a public API.
test/testlibinfo.sh.in:
A new test added to verify the library information is indeed included
in the executables.
configure.in:
configure:
Added entry to auto-generate test/testlibinfo.sh.
H5detect.c:
Modified the libhdf5settings generating code to allow it to insert the
strings to a file other than stdout. This maybe needed in stage 3
implementation.
MANIFEST:
updated with the newly added file of testlibinfo.sh.in.
Tested:
h5committest passed. Also passed jam in serial mode.
" Use "--use-system-epsilon" for system EPSILON
" Use "-p" or "-d" for whatever user's choice of epsilon
" Use "-p 0" or "-d 0" for strict equality (same as default)
Updating autotools
Description:
Bring revisions 17345 and 17357 from trunk to 1.8, specifically:
- Automake upgraded to 1.11
- Autoconf upgraded to 2.64
- bin/reconfigure script edited to use new versions (on jam), and
run to generate new configure script and Makefile.in's.
- configure.in script edited to add "_cv_" to all AC_CACHE_VAL strings
(in order to comply with new autoconf standard).
- bin/install-sh script replaced with new version as provided
by automake.
Tested:
- All issues on trunk were resolved, so only tested on jam and linew. Any
other outliers should be caught by daily tests.
Add a run to the h5repack shell script to read a family file
The file used for input is located in the common source tools for testfiles, in tools/testfiles
Modified the h5repack shell script to read files from this location (h5repack reads its input files from a dedicated testfiles location in h5repack/testfiles)
Changed the h5diff open file call to use h5tools_fopen, so that it can open all file drivers
Tested: linux
- Updated bin/reconfigure to use latest version of automake (1.10.2).
Regenerated Makefile.in's by running bin/reconfigure.
- Added libtool version numbers to c++, fortran, hl, hl c++, and hl fortran
libraries.
Tested:
jam, liberty, smirom
Description:
Changed Skip list package to use a deterministic skip list. This allows the
skip list package to avoid calling rand() and srand(), even on machines without
rand_r(). There is no longer a p-value or maximum level for skip lists.
Tested: jam, smirom, linew (h5committest)
1. #1501 (B1) tools bug if dataset is larger than H5TOOLS_BUFSIZE limit.
ISSUE : the tools use the following formula to read by hyperslabs: hyperslab_size[i] = MIN( dim_size[i], H5TOOLS_BUFSIZE / datum_size) where H5TOOLS_BUFSIZE is a constant defined of 1024K. This is OK as long as the datum_size does not exceed 1024K, otherwise we have a hyperslab size of 0 (since 1024K/(greater than 1024K) = 0). This affects h5dump. h5repack, h5diff
SOLUTION: add a check for a 0 size and define as 1 if so.
TEST FOR H5DUMP: Defined a case in the h5dump test generator program of such a type (an array type of doubles with a large array dimension, that was the case the user reported). Since the written file commited in svn would be around 1024K, opted for not writing the data (the part of the code where the hyperslab is defined is executed, since h5dump always reads the files). Defined a macro WRITE_ARRAY to enable such writing if needed. Added a run on the h5dump shell script. Added 2 new files to svn: tools/testfiles/tarray8.ddl, tools/testfiles/tarray8.h5. NOTE: while doing this I thought of adding this dataset case to an existing file, but that would add the large array output to those files (the ddls). The issue is that the file list is increasing.
TEST FOR H5DIFF: for h5diff the check for reading by hyperslabs is H5TOOLS_MALLOCSIZE (128 * H5TOOLS_BUFSIZE) or 128 Mb. This makes it not possible to add such a file to svn, so used the same method as h5dump (only write the dataset if WRITE_ARRAY is defined). As opposed to h5dump, the hyperslab code is NOT executed when the dataset is empty (dataset is not read). Added the new dataset to existing files and shell run (tools/h5diff/testfiles/h5diff_dset1.h5 and tools/h5diff/testfiles/h5diff_dset2.h5 and output in tools/h5diff/testfiles/h5diff_80.txt).
TEST FOR H5REPACK: similar issue as h5diff with the difference that the hyperslab code is run. Added a run to the shell script (with a filter, otherwise the code uses H5Ocopy).
FURTHER ISSUES: the type in question ("double") has a different output cross platforms (e.g on liberty some garbage number is printed at some array locations)
SOLUTION: defined an "int" type for this test. However the printing of such an array has a bogus output at least in one platform (FreeBsd), so eliminated the test run altogether and filed a bug report on this
Bug Fix
Description:
Fixing BZ #1381. The --includedir=DIR configure option, which is used to
spceify installation location of C header files, did not work correctly as
the path was hard-coded into config/commence.am. I'm presuming this is
because an older version of automake didn't know where to put C header
files. In any case, removing this line now defaults the includedir to the
same directory that it is currently hard-coded to, and also fixes the
configure flag which allows for customization of this value.
Tested:
jam, liberty
have 2 expected outputs for 2 h5ls runs depending if run on a big or little endian machine. Configure.in was modified to export a variable carrying endianess information to testh5ls.sh. This script then compares the current run with 2 expected outputs, one for a big-endian machine (linew was used to generate the output), other for little endian (jam was used to generate the output)
the way h5ls prints types, it starts searching for NATIVE types first. One solution would be h5ls not to detect these native types, using for example the same print datatype function that h5dump does, that would make the output look the same on all platforms ("32-bit little-endian integer" would be printed instead). Drawback, this "native" information would not be available. Other solution is to have not one but 2 expected outputs and make the shell script detect the endianess and compare with one output or other
tested: jam, linew
Bug fix: for compound types, the not comparable test for members was not done
Solution: for compound types, recursively apply that check
Two new cases are added
1) the compound type has a different number of members. Message printed is
<obj1> has X members <obj2> has Y members
Where X and Y are the number of members of each compound type being compared
2) the compound type has not comparable types (for example a double and an int at the same index)
In this case the message
Comparison not possible: object1 is of class1 and object2 is of class2
Is replaced with
Comparison not possible: object1 has a class1 and object2 has a class2
Modified the test generator program to have these 2 cases
Added a shell run for these 2 cases
Tested: h5committest
bug fix
a new line was not inserted at the end of output, causing diff to complain between linux and frebsd
tested: linux (freebsd tested on the trunk)
#1368 (E1) h5diff: implement "not comparable" messages. Implemented RFC. The new option is <-c, --compare List objects that are not comparable>
added some test cases
tested: windows, linux
Added an option to avoid dealing with NaNs
-N, --nan Avoid NaNs detection
Note: there is no shell script run for datasets with NaN because the output is non portable (different results and NaN strings for different systems)
Tested: windows, linux
Bug fix
PG compiler complains about array out of bounds (a rank of zero was not checked)
Adding a scalar dataset to the test generator program. this case is run on a previous existing run, the case was added to 2 existing files
Tested: windows, linux
Introduced a new feature in the tools library regarding command line parsing
In the definition of arguments, an "*" means that the switch can or can not have an optional argument. This "*" is put in the code regarding the letter definition, and it is transparent to the user (e.g b* instead of the previous b: ), where ":" notes a required argument after the letter (and no ":" or "*" notes no argument, mandatory)
Used for the h5dump binary option -b
It can be now
1) -b (defaults to NATIVE)
2) - b NATIVE
3) - b FILE
4) -b LE
5) -b BE
Note: the keyword NATIVE replaces MEMORY
This feature (-b with no argument) was tested with the sequence of h5dump to binary (NATIVE) then h5import to generate an HDF5 file from the binary file and h5diff to compare the 2 HDF5 files
Tested: windows, linux
use of
H5_PRINTF_LL_WIDTH
in the definition of
#define HSIZE_T_FORMAT "%"H5_PRINTF_LL_WIDTH"u"
the printing of "unknow u" in tg-login3.
for unsigned long long was a configure bug fixed by rev 15942
tested: tg-login3
for some reason , the use of H5_PRINTF_LL_WIDTH to convert to a unsigned long long format, is not working in ia64 linux (tg-login3)
extra characters are printed, this time in h5ls
hardcoded the format defined in HSIZE_T_FORMAT to "%llu"
tested: windows, linux (kagiso), solaris, ia64 linux (tg-login3)
Description: Libtool wasn't working on linew because the script was
not working with the Solaris Bourne shell. Libtool has built-
in detection to ensure that it uses an appropriate shell,
but our config/commence.am was hard coding this shell to be
/bin/sh. Removing this line allows the shell to be picked up
by configure, thus allowing libtool to use the correct shell
on linew (bash). This was initially added to correct for a problem
on an old machine (janus), so shoudn't be needed for machines
we currently support.
Tested: full make check install on kagiso and linew, compile only
on smirom, duty, and liberty.
Description: Improved external link traversal of h5dump. h5dump will now
properly avoid all cycles, even those spanning multiple files. Improvement
to the output of committed datatypes. Committed datatypes are now checked
for uniqueness (like other objects). Tests added for these cases.
Tested: kagiso, linew, smirom (h5committest)
Description:
1) configure now sets LD_LIBRARY_PATH before checking for presence of
SZIP encoder, so user does not need to set this. The path is then
saved and sent to Makefiles, and used when "make check-install" is
invoked, so user doesn't need to set this manually.
2) Upgraded libtool to version 2.2.6a
3) Rearranged tools build order as h5dump depends on existence of h5diff
and h5import. Since h5dump is a sister directory as opposed to a parent
of either, it doesn't know about the build rules of these tools, so
setting any sort of explicit dependency confuses automake as it won't
know how to build the tools. Instead, setting CONFIG = ordered forces
an in-order traversal of each tools subdirectory. (without it will also
traverse in order by default, but this should prevent gmake's -j option
from jumping ahead as well). 'make check install' should now be able to
be invoked after 'configure' without causing a dependency failure.
4) Removed H5_HAVE_LARGE_HSIZET macro from vms/src/h5pubconf.h, as this macro
has now been out of the code for some time. (vms pubconf needs to be
updated manually, which is why it was still hanging around).
Tested: kagiso, smirom, liberty
Note: h5diff looks to be causing failures in h5copy and h5dump tools tests,
though these were present before any of my changes. My changes only
affect build order and configuration setup, and shouldn't prevent
fixes for these failures coming in after this checkin. Other than these,
tests pass fine.