From 7f446f002ccc137f061630e68f87e5c5d3cc86b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= Date: Tue, 25 Oct 2022 11:39:38 +0200 Subject: [PATCH] gh-98636: Fix detecting gdbm_compat for _dbm module Fix the gdbm_compat library detection logic to actually check for -lgdbm_compat independently of the ndbm detection. This fixes the build failure with `--with-dbmliborder=gdbm`, and implicit fallback to ndbm with the default value. --- Misc/ACKS | 1 + ...2-10-25-11-53-55.gh-issue-98636.e0RPAr.rst | 2 + configure | 59 +++++-------------- configure.ac | 4 +- 4 files changed, 20 insertions(+), 46 deletions(-) create mode 100644 Misc/NEWS.d/next/Build/2022-10-25-11-53-55.gh-issue-98636.e0RPAr.rst diff --git a/Misc/ACKS b/Misc/ACKS index d50cb3c2d1ee4fa..169afc6eb383e49 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -640,6 +640,7 @@ Tiago Gonçalves Chris Gonnerman Shelley Gooch David Goodger +Michał Górny Elliot Gorokhovsky Hans de Graaff Tim Graham diff --git a/Misc/NEWS.d/next/Build/2022-10-25-11-53-55.gh-issue-98636.e0RPAr.rst b/Misc/NEWS.d/next/Build/2022-10-25-11-53-55.gh-issue-98636.e0RPAr.rst new file mode 100644 index 000000000000000..26a7cc8acaf2434 --- /dev/null +++ b/Misc/NEWS.d/next/Build/2022-10-25-11-53-55.gh-issue-98636.e0RPAr.rst @@ -0,0 +1,2 @@ +Fix a regression in detecting ``gdbm_compat`` library for the ``_gdbm`` +module build. diff --git a/configure b/configure index 3f8daf9dad5fd80..23642b668d4d3f8 100755 --- a/configure +++ b/configure @@ -14748,18 +14748,13 @@ fi { ac_cv_header_gdbm_ndbm_h=; unset ac_cv_header_gdbm_ndbm_h;} if test "$ac_cv_header_gdbm_slash_ndbm_h" = yes -o "$ac_cv_header_gdbm_dash_ndbm_h" = yes; then - save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dbm_open" >&5 -$as_echo_n "checking for library containing dbm_open... " >&6; } -if ${ac_cv_search_dbm_open+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dbm_open in -lgdbm_compat" >&5 +$as_echo_n "checking for dbm_open in -lgdbm_compat... " >&6; } +if ${ac_cv_lib_gdbm_compat_dbm_open+:} false; then : $as_echo_n "(cached) " >&6 else - ac_func_search_save_LIBS=$LIBS + ac_check_lib_save_LIBS=$LIBS +LIBS="-lgdbm_compat $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -14778,44 +14773,22 @@ return dbm_open (); return 0; } _ACEOF -for ac_lib in '' gdbm_compat; 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 - if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_dbm_open=$ac_res +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_gdbm_compat_dbm_open=yes +else + ac_cv_lib_gdbm_compat_dbm_open=no fi rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if ${ac_cv_search_dbm_open+:} false; then : - break + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS fi -done -if ${ac_cv_search_dbm_open+:} false; then : - +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gdbm_compat_dbm_open" >&5 +$as_echo "$ac_cv_lib_gdbm_compat_dbm_open" >&6; } +if test "x$ac_cv_lib_gdbm_compat_dbm_open" = xyes; then : + have_gdbm_compat=yes else - ac_cv_search_dbm_open=no + have_gdbm_compat=no fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dbm_open" >&5 -$as_echo "$ac_cv_search_dbm_open" >&6; } -ac_res=$ac_cv_search_dbm_open -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -fi - - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - fi diff --git a/configure.ac b/configure.ac index 734a4db83899151..421f4457624876c 100644 --- a/configure.ac +++ b/configure.ac @@ -4147,9 +4147,7 @@ AS_VAR_IF([ac_cv_header_gdbm_dash_ndbm_h], [yes], [ AS_UNSET([ac_cv_header_gdbm_ndbm_h]) if test "$ac_cv_header_gdbm_slash_ndbm_h" = yes -o "$ac_cv_header_gdbm_dash_ndbm_h" = yes; then - WITH_SAVE_ENV([ - AC_SEARCH_LIBS([dbm_open], [gdbm_compat]) - ]) + AC_CHECK_LIB(gdbm_compat, dbm_open, [have_gdbm_compat=yes], [have_gdbm_compat=no]) fi # Check for libdb >= 5 with dbm_open()