Re: solaris libpq threaded build fails - Mailing list pgsql-hackers
From | Bruce Momjian |
---|---|
Subject | Re: solaris libpq threaded build fails |
Date | |
Msg-id | 200901141643.n0EGhQS18861@momjian.us Whole thread Raw |
In response to | Re: solaris libpq threaded build fails (Andrew Chernow <ac@esilo.com>) |
Responses |
Re: solaris libpq threaded build fails
|
List | pgsql-hackers |
Andrew Chernow wrote: > > >>> > >> Forgot to mention, there is an easy fix: > >> > >> ~]# LDFLAGS="-lnsl" ./configure --enable-thread-safety > > > > But I assume that only works if I use gethostbyname_r(), right? > > No, works for gethostbyname as well. They are all in libnsl. > > > But we do check for that in thread_test.c. > > The problem with the current check is its only an AC_CHECK_FUNCS. > We need an AC_SEARCH_LIBS first so the proper -llibrary is > appended to LIBS, which is used by AC_CHECK_FUNCS. > > AC_SEARCH_LIBS(gethostbyname_r, c nsl) AC_CHECK_FUNCS([strerror_r > getpwuid_r gethostbyname_r]) > > (AC_CHECK_FUNCS from configure.in line 1371) OK, patch attached and applied to CVS HEAD. The nsl (not 'nls') library check was removed in Postgres 8.2 here: http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/configure.in.diff?r1=1.448;r2=1.445;f=h The new code is more specific by testing for gethostbyname_r() and only on Solaris. I also added a comment about why it was re-added. The next question is do we backpatch this back to 8.2? -- Bruce Momjian <bruce@momjian.us> 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.626 diff -c -c -r1.626 configure *** configure 11 Jan 2009 18:02:15 -0000 1.626 --- configure 14 Jan 2009 16:37:21 -0000 *************** *** 7743,7748 **** --- 7743,7836 ---- fi + # Required for thread_test.c on Solaris 2.5: + case $host_os in + solaris*) + { echo "$as_me:$LINENO: checking for library containing gethostbyname_r" >&5 + echo $ECHO_N "checking for library containing gethostbyname_r... $ECHO_C" >&6; } + if test "${ac_cv_search_gethostbyname_r+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_func_search_save_LIBS=$LIBS + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + + /* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif + char gethostbyname_r (); + int + main () + { + return gethostbyname_r (); + ; + return 0; + } + _ACEOF + for ac_lib in '' nsl; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + rm -f conftest.$ac_objext conftest$ac_exeext + if { (ac_try="$ac_link" + case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; + esac + eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_search_gethostbyname_r=$ac_res + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + + + fi + + rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext + if test "${ac_cv_search_gethostbyname_r+set}" = set; then + break + fi + done + if test "${ac_cv_search_gethostbyname_r+set}" = set; then + : + else + ac_cv_search_gethostbyname_r=no + fi + rm conftest.$ac_ext + LIBS=$ac_func_search_save_LIBS + fi + { echo "$as_me:$LINENO: result: $ac_cv_search_gethostbyname_r" >&5 + echo "${ECHO_T}$ac_cv_search_gethostbyname_r" >&6; } + ac_res=$ac_cv_search_gethostbyname_r + if test "$ac_res" != no; then + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + + fi + + ;; + esac # Cygwin: { echo "$as_me:$LINENO: checking for library containing shmget" >&5 echo $ECHO_N "checking for library containing shmget... $ECHO_C" >&6; } Index: configure.in =================================================================== RCS file: /cvsroot/pgsql/configure.in,v retrieving revision 1.585 diff -c -c -r1.585 configure.in *** configure.in 11 Jan 2009 18:02:17 -0000 1.585 --- configure.in 14 Jan 2009 16:37:21 -0000 *************** *** 870,875 **** --- 870,881 ---- AC_SEARCH_LIBS(crypt, crypt) # Solaris: AC_SEARCH_LIBS(fdatasync, [rt posix4]) + # Required for thread_test.c on Solaris 2.5: + case $host_os in + solaris*) + AC_SEARCH_LIBS(gethostbyname_r, nsl) + ;; + esac # Cygwin: AC_SEARCH_LIBS(shmget, cygipc)
pgsql-hackers by date: