For make installcheck, compile and run installed examples using the installed scripts. They were being compiled but not run.
Add Fortran2003 examples to the run-ex-fortran script when fortran2003 is enabled.
Set flag to -O3 in production mode for Intel compilers other than those with specified other settings.
Gentoo patches:
Remove unnecessary setting of LD_LIBRARY_PATH from configure.
Prevent potential array subscript out of bounds error in perform/pio_engine.c and sio_engine.c.
Tested with h5committest on jam, koala, ostrich and platypus, on emu and kite, and parallel tests on jam, koala and platypus with mpich built with gnu 4.8.2 and with intel compilers.
Description:
The development (--disable-production) mode ran a long time, especially on the
testhdf5 (select) that exceeded the wall clock 10 minutes limits and was
terminated. It turned out the development had DEBUG_CFLAG set to "-g -xildoff".\
The -xildoff was added back when h5detect had errors when -g only was used. But
that bug does not exist any more since when only -g is used to build, h5detect
did not fail and all tests passed. Therefore -xildoff is removed.
Furthermore, when "-g -O" is used to build the library, debuggers such as
dbx can still use the executable, though some debugging ability like displaying
local variables is not available in optimized code. But overall execution time
shorten.
Therefore, the C, Fortran aand CXX DEBUG flags are all set to "-g -O" by
default.
Tested: in Linew using the default development mode because the changes affect
only the Sun platform.
for stream VFD. -lsocket is still used for linking, but it
is added by libtool and not by us.
Set up debug flags for Fortran.
Platforms tested: linew 32 and 64-bit.
CFLAGS overhaul
Description:
Modified the way configure handles CFLAGS.
(note: all changes also apply to FCFLAGS, CXXFLAGS, CPPFLAGS, and LDFLAGS).
1. The configure process will now always preserve a user's CFLAGS
environment variable setup. Any additional flags necessary for compilation
added at configure time will be passed into the Makefiles as AM_CFLAGS,
which is an automake construct to be used in addition to CFLAGS.
This will allow a user to have the final say, as CFLAGS will always appear
later in the compile line than AM_CFLAGS. Additionally, setting CFLAGS
during make will no longer completely erase all flags set by configure,
since they're maintained in AM_CFLAGS.
2. Additionally, where possible, flags previously being assigned directly
into CFLAGS (and thus propagating into h5cc) have now been redirected into
H5_CFLAGS, so they're used ONLY for compiling hdf5, and not embedded into
the h5cc wrapper script as well.
*Note that H5_CFLAGS ultimately is assigned into AM_CFLAGS for use in the
Makefiles. Complete description of changes and build process will be
included in a Configure Document that Elena and I are working on.
3. Removed unsupported config files. This includes:
config/dec-osf*
config/hpux11.00
config/irix5.x
config/powerpc-ibm-aix4.x
config/rs6000-ibm-aix5.x
config/unicos*
4. Modified configure summary to display additional values. Specifically,
appropriate AM_* variables are being shown, as well as H5_FCFLAGS and
H5_CXXFLAGS, which were for some reason not already present.
Tested:
- H5committest
- Tested on all THG / NCSA machines, using several combinations of the more
prominent configure options (c++, fortran, szip, threadsafe, parallel,
et cetera). (Thanks to Quincey for rysnc testing setup!)
- With regards to new automated testing, anything *necessary* for
compilation will be caught by the daily tests as it stands now. (i.e.,
if LDFLAGS is not properly set when szip is used, linking will fail).
Additionally, with regards to which flags get into h5cc, if any
*necessary* flags have been improperly removed, then daily tests should
fail during make installcheck. Additional machine-specific desired
behaviors and/or checks may have to be set up separately within the
daily tests, so this is something to work on.
H5_CFLAGS change
Description:
Converted a few platforms to use H5_CFLAGS to "test the waters"
Solution:
Modified a few config/* files to use H5_CFLAGS for non-essential
flags.
Platforms tested:
mir, heping
Description:
Add source code copyright notice; comment symbols vary by type of file.
Platforms tested:
No changes that should cause any problems. Nonetheless, the tree will
be checked out fresh and tests run immediately post-commit.
Code cleanup
Description:
Removed Fortran type sizes from config/* files.
Solution:
These lines weren't doing anything anymore; they've been replaced by automatic
type generation. This is just housekeeping to remove them from
the config/* files.
Platforms tested:
mir, sol, modi4
Description: -xopnemp=stabs linking flag is needed on Solaris 2.9
in order to build Fortran library.
Solution: Added the flag to LDFLAGS if system version is 5.9
I don't really like the fix since this flag is now always added
for 5.9 systems even if Fortran is not enabled. If someone has
a better solution, please let me know :-)
Platforms tested: shanti, sol
Misc. update:
Automake version upgrade
Description:
Upgraded automake version from 1.6.2 to 1.9.5.
Changed bin/reconfigure script to use automake 1.9.5.
Changed configure.in and Makefiles to use new FCFLAGS and FC variables
instead of FFLAGS and F9X.
Automake and configure should now do the lion's share of the work
supporting Fortran 9X; macros in acsite.m4 are now mostly unused (will
be cleaned later).
Altered how configure handles pmake; now root-level Makefile.in is
processed by bin/reconfigure to have a .MAKEFLAGS target, since
automake no longer allows us to define unused variables.
Configure now always checks for C++ compiler even if it is not
used, since automake thinks this is the Right Thing To Do and
will break otherwise.
Platforms tested:
Sol, copper, heping, mir, sleipnir, eirene, pommier, kelgia, modi4.
Bug fix
Description:
Fix detection of C++ compiler version number.
Platforms tested:
Solaris 2.7 (arabica) w/C++
Solaris 2.8 (sol) w/C++
Does not require h5committest
Description:
Changed -instances=global to -instances=static to avoid multiple
copies of template function verify_val.
Platforms tested:
SunOS 5.7 (arabica)
Bug Fix
Description:
The FFLAGS, CXXFLAGS, and CPPFLAGS variables weren't carrying
user-defined values into the Makefiles.
Solution:
Changed the flags from FOO="..." to FOO="$FOO ..."
Platforms tested:
Copper
Verbena
Arabica
Misc. update:
Update
Description:
Revamped the configuration system. The configurations for the Fortran
and C++ libraries are no longer separate from the "main"
configuration system. This involved removing the "configure*" and
"aclocal.m4" files from the fortran/ and c++/ subdirectories. Also
merging settings in the config/ subdirectories into the main config/
subdirectory.
Fortran header files had to be modified a little for Linux. It was
checking if it was a Linux machine by some #defines, however with the
-std=c99 switch, these defines weren't there. I added a check for
some other ones which should be there whether the -std=c99 switch is
used or not.
Platforms tested:
Verbena (Fortran & C++)
Sol (Fortran & C++)
Copper (Fortran & C++)
Modi4 (Parallel, Fortran, & C++)
Misc. update:
Code cleanup
Description:
Put quotes around compiler flags when debugging is on, so they get
carried down into the Makefiles properly.
Platforms tested:
Solaris 2.6 (baldric)
Bug fix
Description:
When compiled with the -g flag (for debugging), the incremental linker
causes problems when building the H5detect utility.
Solution:
Turn off the incremental linker (with the -xildoff flag) when compiling
for debugging.
Platforms tested:
Solaris 2.8/64 (houdin)
Purpose:
Bugfix
Description:
The gcc linker couldn't resolve any socket routine symbols
if the Stream VFD was configure.
Solution:
Add the socket library to the LIBS makefile variable not just
when compiling with the native cc compiler
but also if using GNU tools (such as on Solaris x86 systems).
Platforms tested:
SunOS 5.5 with GNU cc (hatteras),
SunOS 5.6 with native cc (thor.sistec.kp.dlr.de)
Purpose:
Set compiler flag to force BSD compliance.
Description:
In order to set a socket descriptor into non-blocking mode
via ioctl(2) the Stream driver uses the FIONBIO constant.
Under Solaris this is defined only when compiled as BSD code.
I hope this doesn't break anything.
Platforms tested:
Solaris 5.7
ltconfig used just an empty source file to test the share lib
compiler options. SUNSpro CC returns succeed though it issues
a warning too. ltconfig did not like the warning.
Changed it to test with a file containing a simple dummy program.
Platform tested: solaris 2.6 and 2.7
config/solaris2.x:
Changed default compiler to "cc" now that Sunpro CC can produce
static and shared codes correctly.
Also added -s to PROD_CFLAGS to produce leaner binary files.
----------------------
This extensive change is the virtual file layer implementation. I've
ported and tested the sec2, family, and core drivers and only ported
the mpio driver (Albert will test it). So if you need MPIO I would
recommend sticking with the previous version for a while.
You will get a few compile warnings about split and stdio drivers not
being implemented and possibly tracing information not inserted in
some of the drivers. You can safely ignore them but I plan to fix
them.
I'm still working on the split driver because I just realized that it
needs a part of the VFL that isn't written yet.
Documentation is being updated also because there were some minor
changes (mostly just name changes). It should be available on my web
site later this week.
./MANIFEST
./src/Makefile.in
./src/hdf5.h
./src/H5Flow.c [REMOVED]
./src/H5Fstdio.c [REMOVED]
./src/H5Fsec2.c [REMOVED]
./src/H5Fsplit.c [REMOVED]
./src/H5Fmpio.c [REMOVED]
./src/H5Ffamily.c [REMOVED]
./src/H5Fcore.c [REMOVED]
./src/H5MFpublic.h [REMOVED]
./src/H5FD.c [NEW]
./src/H5FDcore.c [NEW]
./src/H5FDcore.h [NEW]
./src/H5FDfamily.c [NEW]
./src/H5FDfamily.h [NEW]
./src/H5FDmpio.c [NEW]
./src/H5FDmpio.h [NEW]
./src/H5FDprivate.h [NEW]
./src/H5FDpublic.h [NEW]
./src/H5FDsec2.c [NEW]
./src/H5FDsec2.h [NEW]
Removed/added files for virtual file layer.
./bin/trace
./src/H5.c
Removed unused public datatypes and added new VFL public
datatypes.
Changed an error message.
./config/BlankForm
./config/dec-flags
./config/gnu-flags
./config/hpux10.20
./config/hpux9.03
./config/irix5.x
./config/irix6.x
./config/solaris2.x
./config/unicosmk
Removed the H5F_OPT_SEEK and H5F_LOW_DFLT constants from the
configuration since they're no longer applicable. The default
file driver is always the sec2 driver and it always optimizes
calls to lseek() or lseek64().
./config/depend.in
C preprocessor errors generated during automatic dependency
building are sent to /dev/null to prevent them from appearing
twice in the make output.
./src/H5AC.c
./src/H5B.c
./src/H5D.c
./src/H5F.c
./src/H5G.c
./src/H5Gent.c
./src/H5Gnode.c
./src/H5HG.c
./src/H5HL.c
./src/H5O.c
./src/H5Oattr.c
./src/H5Odtype.c
./src/H5Oefl.c
./src/H5Oshared.c
./src/H5T.c
./src/H5detect.c
./test/ohdr.c
Changed H5F_ADDR_UNDEF to HADDR_UNDEF to be more consistent
with the `haddr_t' datatype which is now a public type.
./src/H5D.c
./src/H5P.c
./src/H5Ppublic.h
./src/H5Tconv.c
./test/cmpd_dset.c
./test/dsets.c
./test/overhead.c
./test/tselect.c
./test/tvltypes.c
The H5P_DATASET_XFER constant was changed to H5P_DATA_XFER
because the properties apply to all types of I/O operations,
not just datasets.
./src/H5B.c
./src/H5Bprivate.h
./src/H5D.c
./src/H5Dpublic.h
./src/H5F.c
./src/H5Farray.c
./src/H5Fistore.c
./src/H5Fprivate.h
./src/H5Fpublic.h
./src/H5Gnode.c
./src/H5Gpkg.h
./src/H5HG.c
./src/H5HL.c
./src/H5O.c
./src/H5R.c
./src/H5Sall.c
./src/H5Shyper.c
./src/H5Smpio.c
./src/H5Spoint.c
./src/H5Sprivate.h
./test/big.c
./test/h5test.c
./test/istore.c
./testpar/t_dset.c
./testpar/t_file.c
./tools/h5debug.c
./tools/h5ls.c
Modified to work with the virtual file layer by calling H5FD_*
functions instead of H5F_low_* functions and by passing file
access and data transfer properties by object ID instead of
pointer.
Changed H5D_transfer_t to H5FD_mpio_xfer_t since the
COLLECTIVE vs. INDEPENDENT transfer mode is specific to the
MPIO file driver.
Moved MPIO-specific stuff into the MPIO driver.
./src/H5B.c
./src/H5D.c
./src/H5Fprivate.h
The H5F_mpio_* private functions were renamed and placed in
the H5FDmpio driver except those which appeared in H5Smpio.c.
./src/H5E.c
./src/H5Epublic.h
Added major error number H5E_VFL for virtual file layer
related errors.
./src/H5F.c
./src/H5Fprivate.h
Changed the logic that controls whether the boot block is
written. Instead of assuming that the first call to write the
boot block is only to allocate space, I've added a function
argument which makes this explicit.
Changed the way files are compared so that a driver-defined
comparison function can be called. Files which belong to
different drivers are always considered different.
Removed H5F_driver_t since file drivers are now identified by
object ID instead of a special non-user-extendible datatype.
Removed all the hard-coded low-level file properties which
have been replaced by the various file drivers.
./src/H5I.c
./src/H5Iprivate.h
Added the H5I_inc_ref() which was removed a few months ago
since we finally have a use for it.
./src/H5Ipublic.h
Added the H5I_VFL object ID type to identify file drivers in
the virtual file layer.
./src/H5MF.c
./src/H5MFprivate.h
Moved all the allocation/deallocation code into the virtual
file layer which allows file drivers to override much of it.
./src/H5P.c
./src/H5Ppublic.h
Moved file driver-specific code into the various file driver
files.
The H5Pcopy() and H5Pclose() functions make calls into the
virtual file driver to manage the memory for driver-specific
file access and data transfer properties.
./src/H5private.h
./src/H5public.h
The `haddr_t' type is now public.
./test/tfile.c
Added a few more comments.
----------------------
./Makefile.in
./configure.in
./configure [REGENERATED]
./src/H5config.h.in [REGENERATED]
./config/commence.in
./config/conclude.in
./config/dec-osf4.x
./config/depend.in
./config/freebsd
./config/linux-gnu
./config/linux-gnulibc1
./config/linux-gnulibc2
./config/solaris2.x
./examples/Makefile.in
./src/Makefile.in
./test/Makefile.in
./testpar/Makefile.in
./tools/Makefile.in
./tools/testh5dump.sh
Changes that allow hdf5 to be configured and compiled in a
directory other than the source directory. This is especially
useful if you want to concurrently compile with different
compilers and/or compile flags, or if the hdf5 source is on
read-only media like a CDROM. The changes were surprisingly
easy ;-) Here's what you can do now...
$ mkdir /tmp/build1 # or something
$ cd /tmp/build1
$ /cdrom/hdf5/configure # where ever the source is
$ make
Paul, you'll have to change the testh5toh4 script similar to
the way I changed testh5dump.sh. I started working on it but
then gave up because of a number of problems: (1) I had to
comment out all the tests that let h5toh4 choose the output
file name because it always tried to put the output file in
the same directory as the input file, (2) if path names are
used during the h4 dump then they interfere with the
diff. The test works fine when run in the source directory,
but try this instead:
$ gunzip <hdf5-1.1.67.tar.gz |tar xf -
$ chmod -R ugo-w hdf5-1.1.67
$ mkdir build
$ cd build
$ ../hdf5-1.1.67/configure
$ make check
Dan, I didn't modify the pablo/Makefile.in because I have no
way to test it. I think all you need to do is add a couple
lines before the @COMMENCE@ line and add a couple search
directories for header files. Anyway, it seems like almost an
exact duplicate of the src/Makefile.in, so it shouldn't be a
problem...
./Makefile.in
Removes a few more temporary files during make clean and
distclean.
./configure.in
I fixed the creation of the time-stamp files so that the
initial make doesn't have to regenerated all the makefiles
(only GNU make users will see any change).
./src/H5R.c
Changed a return type from `intn' to `int' for an API
function.
./src/H5detect.c
Added the volatile qualifier to a couple more variables.
./tools/h5tools.c
Fixed a compiler warning about an unused local.
./tools/h5toh4.c
Initialized `optind' to 1 because it's zero on my system. It
should always be one on a unix system.
./tools/testh5toh4
Redirected "broken pipe" messages to /dev/null so outut is
formatted correctly.
----------------------
./config/*-aix4.* [REMOVED]
./config/*-aix4.x [NEW]
./config/solaris2.5 [REMOVED]
./config/solaris2.x [NEW]
./configure.in
./configure [REGENERATED]
./MANIFEST
Changed the names of the IBM-SP2 config files by replacing the
minor version numbers with an `x'. The solaris config warns
about old versions of gcc.
The RUNSERIAL value is set to the empty string by default. The
config/* file (or user) can override it by setting it to some
other value.
The `--enable-parallel' with no flags turns on the
HAVE_PARALLEL constant in the source code but doesn't add any
MPI or MPI-IO libraries to the link line.
If we are compiling for parallel then configure checks that we
can actually link a very simple program. This has the benefit
of detecting config errors before we waste time compiling the
entire library.
Configure recognizes `mpcc_r' as a parallel compiler.
./src/H5A.c
./src/H5Apublic.c
Fixed some compiler warnings. Changed the return type of
H5Aget_name() from hssize_t to ssize_t because the name can
never be larger then memory.