On (03/09/13 08:32), Stephen Gallagher wrote: >-----BEGIN PGP SIGNED MESSAGE----- >Hash: SHA1 > >On 09/03/2013 07:32 AM, Jakub Hrozek wrote: >> On Mon, Sep 02, 2013 at 07:04:22PM +0200, Lukas Slebodnik wrote: >>> ehlo >>> >>> Patches are attached. >>> >>> LS >> >> (I started this review yesterday in the evening and then didn't had >> the energy to finish it so some comments overlap with Sumit's) >> >> The SSSD build still works fine with these patches on Fedora 19 >> (master) and for patches which could be applied on top of 1.9, I >> also tested RHEL-5. I haven't tested RHEL-6 or any other >> distribution. >> >>> From 6e3b789f4b24198b2ec4b40fb09e8b97e578044a Mon Sep 17 00:00:00 >>> 2001 From: Lukas Slebodnik <[email protected]> Date: Sat, 31 >>> Aug 2013 01:12:01 +0200 Subject: [PATCH 2/9] AUTOTOOLS: add check >>> for type intptr_t >>> >>> We check whether HAVE_INTPTR_T is defined in definition of macro >>> discard_const_p, but autootols macro AC_CHECK_TYPE did not >>> generate it. --- src/external/sizes.m4 | 3 +-- 1 file changed, 1 >>> insertion(+), 2 deletions(-) >>> >>> diff --git a/src/external/sizes.m4 b/src/external/sizes.m4 index >>> 53df61dedc3ae748c50ca9a3935632087834155d..1018d846016541043d81fb2a53609ad9c562071a >>> 100644 --- a/src/external/sizes.m4 +++ b/src/external/sizes.m4 @@ >>> -37,8 +37,7 @@ AC_CHECK_SIZEOF(off_t) AC_CHECK_SIZEOF(size_t) >>> AC_CHECK_SIZEOF(ssize_t) >>> >>> +AC_CHECK_TYPES([intptr_t]) AC_CHECK_TYPE(intptr_t, long long) >>> AC_CHECK_TYPE(uintptr_t, unsigned long long) >>> AC_CHECK_TYPE(ptrdiff_t, unsigned long long) I removed these teo lines and replaced with: +AC_CHECK_TYPES([intptr_t], + [], + [AC_DEFINE_UNQUOTED([intptr_t], [long long], + [Define to `long long' + if <stdint.h does not define.])])
>> >> I think this is OK but maybe we should have a ticket to get rid of >> the obsolete AC_CHECK_TYPE invocation? See >> https://www.gnu.org/software/autoconf/manual/autoconf-2.67/html_node/Obsolete-Macros.html#Obsolete-Macros >> Yes, We should file a ticket to get rid of obsolete macros. >> >for some details. The documentation explicitly cites using AC_CHECK_TYPE >> for detecting pointer types as broken. >> >> I would also like a comment added or the "AC_CHECK_TYPE(intptr_t" >> removed because currently the code looks a little odd with two >> subsequent lines checking for intptr_t. >> >>> From e5d01ae5690d52b83dbdb621bf4e4077fc65abf4 Mon Sep 17 00:00:00 >>> 2001 From: Lukas Slebodnik <[email protected]> Date: Sat, 31 >>> Aug 2013 05:16:58 +0200 Subject: [PATCH 3/9] AUTOTOOLS: Add >>> -LLIBDIR to PYTHON_LIBS >>> >>> Detect directory with python libraries and add this directory to >>> the list of directories to be searched for linker. --- >>> src/external/python.m4 | 3 ++- 1 file changed, 2 insertions(+), 1 >>> deletion(-) >>> >>> diff --git a/src/external/python.m4 b/src/external/python.m4 >>> index >>> 00487a746a44a945e7bcd92a8f1f2ddd2b4eba80..5f48bc92618b2fbc23610f67f86e38f659977c5a >>> 100644 --- a/src/external/python.m4 +++ b/src/external/python.m4 >>> @@ -19,7 +19,8 @@ dnl versions of python PYTHON_LIBS="`$PYTHON -c >>> \"from distutils import sysconfig; \ print \\\" >>> \\\".join(sysconfig.get_config_var('LIBS').split() + \ >>> sysconfig.get_config_var('SYSLIBS').split()) + \ - ' >>> -lpython' + sysconfig.get_config_var('VERSION')\"`" + >>> ' -lpython' + sysconfig.get_config_var('VERSION') + \ + >>> ' -L' + sysconfig.get_config_var('LIBDIR')\"`" >>> AC_MSG_RESULT([yes]) else AC_MSG_ERROR([no. Please install python >>> devel package]) -- 1.8.3.1 >>> >> >> ACK. Out of curiosity, what directory is Python's LIBDIR on >> FreeBSD? /usr/local/lib ? >> Yes, but portable way is to call "sysconfig.get_config_var('LIBDIR')" or to use pkg-config (I don't like second option) >>> From: Lukas Slebodnik <[email protected]> Date: Sat, 31 Aug >>> 2013 05:36:49 +0200 Subject: [PATCH 4/9] AUTOTOOLS: Add missing >>> AC_MSG_RESULT >> Ack, but Sumit is right about adding []. >> Changed. >>> From c338c7d721d6bef4fda6ad84321dd3096a14612a Mon Sep 17 00:00:00 >>> 2001 From: Lukas Slebodnik <[email protected]> Date: Sat, 31 >>> Aug 2013 07:08:32 +0200 Subject: [PATCH 5/9] AUTOMAKE: Use >>> portable way to link with dlopen >> >> I couldn't apply this patch on top of 1.9. It works on Fedora 19, >> though. >> I din't have a problem with this, beacuse I cherry-picked all patches directly from master. I don't want to complicate this. So you have two options either to use "cherry-pick" form master or "git am --3way". I created patch from master and 1-9 branch and patches was very similar. I don't know why it can not be applied cleanly. >>> >>> --- Makefile.am | 4 ++-- configure.ac | 1 + 2 files changed, 3 >>> insertions(+), 2 deletions(-) >>> >>> diff --git a/Makefile.am b/Makefile.am index >>> 9e68ad9b3a16c9106311eb833a97b01714656a61..1d08dd08b19a56017fbff908811e6a58ab0f7a74 >>> 100644 --- a/Makefile.am +++ b/Makefile.am @@ -719,7 +719,7 @@ >>> sssd_be_SOURCES = \ src/providers/dp_refresh.c \ >>> $(SSSD_FAILOVER_OBJ) sssd_be_LDADD = \ - -ldl \ + >>> $(LIBADD_DL) \ $(SSSD_LIBS) \ $(CARES_LIBS) \ >>> $(SSSD_INTERNAL_LTLIBS) @@ -1096,7 +1096,7 @@ >>> simple_access_tests_CFLAGS = \ $(CHECK_CFLAGS) \ -DUNIT_TESTING >>> simple_access_tests_LDADD = \ - -ldl \ + $(LIBADD_DL) \ >>> $(SSSD_LIBS) \ $(CARES_LIBS) \ $(CHECK_LIBS) \ diff --git >>> a/configure.ac b/configure.ac index >>> 19bd1928f8a2149d3bf8e8f7a8d46ab7343a0bd6..d16054efae73e8844ac236d0220f274684c5ce8d >>> 100644 --- a/configure.ac +++ b/configure.ac @@ -20,6 +20,7 @@ >>> m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) AC_DISABLE_STATIC >>> AC_PROG_INSTALL AC_PROG_LIBTOOL +LT_LIB_DLLOAD >> >> I thought that LT_* macros were low-level libtool macros? Can you >> check if AC_LIBTOOL_DLOPEN would do the same thing? Also I would >> expect that any macro that would set $LD should be called before >> AC_PROG_LIBTOOL not after. >> Macro LT_LIB_DLLOAD can be safely use, it is not private. 5.1 Autoconf macros exported by libtool http://www.gnu.org/software/libtool/manual/html_node/Autoconf-macros.html >>> From a98852a669c5df89a0c611cc9324be32e6d05c0e Mon Sep 17 00:00:00 >>> 2001 From: Lukas Slebodnik <[email protected]> Date: Sat, 31 >>> Aug 2013 08:50:47 +0200 Subject: [PATCH 6/9] AUTOMAKE: Use >>> portable way to link with gettext >> ACK >> >>> From beb84b3339a79de8f0f4a57b2e61642542b0e4ef Mon Sep 17 00:00:00 >>> 2001 From: Lukas Slebodnik <[email protected]> Date: Sat, 31 >>> Aug 2013 11:15:03 +0200 Subject: [PATCH 7/9] AUTOTOOLS: Add >>> directories for searching ldap headers and libs >>> >>> --- src/external/ldap.m4 | 4 ++-- 1 file changed, 2 >>> insertions(+), 2 deletions(-) >>> >>> diff --git a/src/external/ldap.m4 b/src/external/ldap.m4 index >>> 8899df9d7c73dae25b97347022651d768986333e..3a99ddfcc7e7ebee94272d382e2876ec8649770a >>> 100644 --- a/src/external/ldap.m4 +++ b/src/external/ldap.m4 @@ >>> -9,14 +9,14 @@ dnl >>> --------------------------------------------------------------------------- >>> >>> >dnl - Check for Mozilla LDAP or OpenLDAP SDK >>> dnl >>> --------------------------------------------------------------------------- >>> >>> -for p in /usr/include/openldap24; do +for p in >>> /usr/include/openldap24 /usr/local/include; do if test -f >>> "${p}/ldap.h"; then OPENLDAP_CFLAGS="${OPENLDAP_CFLAGS} -I${p}" >>> break; fi done >>> >>> -for p in /usr/lib64/openldap24 /usr/lib/openldap24; do +for p in >>> /usr/lib64/openldap24 /usr/lib/openldap24 /usr/local/lib ; do if >>> test -f "${p}/libldap.so"; then OPENLDAP_LIBS="${OPENLDAP_LIBS} >>> -L${p}" break; >> >> Don't we also need to add /usr/local/lib64 ? (Sorry, I don't know >> how multilib works on FreeBSD).. >> I have a 64-bit virtual machine and directory /usr/local/lib64 does not exist. >>> From 2e939d50ce4837a76bb4850e6fb6b1c1435c27c1 Mon Sep 17 00:00:00 >>> 2001 From: Lukas Slebodnik <[email protected]> Date: Sat, 31 >>> Aug 2013 12:17:38 +0200 Subject: [PATCH 8/9] AUTOTOOLS: Use >>> pkg-config to detect libraries. >>> >>> We used pkg-config only as a fallback if header files was not >>> found, but detection of library failed in case of available >>> header file and linking problem (missing -Ldir). >>> >>> This patch prefers pkg-config. >> >> The other reason is that in the past, some of the libraries didn't >> ship a .pc file. Since you would like to have these patches in 1.9 >> (I assume), can you check that they have pkg-config files in the >> older versions, too? >> FreeBSD have .pc files. popt-devel does not ship a .pc file on fedora 19 :-) We need fallback. >>> From faa431369b66684024272392da507d374695aaea Mon Sep 17 00:00:00 >>> 2001 From: Lukas Slebodnik <[email protected]> Date: Sat, 31 >>> Aug 2013 15:32:39 +0200 Subject: [PATCH 9/9] AUTOTOOLS: Refactor >>> unicode library detection >> >> Seems to work fine, but see Sumit's comment in his response.. Changed > > >I ran these patches in a scratch-build against RHEL 6 (which is the >oldest supported OS we have for master). It builds successfully, from >which I will assume that all of the macros we are relying on either >exist or are falling-back gracefully. I tested srpm from master and sssd-1-9 with various mock configs. So it must work. > > > >Patch 0002: See Sumit and Jakub's comments about the macro. > >Patch 0003: Ack > >Patch 0004: See earlier comments about escaping. As I mentioned before. It is changed. > >Patch 0005: Ack > >Patch 0006: Ack > >Patch 0007: are /usr/local/include and /usr/local/lib not standard >lookup paths on BSD? The reason for this entry here is entirely for >support of RHEL 5 (which we have dropped) because we were carrying a >parallel-installable version of the openldap client libraries in a >non-standard location. Standard directories are /usr/include and /usr/lib, but all packages are installed to /usr/local/. I would like to push these patches also to 1-9-branch. > >Patch 0008: I *think* the original reasoning for this behavior was >that we intended a Solaris port which didn't support pkg-config >properly at the time. I'm not sure whether Solaris/Illumos today has >since implemented it properly. That said, we're not currently focusing >on that OS, so I'm willing to leave that as "patches welcome". > >Patch 0009: Can we drop libunistring in 1.11/1.12? We only originally >supported it because we were wary that pulling in Glib would have >issues with dueling implementations of D-BUS and a mainloop, but we've >since proven that this isn't a problem. Of course, if Glib is not >available on our target platforms, this becomes less obvious. I think we can leave it as it. libunistring can be untested. The similar situation is with nss and libcrypto. I have also fixed all Sumit's comments Thank you very much for review. Updated patches are attached. LS
>From f3ac335e310fe1bf2598d4896af84ae4abf79fb5 Mon Sep 17 00:00:00 2001 From: Lukas Slebodnik <[email protected]> Date: Sat, 31 Aug 2013 01:12:01 +0200 Subject: [PATCH 1/8] AUTOTOOLS: add check for type intptr_t We check whether HAVE_INTPTR_T is defined in definition of macro discard_const_p, but autootols macro AC_CHECK_TYPE did not generate it. --- src/external/sizes.m4 | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/external/sizes.m4 b/src/external/sizes.m4 index 53df61dedc3ae748c50ca9a3935632087834155d..fba7f0759f98a367cd20e9cf808835b6ca2ba926 100644 --- a/src/external/sizes.m4 +++ b/src/external/sizes.m4 @@ -37,8 +37,11 @@ AC_CHECK_SIZEOF(off_t) AC_CHECK_SIZEOF(size_t) AC_CHECK_SIZEOF(ssize_t) -AC_CHECK_TYPE(intptr_t, long long) + +AC_CHECK_TYPES([intptr_t], + [], + [AC_DEFINE_UNQUOTED([intptr_t], [long long], + [Define to `long long' + if <stdint.h does not define.])]) AC_CHECK_TYPE(uintptr_t, unsigned long long) AC_CHECK_TYPE(ptrdiff_t, unsigned long long) - - -- 1.8.3.1
>From e741c823a47476af6c78fb7c7ecbf9e9c6fc5e12 Mon Sep 17 00:00:00 2001 From: Lukas Slebodnik <[email protected]> Date: Sat, 31 Aug 2013 05:16:58 +0200 Subject: [PATCH 2/8] AUTOTOOLS: Add -LLIBDIR to PYTHON_LIBS Detect directory with python libraries and add this directory to the list of directories to be searched for linker. --- src/external/python.m4 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/external/python.m4 b/src/external/python.m4 index 00487a746a44a945e7bcd92a8f1f2ddd2b4eba80..5f48bc92618b2fbc23610f67f86e38f659977c5a 100644 --- a/src/external/python.m4 +++ b/src/external/python.m4 @@ -19,7 +19,8 @@ dnl versions of python PYTHON_LIBS="`$PYTHON -c \"from distutils import sysconfig; \ print \\\" \\\".join(sysconfig.get_config_var('LIBS').split() + \ sysconfig.get_config_var('SYSLIBS').split()) + \ - ' -lpython' + sysconfig.get_config_var('VERSION')\"`" + ' -lpython' + sysconfig.get_config_var('VERSION') + \ + ' -L' + sysconfig.get_config_var('LIBDIR')\"`" AC_MSG_RESULT([yes]) else AC_MSG_ERROR([no. Please install python devel package]) -- 1.8.3.1
>From 1223c0051e924add3c9ebf09fcd8d9134d94965d Mon Sep 17 00:00:00 2001 From: Lukas Slebodnik <[email protected]> Date: Sat, 31 Aug 2013 05:36:49 +0200 Subject: [PATCH 3/8] AUTOTOOLS: Add missing AC_MSG_RESULT AC_MSG_RESULT was not used everywhere after AC_MSG_CHECKING. Therefore two lines from configure output was mixed in some cases. --- src/external/krb5.m4 | 3 ++- src/external/nsupdate.m4 | 6 ++++-- src/external/pac_responder.m4 | 3 ++- src/external/python.m4 | 3 ++- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/external/krb5.m4 b/src/external/krb5.m4 index bdbd71ba1f395eb4f78047f75841729e0289ae81..1c1c3e5e2d08fd20b8945438b9885ee8def1df52 100644 --- a/src/external/krb5.m4 +++ b/src/external/krb5.m4 @@ -16,8 +16,9 @@ if test -x "$KRB5_CONFIG"; then KRB5_LIBS="`$KRB5_CONFIG --libs`" AC_MSG_RESULT(yes) else + AC_MSG_RESULT([no]) if test x$KRB5_PASSED_LIBS = x; then - AC_MSG_ERROR(no. Please install MIT kerberos devel package) + AC_MSG_ERROR([Please install MIT kerberos devel package]) fi fi diff --git a/src/external/nsupdate.m4 b/src/external/nsupdate.m4 index 9ccff615927664afd7d9a6412159791ff79c5485..b7048d58a3f50dfd25c20754f71386646e2e3dce 100644 --- a/src/external/nsupdate.m4 +++ b/src/external/nsupdate.m4 @@ -9,9 +9,11 @@ if test -x "$NSUPDATE"; then AC_MSG_RESULT([yes]) AC_DEFINE_UNQUOTED([HAVE_NSUPDATE_REALM], 1, [Whether to use the 'realm' directive with nsupdate]) else - AC_MSG_WARN([no. Will build without the 'realm' directive]) + AC_MSG_RESULT([no]) + AC_MSG_WARN([Will build without the 'realm' directive]) fi else - AC_MSG_ERROR([no. nsupdate is not available]) + AC_MSG_RESULT([no]) + AC_MSG_ERROR([nsupdate is not available]) fi diff --git a/src/external/pac_responder.m4 b/src/external/pac_responder.m4 index 733241a1322f4338be0345b2bb969b7a7c5c35ce..49d5cbb6d38c55cfc3740ad9243c227907ebb7b4 100644 --- a/src/external/pac_responder.m4 +++ b/src/external/pac_responder.m4 @@ -22,9 +22,10 @@ then Kerberos\ 5\ release\ 1.10* | \ Kerberos\ 5\ release\ 1.11*) krb5_version_ok=yes - AC_MSG_RESULT(yes) + AC_MSG_RESULT([yes]) ;; *) + AC_MSG_RESULT([no]) AC_MSG_WARN([Cannot build authdata plugin with this version of MIT Kerberos, please use 1.9.x or later]) esac diff --git a/src/external/python.m4 b/src/external/python.m4 index 5f48bc92618b2fbc23610f67f86e38f659977c5a..cfe9961c75bbd191b78c8cdc21008b11b179548f 100644 --- a/src/external/python.m4 +++ b/src/external/python.m4 @@ -23,7 +23,8 @@ dnl versions of python ' -L' + sysconfig.get_config_var('LIBDIR')\"`" AC_MSG_RESULT([yes]) else - AC_MSG_ERROR([no. Please install python devel package]) + AC_MSG_RESULT([no]) + AC_MSG_ERROR([Please install python devel package]) fi ]) -- 1.8.3.1
>From 050ae51ee249747a9e31354fd638a20e8ac1aec0 Mon Sep 17 00:00:00 2001 From: Lukas Slebodnik <[email protected]> Date: Sat, 31 Aug 2013 07:08:32 +0200 Subject: [PATCH 4/8] AUTOMAKE: Use portable way to link with dlopen --- Makefile.am | 4 ++-- configure.ac | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Makefile.am b/Makefile.am index b913a12b895d68f1f3e23c185e493e576641d0e2..5225fe2c5895024fe4489096594c9c88eb859b5e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -718,7 +718,7 @@ sssd_be_SOURCES = \ src/providers/dp_refresh.c \ $(SSSD_FAILOVER_OBJ) sssd_be_LDADD = \ - -ldl \ + $(LIBADD_DL) \ $(SSSD_LIBS) \ $(CARES_LIBS) \ $(SSSD_INTERNAL_LTLIBS) @@ -1095,7 +1095,7 @@ simple_access_tests_CFLAGS = \ $(CHECK_CFLAGS) \ -DUNIT_TESTING simple_access_tests_LDADD = \ - -ldl \ + $(LIBADD_DL) \ $(SSSD_LIBS) \ $(CARES_LIBS) \ $(CHECK_LIBS) \ diff --git a/configure.ac b/configure.ac index 511e8d6c8afbfb0cbf5aca076b460aa4c881e252..39f6a31977aceb110d7366a0540b0d1322ce3281 100644 --- a/configure.ac +++ b/configure.ac @@ -20,6 +20,7 @@ m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) AC_DISABLE_STATIC AC_PROG_INSTALL AC_PROG_LIBTOOL +LT_LIB_DLLOAD AC_CONFIG_MACRO_DIR([m4]) AM_GNU_GETTEXT([external]) AM_GNU_GETTEXT_VERSION([0.14]) -- 1.8.3.1
>From ece3dc2888af0604ee85e9b325c852fc83b5ac1e Mon Sep 17 00:00:00 2001 From: Lukas Slebodnik <[email protected]> Date: Sat, 31 Aug 2013 08:50:47 +0200 Subject: [PATCH 5/8] AUTOMAKE: Use portable way to link with gettext Function gettext needn't be included in libc, it can be part of another library. Autotools macro AM_GNU_GETTEXT generate makefile variables (LIBINTL, LTLIBINTL), which contain necessary linker flags. checking for GNU gettext in libc... no checking for iconv... yes checking for GNU gettext in libintl... yes checking whether to use NLS... yes checking where the gettext function comes from... external libintl --- Makefile.am | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 5225fe2c5895024fe4489096594c9c88eb859b5e..5c5d2af17dd1a450c35c62b9bba8436054ca4858 100644 --- a/Makefile.am +++ b/Makefile.am @@ -357,6 +357,7 @@ PYTHON_BINDINGS_LIBS = \ $(TDB_LIBS) TOOLS_LIBS = \ + $(LTLIBINTL) \ $(TALLOC_LIBS) \ $(TEVENT_LIBS) \ $(POPT_LIBS) \ @@ -507,8 +508,10 @@ if BUILD_SUDO SSSD_DOCS += libsss_sudo_doc endif +CLIENT_LIBS = $(LTLIBINTL) + if HAVE_PTHREAD -CLIENT_LIBS = -lpthread +CLIENT_LIBS += -lpthread endif ##################### -- 1.8.3.1
>From 62235f2c3cc51fde63c7476a7c61e3d801ed4fe5 Mon Sep 17 00:00:00 2001 From: Lukas Slebodnik <[email protected]> Date: Sat, 31 Aug 2013 11:15:03 +0200 Subject: [PATCH 6/8] AUTOTOOLS: Add directories for searching ldap headers and libs --- src/external/ldap.m4 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/external/ldap.m4 b/src/external/ldap.m4 index 8899df9d7c73dae25b97347022651d768986333e..3a99ddfcc7e7ebee94272d382e2876ec8649770a 100644 --- a/src/external/ldap.m4 +++ b/src/external/ldap.m4 @@ -9,14 +9,14 @@ dnl --------------------------------------------------------------------------- dnl - Check for Mozilla LDAP or OpenLDAP SDK dnl --------------------------------------------------------------------------- -for p in /usr/include/openldap24; do +for p in /usr/include/openldap24 /usr/local/include; do if test -f "${p}/ldap.h"; then OPENLDAP_CFLAGS="${OPENLDAP_CFLAGS} -I${p}" break; fi done -for p in /usr/lib64/openldap24 /usr/lib/openldap24; do +for p in /usr/lib64/openldap24 /usr/lib/openldap24 /usr/local/lib ; do if test -f "${p}/libldap.so"; then OPENLDAP_LIBS="${OPENLDAP_LIBS} -L${p}" break; -- 1.8.3.1
>From c5c2fb13c30f5d0fe3c364911d3d910e8b95f0b3 Mon Sep 17 00:00:00 2001 From: Lukas Slebodnik <[email protected]> Date: Sat, 31 Aug 2013 15:32:39 +0200 Subject: [PATCH 7/8] AUTOTOOLS: Refactor unicode library detection If $libdir is not in default library path libunistring cannot be found. (pkg-config can not be used in this case). This patch helps to search libunistring in "$libdir" directory. In refactoring part, indentation was updated to be more readable and some duplicated parts were removed. --- configure.ac | 15 +++++++-------- src/build_macros.m4 | 14 ++++++++++++++ src/external/libunistring.m4 | 31 ++++++++++++++++++++++++------- 3 files changed, 45 insertions(+), 15 deletions(-) diff --git a/configure.ac b/configure.ac index 39f6a31977aceb110d7366a0540b0d1322ce3281..cdf46d4c71aea8619045e055709e2d62ffb55b7a 100644 --- a/configure.ac +++ b/configure.ac @@ -157,16 +157,15 @@ m4_include([src/external/libndr_nbt.m4]) WITH_UNICODE_LIB if test x$unicode_lib = xlibunistring; then - m4_include([src/external/libunistring.m4]) - AC_DEFINE_UNQUOTED(HAVE_LIBUNISTRING, 1, [Using libunistring for unicode]) - UNICODE_LIBS=-lunistring - AC_SUBST(UNICODE_LIBS) + m4_include([src/external/libunistring.m4]) + AC_DEFINE_UNQUOTED(HAVE_LIBUNISTRING, 1, [Using libunistring for unicode]) + UNICODE_LIBS=$UNISTRING_LIBS else - m4_include([src/external/glib.m4]) - AC_DEFINE_UNQUOTED(HAVE_GLIB2, 1, [Using libunistring for unicode]) - UNICODE_LIBS=$GLIB2_LIBS - AC_SUBST(UNICODE_LIBS) + m4_include([src/external/glib.m4]) + AC_DEFINE_UNQUOTED(HAVE_GLIB2, 1, [Using glib2 for unicode]) + UNICODE_LIBS=$GLIB2_LIBS fi +AC_SUBST(UNICODE_LIBS) WITH_LIBNL diff --git a/src/build_macros.m4 b/src/build_macros.m4 index 8cd2d3cdeb1294d241852d11cde337e795948884..92d7c65d1a073416b8f1c2ef43a7a827feae6629 100644 --- a/src/build_macros.m4 +++ b/src/build_macros.m4 @@ -34,3 +34,17 @@ $3 ])dnl fi[]dnl ])]) + +dnl SSS_AC_EXPAND_LIB_DIR() prepare variable sss_extra_libdir, +dnl variable will contain expanded version of string "$libdir" +dnl therefore this variable can be safely added to LDFLAGS as +dnl "-L$sss_extra_libdir ". +AC_DEFUN([SSS_AC_EXPAND_LIB_DIR], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + dnl By default, look in $includedir and $libdir. + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_libdir=\"$libdir\" + ]) + sss_extra_libdir="$additional_libdir" +]) diff --git a/src/external/libunistring.m4 b/src/external/libunistring.m4 index 18ea3e62a727032a86d248318b5a2a19011ee8ac..bbc92b332632e961bf38eb5d1ce5de214a8a709a 100644 --- a/src/external/libunistring.m4 +++ b/src/external/libunistring.m4 @@ -1,14 +1,31 @@ -AC_CHECK_HEADERS(unistr.h, - [AC_CHECK_LIB([unistring], [u8_strlen], [ UNISTRING_LIBS="-lunistring" ], [AC_MSG_ERROR([No usable libunistring library found])])], +SSS_AC_EXPAND_LIB_DIR() + +AC_CHECK_HEADERS([unistr.h], + [AC_CHECK_LIB([unistring], + [u8_strlen], + [UNISTRING_LIBS="-lunistring"], + [AC_MSG_ERROR([No usable libunistring library found])], + [-L$sss_extra_libdir])], [AC_MSG_ERROR([libunistring header files are not installed])] ) -AC_CHECK_HEADERS(unicase.h, - [AC_CHECK_LIB([unistring], [u8_casecmp], [ UNISTRING_LIBS="-lunistring" ], [AC_MSG_ERROR([No usable libunistring library found])])], +AC_CHECK_HEADERS([unicase.h], + [AC_CHECK_LIB([unistring], + [u8_casecmp], + [UNISTRING_LIBS="-lunistring"], + [AC_MSG_ERROR([No usable libunistring library found])], + [-L$sss_extra_libdir])], [AC_MSG_ERROR([libunistring header files are not installed])] ) -AC_CHECK_HEADERS(unistr.h, - [AC_CHECK_LIB([unistring], [u8_check], [ UNISTRING_LIBS="-lunistring" ], [AC_MSG_ERROR([No usable libunistring library found])])], +AC_CHECK_HEADERS([unistr.h], + [AC_CHECK_LIB([unistring], + [u8_check], + [UNISTRING_LIBS="-lunistring"], + [AC_MSG_ERROR([No usable libunistring library found])], + [-L$sss_extra_libdir])], [AC_MSG_ERROR([libunistring header files are not installed])] -) \ No newline at end of file +) + + +UNISTRING_LIBS="-L$sss_extra_libdir $UNISTRING_LIBS " -- 1.8.3.1
>From fd52f117ff2890046de786c27875c7c336087169 Mon Sep 17 00:00:00 2001 From: Lukas Slebodnik <[email protected]> Date: Sat, 31 Aug 2013 12:17:38 +0200 Subject: [PATCH 8/8] AUTOTOOLS: Use pkg-config to detect libraries. We used pkg-config only as a fallback if header files was not found, but detection of library failed in case of available header file and linking problem (missing -Ldir). This patch prefers pkg-config. --- src/external/libcares.m4 | 19 +++++++++++++------ src/external/libpcre.m4 | 14 +++++++++++--- src/external/libpopt.m4 | 14 +++++++++++--- src/external/libtalloc.m4 | 15 ++++++++++++--- src/external/libtdb.m4 | 14 +++++++++++--- src/external/libtevent.m4 | 21 ++++++++++++--------- 6 files changed, 70 insertions(+), 27 deletions(-) diff --git a/src/external/libcares.m4 b/src/external/libcares.m4 index 5b8a3587537a552eec97377cc808afbbebcde860..e2a56f157844a0767a2a51a02f39792916b51f4e 100644 --- a/src/external/libcares.m4 +++ b/src/external/libcares.m4 @@ -2,9 +2,17 @@ AC_SUBST(CARES_OBJ) AC_SUBST(CARES_LIBS) AC_SUBST(CARES_CFLAGS) -AC_CHECK_HEADERS(ares.h, - [AC_CHECK_LIB([cares], [ares_init], [ CARES_LIBS="-lcares" ], [AC_MSG_ERROR([No usable c-ares library found])])], - [AC_MSG_ERROR([c-ares header files are not installed])] +PKG_CHECK_MODULES([CARES], [libcares], [found_libcares=yes], [found_libcares=no]) + +SSS_AC_EXPAND_LIB_DIR() +AS_IF([test x"$found_libcares" != xyes], + [AC_CHECK_HEADERS([ares.h], + [AC_CHECK_LIB([cares], + [ares_init], + [CARES_LIBS="-L$sss_extra_libdir -lcares"], + [AC_MSG_ERROR([No usable c-ares library found])], + [-L$sss_extra_libdir])], + [AC_MSG_ERROR([c-ares header files are not installed])])] ) dnl Check if this particular version of c-ares supports the generic ares_free_data function @@ -12,9 +20,8 @@ AC_CHECK_LIB([cares], [ares_free_data], [AC_DEFINE([HAVE_ARES_DATA], 1, [Does c-ares have ares_free_data()?]) ], - [ - ares_data=1 - ] + [ares_data=1], + [$CARES_LIBS] ) AM_CONDITIONAL(BUILD_ARES_DATA, test x$ares_data = x1) diff --git a/src/external/libpcre.m4 b/src/external/libpcre.m4 index 5917c8cfdc4e7fa76657a727eca30d067b4affcd..8df86090486015e931828177054ea99d3cd536f3 100644 --- a/src/external/libpcre.m4 +++ b/src/external/libpcre.m4 @@ -3,7 +3,7 @@ AC_SUBST(PCRE_OBJ) AC_SUBST(PCRE_LIBS) AC_SUBST(PCRE_CFLAGS) -PKG_CHECK_MODULES(PCRE, libpcre) +PKG_CHECK_MODULES([PCRE], [libpcre], [found_libpcre=yes], [found_libpcre=no]) PKG_CHECK_EXISTS(libpcre >= 7, [AC_MSG_NOTICE([PCRE version is 7 or higher])], [AC_MSG_NOTICE([PCRE version is below 7]) @@ -11,5 +11,13 @@ PKG_CHECK_EXISTS(libpcre >= 7, 1, [Define if libpcre version is less than 7])]) -AC_CHECK_HEADERS(pcre.h) -AC_CHECK_LIB(pcre, pcre_compile, [ PCRE_LIBS="-lpcre" ], [AC_MSG_ERROR([PCRE is required])]) +SSS_AC_EXPAND_LIB_DIR() +AS_IF([test x"$found_libpcre" != xyes], + [AC_CHECK_HEADERS([pcre.h], + [AC_CHECK_LIB([pcre], + [pcre_compile], + [PCRE_LIBS="-L$sss_extra_libdir -lpcre"], + [AC_MSG_ERROR([No usable PCRE library found])], + [-L$sss_extra_libdir])], + [AC_MSG_ERROR([pcre header files are not installed])])] +) diff --git a/src/external/libpopt.m4 b/src/external/libpopt.m4 index e59b2610e8fae007e2fd3b92e8b6270385957f1b..a3681ead6319c0bb4ec199585fc6ca44f0a96f1d 100644 --- a/src/external/libpopt.m4 +++ b/src/external/libpopt.m4 @@ -3,7 +3,15 @@ AC_SUBST(POPT_OBJ) AC_SUBST(POPT_LIBS) AC_SUBST(POPT_CFLAGS) -AC_CHECK_HEADERS([popt.h], - [AC_CHECK_LIB(popt, poptGetContext, [ POPT_LIBS="-lpopt" ], [AC_MSG_ERROR([POPT must support poptGetContext])])], - [AC_MSG_ERROR([POPT development libraries not installed])] +PKG_CHECK_MODULES([POPT], [popt], [found_popt=yes], [found_popt=no]) + +SSS_AC_EXPAND_LIB_DIR() +AS_IF([test x"$found_popt" != xyes], + [AC_CHECK_HEADERS([popt.h], + [AC_CHECK_LIB([popt], + [poptGetContext], + [POPT_LIBS="-L$sss_extra_libdir -lpopt"], + [AC_MSG_ERROR([POPT library must support poptGetContext])], + [-L$sss_extra_libdir])], + [AC_MSG_ERROR([POPT header files are not installed])])] ) diff --git a/src/external/libtalloc.m4 b/src/external/libtalloc.m4 index a4c5b8a9d9e506af88f8e8fad601ef1459793825..a26cb88537ffe169151697d0068f26bdd2096eed 100644 --- a/src/external/libtalloc.m4 +++ b/src/external/libtalloc.m4 @@ -2,6 +2,15 @@ AC_SUBST(TALLOC_OBJ) AC_SUBST(TALLOC_CFLAGS) AC_SUBST(TALLOC_LIBS) -AC_CHECK_HEADER(talloc.h, - [AC_CHECK_LIB(talloc, talloc_init, [TALLOC_LIBS="-ltalloc"]) ], - [PKG_CHECK_MODULES(TALLOC, talloc)]) +PKG_CHECK_MODULES([TALLOC], [talloc], [found_talloc=yes], [found_talloc=no]) + +SSS_AC_EXPAND_LIB_DIR() +AS_IF([test x"$found_talloc" != xyes], + [AC_CHECK_HEADER([talloc.h], + [AC_CHECK_LIB([talloc], + [talloc_init], + [TALLOC_LIBS="-L$sss_extra_libdir -ltalloc"], + [AC_MSG_ERROR([libtalloc missing talloc_init])], + [-L$sss_extra_libdir])], + [AC_MSG_ERROR([libtalloc header files are not installed])])] +) diff --git a/src/external/libtdb.m4 b/src/external/libtdb.m4 index 196bc5ccb5361cb2d6ebc70dc231a5ef2d673c1c..04ac71d6ba3f1b45b0dd2b3e3c65b5beed049df9 100644 --- a/src/external/libtdb.m4 +++ b/src/external/libtdb.m4 @@ -2,7 +2,15 @@ AC_SUBST(TDB_OBJ) AC_SUBST(TDB_CFLAGS) AC_SUBST(TDB_LIBS) -AC_CHECK_HEADERS([tdb.h], - [AC_CHECK_LIB(tdb, tdb_repack, [TDB_LIBS="-ltdb"], [AC_MSG_ERROR([TDB must support tdb_repack])]) ], - [PKG_CHECK_MODULES(TDB, tdb >= 1.1.3)] +PKG_CHECK_MODULES([TDB], [tdb >= 1.1.3], [found_tdb=yes], [found_tdb=no]) + +SSS_AC_EXPAND_LIB_DIR() +AS_IF([test x"$found_tdb" != xyes], + [AC_CHECK_HEADERS([tdb.h], + [AC_CHECK_LIB([tdb], + [tdb_repack], + [TDB_LIBS="-L$sss_extra_libdir -ltdb"], + [AC_MSG_ERROR([library TDB must support tdb_repack])], + [-L$sss_extra_libdir])], + [AC_MSG_ERROR([tdb header files are not installed])])] ) diff --git a/src/external/libtevent.m4 b/src/external/libtevent.m4 index f19f27bf2e70e71065a7d4d96b4b2714869bd039..d40b9d423d17cfa68a68f9bd452445efa6a58a72 100644 --- a/src/external/libtevent.m4 +++ b/src/external/libtevent.m4 @@ -2,12 +2,15 @@ AC_SUBST(TEVENT_OBJ) AC_SUBST(TEVENT_CFLAGS) AC_SUBST(TEVENT_LIBS) -AC_CHECK_HEADER(tevent.h, - [AC_CHECK_LIB( - tevent, - tevent_context_init, - [TEVENT_LIBS="-ltevent -ltalloc"], - [AC_MSG_ERROR([libtevent missing tevent_context_init])], - [-ltalloc]) ], - [PKG_CHECK_MODULES(TEVENT, tevent)], - ) +PKG_CHECK_MODULES([TEVENT], [tevent], [found_tevent=yes], [found_tevent=no]) + +SSS_AC_EXPAND_LIB_DIR() +AS_IF([test x"$found_tevent" != xyes], + [AC_CHECK_HEADER([tevent.h], + [AC_CHECK_LIB([tevent], + [tevent_context_init], + [TEVENT_LIBS="-L$sss_extra_libdir -ltevent -ltalloc"], + [AC_MSG_ERROR([libtevent missing tevent_context_init])], + [-L$sss_extra_libdir -ltalloc])], + [AC_MSG_ERROR([tevent header files are not installed])])] +) -- 1.8.3.1
_______________________________________________ sssd-devel mailing list [email protected] https://lists.fedorahosted.org/mailman/listinfo/sssd-devel
