Peter Eisentraut wrote:
> On m?n, 2009-11-30 at 12:21 -0500, Bruce Momjian wrote:
> > ! for thread safety; use --disable-thread-safety to disable
> > threading.])
>
> --disable-thread-safety does not disable threading, it disables thread
> safety.
Good point! Patch updated and attached.
What are we going to do for build farm members who don't support
threading? Is someone going to manually update their configure flags?
--
Bruce Momjian <[email protected]> http://momjian.us
EnterpriseDB http://enterprisedb.com
+ If your life is a hard drive, Christ can be your backup. +
Index: configure
===================================================================
RCS file: /cvsroot/pgsql/configure,v
retrieving revision 1.659
diff -c -c -r1.659 configure
*** configure 30 Nov 2009 16:50:37 -0000 1.659
--- configure 1 Dec 2009 11:22:36 -0000
***************
*** 823,829 ****
enable_depend
enable_cassert
enable_thread_safety
- enable_thread_safety_force
with_tcl
with_tclconfig
with_perl
--- 823,828 ----
***************
*** 1497,1505 ****
--enable-dtrace build with DTrace support
--enable-depend turn on automatic dependency tracking
--enable-cassert enable assertion checks (for debugging)
! --enable-thread-safety make client libraries thread-safe
! --enable-thread-safety-force
! force thread-safety despite thread test failure
--disable-float4-byval disable float4 passed by value
--disable-float8-byval disable float8 passed by value
--disable-largefile omit support for large files
--- 1496,1502 ----
--enable-dtrace build with DTrace support
--enable-depend turn on automatic dependency tracking
--enable-cassert enable assertion checks (for debugging)
! --disable-thread-safety disable thread-safety in client libraries
--disable-float4-byval disable float4 passed by value
--disable-float8-byval disable float8 passed by value
--disable-largefile omit support for large files
***************
*** 4859,4892 ****
#
{ $as_echo "$as_me:$LINENO: checking allow thread-safe client libraries" >&5
$as_echo_n "checking allow thread-safe client libraries... " >&6; }
- if test "$PORTNAME" != "win32"; then
-
-
- # Check whether --enable-thread-safety was given.
- if test "${enable_thread_safety+set}" = set; then
- enableval=$enable_thread_safety;
- case $enableval in
- yes)
- :
- ;;
- no)
- :
- ;;
- *)
- { { $as_echo "$as_me:$LINENO: error: no argument expected for --enable-thread-safety option" >&5
- $as_echo "$as_me: error: no argument expected for --enable-thread-safety option" >&2;}
- { (exit 1); exit 1; }; }
- ;;
- esac
-
- else
- enable_thread_safety=no
-
- fi
-
-
- else
- # Win32 should always use threads
# Check whether --enable-thread-safety was given.
--- 4856,4861 ----
***************
*** 4912,4953 ****
fi
- fi
-
-
-
- # Check whether --enable-thread-safety-force was given.
- if test "${enable_thread_safety_force+set}" = set; then
- enableval=$enable_thread_safety_force;
- case $enableval in
- yes)
- :
- ;;
- no)
- :
- ;;
- *)
- { { $as_echo "$as_me:$LINENO: error: no argument expected for --enable-thread-safety-force option" >&5
- $as_echo "$as_me: error: no argument expected for --enable-thread-safety-force option" >&2;}
- { (exit 1); exit 1; }; }
- ;;
- esac
-
- else
- enable_thread_safety_force=no
-
- fi
-
-
- if test "$enable_thread_safety" = yes -o \
- "$enable_thread_safety_force" = yes; then
- enable_thread_safety="yes" # for 'force'
-
- cat >>confdefs.h <<\_ACEOF
- #define ENABLE_THREAD_SAFETY 1
- _ACEOF
-
- fi
{ $as_echo "$as_me:$LINENO: result: $enable_thread_safety" >&5
$as_echo "$enable_thread_safety" >&6; }
--- 4881,4886 ----
***************
*** 21316,21325 ****
if test "$PTHREAD_CC" != "$CC"; then
{ { $as_echo "$as_me:$LINENO: error:
PostgreSQL does not support platforms that require a special compiler
! for thread safety." >&5
$as_echo "$as_me: error:
PostgreSQL does not support platforms that require a special compiler
! for thread safety." >&2;}
{ (exit 1); exit 1; }; }
fi
--- 21249,21258 ----
if test "$PTHREAD_CC" != "$CC"; then
{ { $as_echo "$as_me:$LINENO: error:
PostgreSQL does not support platforms that require a special compiler
! for thread safety; use --disable-thread-safety to disable thread safety." >&5
$as_echo "$as_me: error:
PostgreSQL does not support platforms that require a special compiler
! for thread safety; use --disable-thread-safety to disable thread safety." >&2;}
{ (exit 1); exit 1; }; }
fi
***************
*** 21465,21472 ****
if test "x$ac_cv_header_pthread_h" = x""yes; then
:
else
! { { $as_echo "$as_me:$LINENO: error: pthread.h not found, required for --enable-thread-safety" >&5
! $as_echo "$as_me: error: pthread.h not found, required for --enable-thread-safety" >&2;}
{ (exit 1); exit 1; }; }
fi
--- 21398,21407 ----
if test "x$ac_cv_header_pthread_h" = x""yes; then
:
else
! { { $as_echo "$as_me:$LINENO: error:
! pthread.h not found; use --disable-thread-safety to disable thread safety" >&5
! $as_echo "$as_me: error:
! pthread.h not found; use --disable-thread-safety to disable thread safety" >&2;}
{ (exit 1); exit 1; }; }
fi
***************
*** 26378,26387 ****
if test "$pgac_cv_func_posix_signals" != yes -a "$enable_thread_safety" = yes; then
{ { $as_echo "$as_me:$LINENO: error:
Thread-safety requires POSIX signals, which are not supported by this
! operating system." >&5
$as_echo "$as_me: error:
Thread-safety requires POSIX signals, which are not supported by this
! operating system." >&2;}
{ (exit 1); exit 1; }; }
fi
fi
--- 26313,26322 ----
if test "$pgac_cv_func_posix_signals" != yes -a "$enable_thread_safety" = yes; then
{ { $as_echo "$as_me:$LINENO: error:
Thread-safety requires POSIX signals, which are not supported by this
! operating system; use --disable-thread-safety to disable thread safety." >&5
$as_echo "$as_me: error:
Thread-safety requires POSIX signals, which are not supported by this
! operating system; use --disable-thread-safety to disable thread safety." >&2;}
{ (exit 1); exit 1; }; }
fi
fi
***************
*** 28231,28254 ****
# We have to run the thread test near the end so we have all our symbols
# defined. Cross compiling throws a warning.
#
! if test "$enable_thread_safety_force" = yes; then
! if test "$PORTNAME" != "win32"
! then
! { $as_echo "$as_me:$LINENO: WARNING:
! *** Skipping thread test program. --enable-thread-safety-force was used.
! *** Run the program in src/test/thread on the your machine and add proper
! *** locking function calls to your applications to guarantee thread safety.
! " >&5
! $as_echo "$as_me: WARNING:
! *** Skipping thread test program. --enable-thread-safety-force was used.
! *** Run the program in src/test/thread on the your machine and add proper
! *** locking function calls to your applications to guarantee thread safety.
! " >&2;}
! else
! { $as_echo "$as_me:$LINENO: WARNING: *** skipping thread test on Win32" >&5
! $as_echo "$as_me: WARNING: *** skipping thread test on Win32" >&2;}
! fi
! elif test "$enable_thread_safety" = yes; then
if test "$PORTNAME" != "win32"
then
{ $as_echo "$as_me:$LINENO: checking thread safety of required library functions" >&5
--- 28166,28172 ----
# We have to run the thread test near the end so we have all our symbols
# defined. Cross compiling throws a warning.
#
! if test "$enable_thread_safety" = yes; then
if test "$PORTNAME" != "win32"
then
{ $as_echo "$as_me:$LINENO: checking thread safety of required library functions" >&5
***************
*** 28311,28331 ****
{ $as_echo "$as_me:$LINENO: result: no" >&5
$as_echo "no" >&6; }
{ { $as_echo "$as_me:$LINENO: error: thread test program failed
! This platform is not thread-safe. Check the file 'config.log' for the
! exact reason.
!
! You can use the configure option --enable-thread-safety-force to force
! threads to be enabled. But you must then run the program in
! src/test/thread and add locking function calls to your applications to
! guarantee thread safety." >&5
$as_echo "$as_me: error: thread test program failed
! This platform is not thread-safe. Check the file 'config.log' for the
! exact reason.
!
! You can use the configure option --enable-thread-safety-force to force
! threads to be enabled. But you must then run the program in
! src/test/thread and add locking function calls to your applications to
! guarantee thread safety." >&2;}
{ (exit 1); exit 1; }; }
fi
rm -rf conftest.dSYM
--- 28229,28241 ----
{ $as_echo "$as_me:$LINENO: result: no" >&5
$as_echo "no" >&6; }
{ { $as_echo "$as_me:$LINENO: error: thread test program failed
! This platform is not thread-safe. Check the file 'config.log' or compile
! and run src/test/thread/thread_test for the exact reason.
! Use --disable-thread-safety to disable thread safety." >&5
$as_echo "$as_me: error: thread test program failed
! This platform is not thread-safe. Check the file 'config.log' or compile
! and run src/test/thread/thread_test for the exact reason.
! Use --disable-thread-safety to disable thread safety." >&2;}
{ (exit 1); exit 1; }; }
fi
rm -rf conftest.dSYM
Index: configure.in
===================================================================
RCS file: /cvsroot/pgsql/configure.in,v
retrieving revision 1.613
diff -c -c -r1.613 configure.in
*** configure.in 30 Nov 2009 16:50:38 -0000 1.613
--- configure.in 1 Dec 2009 11:22:37 -0000
***************
*** 558,577 ****
# Enable thread-safe client libraries
#
AC_MSG_CHECKING([allow thread-safe client libraries])
! if test "$PORTNAME" != "win32"; then
! PGAC_ARG_BOOL(enable, thread-safety, no, [make client libraries thread-safe])
! else
! # Win32 should always use threads
! PGAC_ARG_BOOL(enable, thread-safety, yes, [make client libraries thread-safe])
! fi
!
! PGAC_ARG_BOOL(enable, thread-safety-force, no, [force thread-safety despite thread test failure])
! if test "$enable_thread_safety" = yes -o \
! "$enable_thread_safety_force" = yes; then
! enable_thread_safety="yes" # for 'force'
! AC_DEFINE([ENABLE_THREAD_SAFETY], 1,
! [Define to 1 to build client libraries as thread-safe code. (--enable-thread-safety)])
! fi
AC_MSG_RESULT([$enable_thread_safety])
AC_SUBST(enable_thread_safety)
--- 558,564 ----
# Enable thread-safe client libraries
#
AC_MSG_CHECKING([allow thread-safe client libraries])
! PGAC_ARG_BOOL(enable, thread-safety, yes, [disable thread-safety in client libraries])
AC_MSG_RESULT([$enable_thread_safety])
AC_SUBST(enable_thread_safety)
***************
*** 1404,1410 ****
if test "$PTHREAD_CC" != "$CC"; then
AC_MSG_ERROR([
PostgreSQL does not support platforms that require a special compiler
! for thread safety.])
fi
# Check for *_r functions
--- 1391,1397 ----
if test "$PTHREAD_CC" != "$CC"; then
AC_MSG_ERROR([
PostgreSQL does not support platforms that require a special compiler
! for thread safety; use --disable-thread-safety to disable thread safety.])
fi
# Check for *_r functions
***************
*** 1414,1420 ****
LIBS="$LIBS $PTHREAD_LIBS"
if test "$PORTNAME" != "win32"; then
! AC_CHECK_HEADER(pthread.h, [], [AC_MSG_ERROR([pthread.h not found, required for --enable-thread-safety])])
fi
AC_CHECK_FUNCS([strerror_r getpwuid_r gethostbyname_r])
--- 1401,1408 ----
LIBS="$LIBS $PTHREAD_LIBS"
if test "$PORTNAME" != "win32"; then
! AC_CHECK_HEADER(pthread.h, [], [AC_MSG_ERROR([
! pthread.h not found; use --disable-thread-safety to disable thread safety])])
fi
AC_CHECK_FUNCS([strerror_r getpwuid_r gethostbyname_r])
***************
*** 1660,1666 ****
if test "$pgac_cv_func_posix_signals" != yes -a "$enable_thread_safety" = yes; then
AC_MSG_ERROR([
Thread-safety requires POSIX signals, which are not supported by this
! operating system.])
fi
fi
--- 1648,1654 ----
if test "$pgac_cv_func_posix_signals" != yes -a "$enable_thread_safety" = yes; then
AC_MSG_ERROR([
Thread-safety requires POSIX signals, which are not supported by this
! operating system; use --disable-thread-safety to disable thread safety.])
fi
fi
***************
*** 1749,1766 ****
# We have to run the thread test near the end so we have all our symbols
# defined. Cross compiling throws a warning.
#
! if test "$enable_thread_safety_force" = yes; then
! if test "$PORTNAME" != "win32"
! then
! AC_MSG_WARN([
! *** Skipping thread test program. --enable-thread-safety-force was used.
! *** Run the program in src/test/thread on the your machine and add proper
! *** locking function calls to your applications to guarantee thread safety.
! ])
! else
! AC_MSG_WARN([*** skipping thread test on Win32])
! fi
! elif test "$enable_thread_safety" = yes; then
if test "$PORTNAME" != "win32"
then
AC_MSG_CHECKING([thread safety of required library functions])
--- 1737,1743 ----
# We have to run the thread test near the end so we have all our symbols
# defined. Cross compiling throws a warning.
#
! if test "$enable_thread_safety" = yes; then
if test "$PORTNAME" != "win32"
then
AC_MSG_CHECKING([thread safety of required library functions])
***************
*** 1773,1785 ****
[AC_MSG_RESULT(yes)],
[AC_MSG_RESULT(no)
AC_MSG_ERROR([thread test program failed
! This platform is not thread-safe. Check the file 'config.log' for the
! exact reason.
!
! You can use the configure option --enable-thread-safety-force to force
! threads to be enabled. But you must then run the program in
! src/test/thread and add locking function calls to your applications to
! guarantee thread safety.])],
[AC_MSG_RESULT(maybe)
AC_MSG_WARN([
*** Skipping thread test program because of cross-compile build.
--- 1750,1758 ----
[AC_MSG_RESULT(yes)],
[AC_MSG_RESULT(no)
AC_MSG_ERROR([thread test program failed
! This platform is not thread-safe. Check the file 'config.log' or compile
! and run src/test/thread/thread_test for the exact reason.
! Use --disable-thread-safety to disable thread safety.])],
[AC_MSG_RESULT(maybe)
AC_MSG_WARN([
*** Skipping thread test program because of cross-compile build.
Index: doc/src/sgml/ecpg.sgml
===================================================================
RCS file: /cvsroot/pgsql/doc/src/sgml/ecpg.sgml,v
retrieving revision 1.92
diff -c -c -r1.92 ecpg.sgml
*** doc/src/sgml/ecpg.sgml 30 Nov 2009 14:47:37 -0000 1.92
--- doc/src/sgml/ecpg.sgml 1 Dec 2009 11:22:38 -0000
***************
*** 4709,4718 ****
</para>
<para>
! The <application>ecpg</application> library is thread-safe if it is built
! using the <option>--enable-thread-safety</> command-line option to
! <filename>configure</filename>. (You might need to use other threading
! command-line options to compile your client code.)
</para>
</sect1>
--- 4709,4717 ----
</para>
<para>
! The <application>ecpg</application> library is thread-safe by
! default. However, you might need to use some threading
! command-line options to compile your client code.
</para>
</sect1>
Index: doc/src/sgml/installation.sgml
===================================================================
RCS file: /cvsroot/pgsql/doc/src/sgml/installation.sgml,v
retrieving revision 1.327
diff -c -c -r1.327 installation.sgml
*** doc/src/sgml/installation.sgml 12 Aug 2009 16:32:35 -0000 1.327
--- doc/src/sgml/installation.sgml 1 Dec 2009 11:22:38 -0000
***************
*** 1164,1177 ****
</varlistentry>
<varlistentry>
! <term><option>--enable-thread-safety</option></term>
<listitem>
<para>
! Make the client libraries thread-safe. This allows
concurrent threads in <application>libpq</application> and
! <application>ECPG</application> programs to safely control
! their private connection handles. This option requires adequate
! threading support in your operating system.
</para>
</listitem>
</varlistentry>
--- 1164,1176 ----
</varlistentry>
<varlistentry>
! <term><option>--disable-thread-safety</option></term>
<listitem>
<para>
! Disable the thread-safety of client libraries. This prevents
concurrent threads in <application>libpq</application> and
! <application>ECPG</application> programs from safely controlling
! their private connection handles.
</para>
</listitem>
</varlistentry>
***************
*** 2835,2846 ****
</sect3>
<sect3>
! <title><option>--enable-thread-safety</option> and UnixWare</title>
<para>
! If you use the <command>configure</command>
! option <option>--enable-thread-safety</option>,
! you <emphasis>must</emphasis> use <option>-Kpthread</option>
on <emphasis>all</emphasis> libpq-using programs. libpq
uses <function>pthread_*</function> calls, which are only
available with the
--- 2834,2843 ----
</sect3>
<sect3>
! <title>Threading on UnixWare</title>
<para>
! For threading, you<emphasis>must</emphasis> use <option>-Kpthread</option>
on <emphasis>all</emphasis> libpq-using programs. libpq
uses <function>pthread_*</function> calls, which are only
available with the
Index: doc/src/sgml/libpq.sgml
===================================================================
RCS file: /cvsroot/pgsql/doc/src/sgml/libpq.sgml,v
retrieving revision 1.290
diff -c -c -r1.290 libpq.sgml
*** doc/src/sgml/libpq.sgml 28 Nov 2009 23:38:06 -0000 1.290
--- doc/src/sgml/libpq.sgml 1 Dec 2009 11:22:43 -0000
***************
*** 6577,6587 ****
</indexterm>
<para>
! <application>libpq</application> is reentrant and thread-safe if the
! <filename>configure</filename> command-line option
! <literal>--enable-thread-safety</> was used when the
! <productname>PostgreSQL</productname> distribution was built. In
! addition, you might need to use additional compiler command-line
options when you compile your application code. Refer to your
system's documentation for information about how to build
thread-enabled applications, or look in
--- 6577,6584 ----
</indexterm>
<para>
! <application>libpq</application> is reentrant and thread-safe by default.
! You might need to use special compiler command-line
options when you compile your application code. Refer to your
system's documentation for information about how to build
thread-enabled applications, or look in
Index: src/test/thread/README
===================================================================
RCS file: /cvsroot/pgsql/src/test/thread/README,v
retrieving revision 1.2
diff -c -c -r1.2 README
*** src/test/thread/README 21 Mar 2008 13:23:29 -0000 1.2
--- src/test/thread/README 1 Dec 2009 11:22:44 -0000
***************
*** 3,17 ****
Threading
=========
! This program should be run by developers wishing to enable threading on
! new platforms.
! Run thread_test program to determine if your native libc functions are
! thread-safe, or if we should use *_r functions or thread locking.
! To use this program, you must:
! o run "configure --enable-thread-safety"
o compile the main source tree
o compile and run this program
--- 3,18 ----
Threading
=========
! This program is run by configure to determine if threading is
! properly supported on the platform.
! You can run the program manually to see details, which shows if your
! native libc functions are thread-safe, or if we use *_r functions or
! thread locking.
! To use this program manually, you must:
! o run "configure"
o compile the main source tree
o compile and run this program
--
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers