From 6bd0add89a6ae02e66b6b1cae68d58b6798a825a Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Thu, 10 Sep 2015 22:38:22 -0500 Subject: [svn-r27756] Merge of r27692 from trunk Changed the autotools files so that the high-level library is unsupported when building the thread-safe library. Configure will quit with an error when --disable-hl or --enable-unsupported is not used with --enable-threadsafe. Fixes HDFFV-8719 Tested on: h5committest configure w/ various combinations of --enable-threadsafe, --disable-hl, and --enable-unsupported --- configure | 17 ++++++++++++++-- configure.ac | 14 +++++++++++++- release_docs/RELEASE.txt | 50 ++++++++++++++++++++++++++++++++++++++---------- 3 files changed, 68 insertions(+), 13 deletions(-) diff --git a/configure b/configure index e8851f3..04d832b 100755 --- a/configure +++ b/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac Id: configure.ac 27742 2015-09-10 10:59:56Z derobins . +# From configure.ac Id: configure.ac 27743 2015-09-10 11:11:32Z derobins . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for HDF5 1.8.16-snap16. # @@ -1575,7 +1575,9 @@ Optional Features: --disable-sharedlib-rpath Disable use of the '=Wl,-rpath' linker option --enable-production Determines how to run the compiler. - --enable-threadsafe Enable thread-safe capability + --enable-threadsafe Enable thread-safe capability. Not compatible with + the high-level library, Fortran, or C++ wrappers. + [default=no] --enable-debug=all Turn on debugging in all packages. One may also specify a comma-separated list of package names without the leading H5 or the word no. The default @@ -25092,6 +25094,17 @@ if test "${enable_threadsafe+set}" = set; then : fi +## --enable-threadsafe is incompatible with --enable-hl unless +## --enable-unsupported has been specified on the configure line. +## +## Note that the high-level library is enabled by default so most +## users will have to add --disable-hl to the configure options. +if test "X${ALLOW_UNSUPPORTED}" != "Xyes"; then + if test "X${HDF5_HL}" = "Xyes" -a "X${enable_threadsafe}" = "Xyes"; then + as_fn_error $? "The thread-safe library is incompatible with the high-level library. --disable-hl can be used to prevent building the high-level library (recommended). Alternatively, --enable-unsupported will allow building the high-level library, though this configuration is not supported by The HDF Group." "$LINENO" 5 + fi +fi + ## The --enable-threadsafe flag is not compatible with --enable-cxx. ## If the user tried to specify both flags, throw an error, unless ## they also provided the --enable-unsupported flag. diff --git a/configure.ac b/configure.ac index af391da..e058a49 100644 --- a/configure.ac +++ b/configure.ac @@ -1377,9 +1377,21 @@ AC_CACHE_SAVE AC_MSG_CHECKING([for thread safe support]) AC_ARG_ENABLE([threadsafe], [AS_HELP_STRING([--enable-threadsafe], - [Enable thread-safe capability])], + [Enable thread-safe capability. Not compatible with the high-level library, Fortran, or C++ wrappers. + [default=no]])], [THREADSAFE=$enableval]) +## --enable-threadsafe is incompatible with --enable-hl unless +## --enable-unsupported has been specified on the configure line. +## +## Note that the high-level library is enabled by default so most +## users will have to add --disable-hl to the configure options. +if test "X${ALLOW_UNSUPPORTED}" != "Xyes"; then + if test "X${HDF5_HL}" = "Xyes" -a "X${enable_threadsafe}" = "Xyes"; then + AC_MSG_ERROR([The thread-safe library is incompatible with the high-level library. --disable-hl can be used to prevent building the high-level library (recommended). Alternatively, --enable-unsupported will allow building the high-level library, though this configuration is not supported by The HDF Group.]) + fi +fi + ## The --enable-threadsafe flag is not compatible with --enable-cxx. ## If the user tried to specify both flags, throw an error, unless ## they also provided the --enable-unsupported flag. diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt index b7e81e1..c511128 100644 --- a/release_docs/RELEASE.txt +++ b/release_docs/RELEASE.txt @@ -57,6 +57,33 @@ New Features Configuration ------------- + - The thread-safety + high-level library combination has been marked + as "unsupported" in the Autotools + + The global lock used by the thread-safety feature has never been + raised to the high-level library level, making it possible that + library state could change if a context switch were to occur in + a high-level library call. Because of this, the combination of + thread-safety and high-level library is officially unsupported by + The HDF Group. + + In the past, although this combination has never been supported, this + was not enforced by the build systems. These changes will cause an + Autotools configure step to fail if --enable-threadsafe and + --enable-hl are combined unless additional options are specified. + Since the high-level library is built by default, this means that + these extra configuration options will need to be used any time + --enable-threadsafe is selected. + + To build with --enable-threadsafe, either: + + 1) Use --disable-hl to disable the high-level library (recommended) + + 2) Use --enable-unsupported to build the high-level library with + the thread-safety feature. + + (DER - 2015/09/10 HDFFV-8719) + - Using CMake now builds both static and shared libraries. The CMake files have been updated to build both static and shared @@ -111,7 +138,7 @@ New Features a version number since the version number was ignored by configure as it applies to all Solaris versions. - (DER - 2015/09/04 HDFFV-9116) + (DER - 2015/09/04 HDFFV-9116) - Removed the FP_TO_INTEGER_OVERFLOW_WORKS macro/defines from the library @@ -132,7 +159,7 @@ New Features Neither of these were used in any current library code and only appeared in the dt_arith test. - (DER - 2015/09/09 HDFFV-9187) + (DER - 2015/09/09 HDFFV-9187) - Removed CONVERT_DENORMAL_FLOAT symbol and associated code from the library. @@ -141,21 +168,21 @@ New Features config files no longer exist so there is no effect on currently supported platforms. - (DER - 2015/09/09 HDFFV-9188) + (DER - 2015/09/09 HDFFV-9188) - Removed WANT_DATA_ACCURACY symbol and associated code from the library. This is no longer attached to any supported platforms. - (DER - 2015/09/09 HDFFV-9194) + (DER - 2015/09/09 HDFFV-9194) - Removed _BSD_SOURCE and _DEFAULT_SOURCE from configure.ac These are old BSD-compatibility symbols that are no longer needed by the library. - (DER - 2015/09/10 HDFFV-9079) + (DER - 2015/09/10 HDFFV-9079) - Removed HW_FP_TO_LLONG_NOT_WORKS symbol and associated code from the library. @@ -163,7 +190,7 @@ New Features This was part of a work-around for the VS.NET 2003 compiler, which is no longer supported. - (DER - 2015/09/10 HDFFV-9189) + (DER - 2015/09/10 HDFFV-9189) - Removed LDOUBLE_TO_LLONG_ACCURATE symbol and associated code from the library. @@ -172,7 +199,7 @@ New Features OS X 10.4, and some versions of HP/UX, none of which are currently supported. - (DER - 2015/09/10 HDFFV-9192) + (DER - 2015/09/10 HDFFV-9192) - Removed LLONG_TO_LDOUBLE_CORRECT symbol and associated code from the library. @@ -181,7 +208,7 @@ New Features IRIX 6.5, and very old versions of FreeBSD and 64-bit Solaris. None of these platforms/compilers are currently supported. - (DER - 2015/09/10 HDFFV-9193) + (DER - 2015/09/10 HDFFV-9193) Library ------- @@ -238,6 +265,11 @@ Bug Fixes since HDF5-1.8.15 Configuration ------------- + + - None + + Library + ------- - Fix potential error in H5Iclear_type If the ID type's close callback could close another ID of the same type, @@ -248,8 +280,6 @@ Bug Fixes since HDF5-1.8.15 (NAF - 2015-08-12) - Library - ------- - Fix uninitialized memory in dataspace selection code When creating a dataspace with H5Screate and setting the extent with -- cgit v0.12