Hi everyone,

Here is a bunch of various build fixes and improvements mainly concerned with
libini_config detection.

Nick
>From d1bd23332bb504b3780fb4ba6ad1a92e4d2ab3f5 Mon Sep 17 00:00:00 2001
From: Nikolai Kondrashov <[email protected]>
Date: Mon, 28 Jul 2014 17:02:10 +0300
Subject: [PATCH 1/6] build: Remove substitution of *_OBJ variables

Remove substitution of *_OBJ variables (e.g. POPT_OBJ or PCRE_OBJ) from
configure scripts as they don't seem to be set or used by anything.
---
 src/external/libaugeas.m4     | 1 -
 src/external/libcares.m4      | 1 -
 src/external/libcollection.m4 | 1 -
 src/external/libdhash.m4      | 1 -
 src/external/libini_config.m4 | 1 -
 src/external/libldb.m4        | 1 -
 src/external/libpcre.m4       | 2 --
 src/external/libpopt.m4       | 2 --
 src/external/libtalloc.m4     | 1 -
 src/external/libtdb.m4        | 1 -
 src/external/libtevent.m4     | 1 -
 src/external/sasl.m4          | 2 --
 12 files changed, 15 deletions(-)

diff --git a/src/external/libaugeas.m4 b/src/external/libaugeas.m4
index 13f694c..29a7935 100644
--- a/src/external/libaugeas.m4
+++ b/src/external/libaugeas.m4
@@ -1,4 +1,3 @@
-AC_SUBST(AUGEAS_OBJ)
 AC_SUBST(AUGEAS_CFLAGS)
 AC_SUBST(AUGEAS_LIBS)
 
diff --git a/src/external/libcares.m4 b/src/external/libcares.m4
index e2a56f1..b235ee2 100644
--- a/src/external/libcares.m4
+++ b/src/external/libcares.m4
@@ -1,4 +1,3 @@
-AC_SUBST(CARES_OBJ)
 AC_SUBST(CARES_LIBS)
 AC_SUBST(CARES_CFLAGS)
 
diff --git a/src/external/libcollection.m4 b/src/external/libcollection.m4
index ae49edf..0f737c1 100644
--- a/src/external/libcollection.m4
+++ b/src/external/libcollection.m4
@@ -1,4 +1,3 @@
-AC_SUBST(COLLECTION_OBJ)
 AC_SUBST(COLLECTION_CFLAGS)
 AC_SUBST(COLLECTION_LIBS)
 
diff --git a/src/external/libdhash.m4 b/src/external/libdhash.m4
index f0184d1..2ca5136 100644
--- a/src/external/libdhash.m4
+++ b/src/external/libdhash.m4
@@ -1,4 +1,3 @@
-AC_SUBST(DHASH_OBJ)
 AC_SUBST(DHASH_CFLAGS)
 AC_SUBST(DHASH_LIBS)
 
diff --git a/src/external/libini_config.m4 b/src/external/libini_config.m4
index 93a4bd9..b9fefcc 100644
--- a/src/external/libini_config.m4
+++ b/src/external/libini_config.m4
@@ -15,6 +15,5 @@ PKG_CHECK_MODULES(INI_CONFIG, [
     ]
 )
 
-AC_SUBST(INI_CONFIG_OBJ)
 AC_SUBST(INI_CONFIG_CFLAGS)
 AC_SUBST(INI_CONFIG_LIBS)
diff --git a/src/external/libldb.m4 b/src/external/libldb.m4
index 3e26b15..c400add 100644
--- a/src/external/libldb.m4
+++ b/src/external/libldb.m4
@@ -1,4 +1,3 @@
-AC_SUBST(LDB_OBJ)
 AC_SUBST(LDB_CFLAGS)
 AC_SUBST(LDB_LIBS)
 
diff --git a/src/external/libpcre.m4 b/src/external/libpcre.m4
index 8df8609..2326cbf 100644
--- a/src/external/libpcre.m4
+++ b/src/external/libpcre.m4
@@ -1,5 +1,3 @@
-PCRE_OBJ=""
-AC_SUBST(PCRE_OBJ)
 AC_SUBST(PCRE_LIBS)
 AC_SUBST(PCRE_CFLAGS)
 
diff --git a/src/external/libpopt.m4 b/src/external/libpopt.m4
index a3681ea..e6a3e71 100644
--- a/src/external/libpopt.m4
+++ b/src/external/libpopt.m4
@@ -1,5 +1,3 @@
-POPT_OBJ=""
-AC_SUBST(POPT_OBJ)
 AC_SUBST(POPT_LIBS)
 AC_SUBST(POPT_CFLAGS)
 
diff --git a/src/external/libtalloc.m4 b/src/external/libtalloc.m4
index a26cb88..06a1b29 100644
--- a/src/external/libtalloc.m4
+++ b/src/external/libtalloc.m4
@@ -1,4 +1,3 @@
-AC_SUBST(TALLOC_OBJ)
 AC_SUBST(TALLOC_CFLAGS)
 AC_SUBST(TALLOC_LIBS)
 
diff --git a/src/external/libtdb.m4 b/src/external/libtdb.m4
index 04ac71d..f740d05 100644
--- a/src/external/libtdb.m4
+++ b/src/external/libtdb.m4
@@ -1,4 +1,3 @@
-AC_SUBST(TDB_OBJ)
 AC_SUBST(TDB_CFLAGS)
 AC_SUBST(TDB_LIBS)
 
diff --git a/src/external/libtevent.m4 b/src/external/libtevent.m4
index d40b9d4..d3df1d0 100644
--- a/src/external/libtevent.m4
+++ b/src/external/libtevent.m4
@@ -1,4 +1,3 @@
-AC_SUBST(TEVENT_OBJ)
 AC_SUBST(TEVENT_CFLAGS)
 AC_SUBST(TEVENT_LIBS)
 
diff --git a/src/external/sasl.m4 b/src/external/sasl.m4
index 5980624..791a835 100644
--- a/src/external/sasl.m4
+++ b/src/external/sasl.m4
@@ -1,5 +1,3 @@
-SASL_OBJ=""
-AC_SUBST(SASL_OBJ)
 AC_SUBST(SASL_LIBS)
 AC_SUBST(SASL_CFLAGS)
 
-- 
2.0.1

>From 0050f897f4c33fc277f22831dddf40bc820ea499 Mon Sep 17 00:00:00 2001
From: Nikolai Kondrashov <[email protected]>
Date: Fri, 25 Jul 2014 16:01:02 +0300
Subject: [PATCH 2/6] build: Mention required libini_config version

Specify minimum required libini_config version in a message in samba.m4
explaining the need for the library.
---
 src/external/samba.m4 | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/external/samba.m4 b/src/external/samba.m4
index 5cd5f09..62a9fa3 100644
--- a/src/external/samba.m4
+++ b/src/external/samba.m4
@@ -21,11 +21,11 @@ with argument --without-samba
     ]]))
 
     PKG_CHECK_MODULES(INI_CONFIG, ini_config >= 1.1.0, ,
-        AC_MSG_ERROR([[Please install libini_config development libraries.
-libini_config libraries are necessary for building ipa provider, as well
-as for building gpo-based access control in ad provider.
-If you do not want to build these providers it is possible to build SSSD
-without them. In this case, you will need to execute configure script
-with argument --without-samba
+        AC_MSG_ERROR([[Please install libini_config development libraries
+v1.1.0, or newer. libini_config libraries are necessary for building ipa
+provider, as well as for building gpo-based access control in ad provider. If
+you do not want to build these providers it is possible to build SSSD without
+them. In this case, you will need to execute configure script with argument
+--without-samba
     ]]))
 fi
-- 
2.0.1

>From b65fc04e19a8ed212485e2e812579ddfaa261085 Mon Sep 17 00:00:00 2001
From: Nikolai Kondrashov <[email protected]>
Date: Mon, 28 Jul 2014 12:57:32 +0300
Subject: [PATCH 3/6] build: Distinguish libini_config version checks

Use separate shell variable name prefixes for checks of separate
libini_config versions, as repeated invocations of PKG_CHECK_MODULES
with the same prefix are not generally supposed to have an effect.

Otherwise only the checks before and including the first one defining
both *_CFLAGS and *_LIBS variables will be done and all that follow will
assume success. This happens on RHEL6.5, where both "pkg-config
--cflags" and "pkg-config --libs" for ini_config produce non-empty
output and successful check for v0.6.1 results in incorrectly successful
check for v1.1.0.

Resolves:
https://fedorahosted.org/sssd/ticket/2388
---
 src/external/libini_config.m4 | 8 ++++++--
 src/external/samba.m4         | 2 +-
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/external/libini_config.m4 b/src/external/libini_config.m4
index b9fefcc..13be9c2 100644
--- a/src/external/libini_config.m4
+++ b/src/external/libini_config.m4
@@ -1,12 +1,16 @@
-PKG_CHECK_MODULES(INI_CONFIG, [
+PKG_CHECK_MODULES(INI_CONFIG_V1, [
     ini_config >= 1.0.0], [
 
+        INI_CONFIG_CFLAGS="$INI_CONFIG_V1_CFLAGS"
+        INI_CONFIG_LIBS="$INI_CONFIG_V1_LIBS"
         AC_DEFINE_UNQUOTED(HAVE_LIBINI_CONFIG_V1, 1, [libini_config version greater than 1.0.0])
     ], [
         AC_MSG_WARN([libini_config-devel >= 1.0.0 not available, trying older version])
-        PKG_CHECK_MODULES(INI_CONFIG, [
+        PKG_CHECK_MODULES(INI_CONFIG_V0, [
             ini_config >= 0.6.1], [
 
+                INI_CONFIG_CFLAGS="$INI_CONFIG_V0_CFLAGS"
+                INI_CONFIG_LIBS="$INI_CONFIG_V0_LIBS"
                 AC_DEFINE_UNQUOTED(HAVE_LIBINI_CONFIG_V0, 1, [libini_config version lesser than 1.0.0])
             ], [
                 AC_MSG_ERROR([Please install libini_config-devel])
diff --git a/src/external/samba.m4 b/src/external/samba.m4
index 62a9fa3..e896739 100644
--- a/src/external/samba.m4
+++ b/src/external/samba.m4
@@ -20,7 +20,7 @@ without them. In this case, you will need to execute configure script
 with argument --without-samba
     ]]))
 
-    PKG_CHECK_MODULES(INI_CONFIG, ini_config >= 1.1.0, ,
+    PKG_CHECK_MODULES(INI_CONFIG_V1_1, ini_config >= 1.1.0, ,
         AC_MSG_ERROR([[Please install libini_config development libraries
 v1.1.0, or newer. libini_config libraries are necessary for building ipa
 provider, as well as for building gpo-based access control in ad provider. If
-- 
2.0.1

>From c221453a5acde8a75cbd51a07d9f823751454be9 Mon Sep 17 00:00:00 2001
From: Nikolai Kondrashov <[email protected]>
Date: Fri, 25 Jul 2014 16:41:42 +0300
Subject: [PATCH 4/6] build: Distinguish libnl version checks

Use separate shell variable name prefixes for checks of separate libnl
versions, as repeated invocations of PKG_CHECK_MODULES with the same
prefix are not generally supposed to have an effect.

This prevents bugs similar to https://fedorahosted.org/sssd/ticket/2388
---
 src/external/libnl.m4 | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/external/libnl.m4 b/src/external/libnl.m4
index d468a49..25be3f1 100644
--- a/src/external/libnl.m4
+++ b/src/external/libnl.m4
@@ -35,11 +35,14 @@ AC_DEFUN([AM_CHECK_LIBNL_FCS],
 dnl A macro to check the availability and version of libnetlink
 AC_DEFUN([AM_CHECK_LIBNL1],
 [
-    PKG_CHECK_MODULES(LIBNL, libnl-1 >= 1.1,[
+    PKG_CHECK_MODULES(LIBNL1, libnl-1 >= 1.1,[
 
         HAVE_LIBNL=1
         HAVE_LIBNL1=1
 
+        LIBNL_CFLAGS="$LIBNL1_CFLAGS"
+        LIBNL_LIBS="$LIBNL1_LIBS"
+
         AC_DEFINE_UNQUOTED(HAVE_LIBNL, 1, [Build with libnetlink support])
         AC_DEFINE_UNQUOTED(HAVE_LIBNL1, 1, [Libnetlink version = 1])
 
@@ -61,13 +64,15 @@ dnl A macro to check the availability of libnetlink version 3
 
 AC_DEFUN([AM_CHECK_LIBNL3],
 [
-    PKG_CHECK_MODULES(LIBNL, [
+    PKG_CHECK_MODULES(LIBNL3, [
         libnl-3.0 >= 3.0
         libnl-route-3.0 >= 3.0], [
 
         HAVE_LIBNL=1
         HAVE_LIBNL3=1
 
+        LIBNL_CFLAGS="$LIBNL3_CFLAGS"
+        LIBNL_LIBS="$LIBNL3_LIBS"
 
         AC_DEFINE_UNQUOTED(HAVE_LIBNL, 1, [Build with libnetlink support])
         AC_DEFINE_UNQUOTED(HAVE_LIBNL3, 1, [Libnetlink version = 3])
-- 
2.0.1

>From 964e6a076397bc554efb0a86fa69e8899a23bcaf Mon Sep 17 00:00:00 2001
From: Nikolai Kondrashov <[email protected]>
Date: Mon, 28 Jul 2014 15:11:20 +0300
Subject: [PATCH 5/6] build: Reverse order of libini_config checks

Check for lowest versions of libini_config first, instead of the highest ones
in libini_config.m4. Define HAVE_LIBINI_CONFIG_V* for lower versions when
higher versions are present. Simplify preprocessor branching in sss_ini.c
accordingly.

This prepares libini_config.m4 for addition of a check for one more version of
libini_config.
---
 src/external/libini_config.m4 | 26 +++++++++++++-------------
 src/util/sss_ini.c            | 24 +++++++++++-------------
 2 files changed, 24 insertions(+), 26 deletions(-)

diff --git a/src/external/libini_config.m4 b/src/external/libini_config.m4
index 13be9c2..f8c422f 100644
--- a/src/external/libini_config.m4
+++ b/src/external/libini_config.m4
@@ -1,21 +1,21 @@
-PKG_CHECK_MODULES(INI_CONFIG_V1, [
-    ini_config >= 1.0.0], [
+PKG_CHECK_MODULES(INI_CONFIG_V0, [
+    ini_config >= 0.6.1], [
 
-        INI_CONFIG_CFLAGS="$INI_CONFIG_V1_CFLAGS"
-        INI_CONFIG_LIBS="$INI_CONFIG_V1_LIBS"
-        AC_DEFINE_UNQUOTED(HAVE_LIBINI_CONFIG_V1, 1, [libini_config version greater than 1.0.0])
-    ], [
-        AC_MSG_WARN([libini_config-devel >= 1.0.0 not available, trying older version])
-        PKG_CHECK_MODULES(INI_CONFIG_V0, [
-            ini_config >= 0.6.1], [
+        INI_CONFIG_CFLAGS="$INI_CONFIG_V0_CFLAGS"
+        INI_CONFIG_LIBS="$INI_CONFIG_V0_LIBS"
+        AC_DEFINE_UNQUOTED(HAVE_LIBINI_CONFIG_V0, 1, [libini_config version 0.6.1 or greater])
+        PKG_CHECK_MODULES(INI_CONFIG_V1, [
+            ini_config >= 1.0.0], [
 
-                INI_CONFIG_CFLAGS="$INI_CONFIG_V0_CFLAGS"
-                INI_CONFIG_LIBS="$INI_CONFIG_V0_LIBS"
-                AC_DEFINE_UNQUOTED(HAVE_LIBINI_CONFIG_V0, 1, [libini_config version lesser than 1.0.0])
+                INI_CONFIG_CFLAGS="$INI_CONFIG_V1_CFLAGS"
+                INI_CONFIG_LIBS="$INI_CONFIG_V1_LIBS"
+                AC_DEFINE_UNQUOTED(HAVE_LIBINI_CONFIG_V1, 1, [libini_config version 1.0.0 or greater])
             ], [
-                AC_MSG_ERROR([Please install libini_config-devel])
+                AC_MSG_WARN([libini_config-devel >= 1.0.0 not available, using older version])
             ]
         )
+    ], [
+        AC_MSG_ERROR([Please install libini_config-devel])
     ]
 )
 
diff --git a/src/util/sss_ini.c b/src/util/sss_ini.c
index 63b96f2..526ca31 100644
--- a/src/util/sss_ini.c
+++ b/src/util/sss_ini.c
@@ -34,11 +34,9 @@
 
 #ifdef HAVE_LIBINI_CONFIG_V1
 #include "ini_configobj.h"
-#elif defined(HAVE_LIBINI_CONFIG_V0)
+#else
 #include "collection.h"
 #include "collection_tools.h"
-#else
-#error "Unsupported libini version"
 #endif
 
 #include "ini_config.h"
@@ -61,7 +59,7 @@ struct sss_ini_initdata {
 
 
 
-#elif defined(HAVE_LIBINI_CONFIG_V0)
+#else
 
 struct sss_ini_initdata {
     struct collection_item *error_list;
@@ -99,7 +97,7 @@ void sss_ini_close_file(struct sss_ini_initdata *init_data)
         ini_config_file_destroy(init_data->file);
         init_data->file = NULL;
     }
-#elif defined(HAVE_LIBINI_CONFIG_V0)
+#else
     if (init_data->file != -1) {
         close(init_data->file);
         init_data->file = -1;
@@ -118,7 +116,7 @@ int sss_ini_config_file_open(struct sss_ini_initdata *init_data,
     return ini_config_file_open(config_file,
                                 INI_META_STATS,
                                 &init_data->file);
-#elif defined(HAVE_LIBINI_CONFIG_V0)
+#else
     return check_and_open_readonly(config_file, &init_data->file, 0, 0,
                                    S_IFREG|S_IRUSR, /* f r**------ */
                                    S_IFMT|(ALLPERMS & ~(S_IWUSR|S_IXUSR)));
@@ -140,7 +138,7 @@ int sss_ini_config_access_check(struct sss_ini_initdata *init_data)
                                    0, /* owned by root */
                                    S_IRUSR, /* r**------ */
                                    ALLPERMS & ~(S_IWUSR|S_IXUSR));
-#elif defined(HAVE_LIBINI_CONFIG_V0)
+#else
     return EOK;
 #endif
 }
@@ -157,7 +155,7 @@ int sss_ini_get_stat(struct sss_ini_initdata *init_data)
     if (!init_data->cstat) return EIO;
 
     return EOK;
-#elif defined(HAVE_LIBINI_CONFIG_V0)
+#else
 
     return fstat(init_data->file, &init_data->cstat);
 #endif
@@ -174,7 +172,7 @@ int sss_ini_get_mtime(struct sss_ini_initdata *init_data,
 #ifdef HAVE_LIBINI_CONFIG_V1
     return snprintf(timestr, timestr_len, "%llu",
                     (long long unsigned)init_data->cstat->st_mtime);
-#elif defined(HAVE_LIBINI_CONFIG_V0)
+#else
     return snprintf(timestr, timestr_len, "%llu",
                     (long long unsigned)init_data->cstat.st_mtime);
 #endif
@@ -248,7 +246,7 @@ int sss_ini_get_config(struct sss_ini_initdata *init_data,
 
     return ret;
 
-#elif defined(HAVE_LIBINI_CONFIG_V0)
+#else
 
     /* Read the configuration into a collection */
     ret = config_from_fd("sssd",
@@ -309,7 +307,7 @@ int sss_ini_get_int_config_value(struct sss_ini_initdata *init_data,
 {
 #ifdef HAVE_LIBINI_CONFIG_V1
     return ini_get_int_config_value(init_data->obj, strict, def, error);
-#elif defined(HAVE_LIBINI_CONFIG_V0)
+#else
     return get_int_config_value(init_data->obj, strict, def, error);
 #endif
 }
@@ -326,7 +324,7 @@ void sss_ini_config_destroy(struct sss_ini_initdata *init_data)
         ini_config_destroy(init_data->sssd_config);
         init_data->sssd_config = NULL;
     }
-#elif defined(HAVE_LIBINI_CONFIG_V0)
+#else
     free_ini_config(init_data->sssd_config);
 #endif
 }
@@ -356,7 +354,7 @@ int sss_confdb_create_ldif(TALLOC_CTX *mem_ctx,
     size_t attr_len;
 #ifdef HAVE_LIBINI_CONFIG_V1
     struct value_obj *obj = NULL;
-#elif defined(HAVE_LIBINI_CONFIG_V0)
+#else
     struct collection_item *obj = NULL;
 #endif
 
-- 
2.0.1

>From d597c5d7c6d1e312a8d1adac95f336deb0b1b135 Mon Sep 17 00:00:00 2001
From: Nikolai Kondrashov <[email protected]>
Date: Mon, 28 Jul 2014 15:21:21 +0300
Subject: [PATCH 6/6] build: Move libini_config 1.1.0 check to libini_config.m4

Move the check for libini_config >= 1.1.0 from samba.m4 to
libini_config.m4 to have them all in one place, simplifying maintenance.
Set boolean variables for every detected version and use one of them in
samba.m4 instead.
---
 src/external/libini_config.m4 | 13 +++++++++++++
 src/external/samba.m4         |  5 +++--
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/src/external/libini_config.m4 b/src/external/libini_config.m4
index f8c422f..9e5c69f 100644
--- a/src/external/libini_config.m4
+++ b/src/external/libini_config.m4
@@ -3,13 +3,26 @@ PKG_CHECK_MODULES(INI_CONFIG_V0, [
 
         INI_CONFIG_CFLAGS="$INI_CONFIG_V0_CFLAGS"
         INI_CONFIG_LIBS="$INI_CONFIG_V0_LIBS"
+        HAVE_LIBINI_CONFIG_V0=1
         AC_DEFINE_UNQUOTED(HAVE_LIBINI_CONFIG_V0, 1, [libini_config version 0.6.1 or greater])
         PKG_CHECK_MODULES(INI_CONFIG_V1, [
             ini_config >= 1.0.0], [
 
                 INI_CONFIG_CFLAGS="$INI_CONFIG_V1_CFLAGS"
                 INI_CONFIG_LIBS="$INI_CONFIG_V1_LIBS"
+                HAVE_LIBINI_CONFIG_V1=1
                 AC_DEFINE_UNQUOTED(HAVE_LIBINI_CONFIG_V1, 1, [libini_config version 1.0.0 or greater])
+                PKG_CHECK_MODULES(INI_CONFIG_V1_1, [
+                    ini_config >= 1.1.0], [
+
+                        INI_CONFIG_CFLAGS="$INI_CONFIG_V1_1_CFLAGS"
+                        INI_CONFIG_LIBS="$INI_CONFIG_V1_1_LIBS"
+                        HAVE_LIBINI_CONFIG_V1_1=1
+                        AC_DEFINE_UNQUOTED(HAVE_LIBINI_CONFIG_V1_1, 1, [libini_config version 1.1.0 or greater])
+                    ], [
+                        AC_MSG_WARN([libini_config-devel >= 1.1.0 not available, using older version])
+                    ]
+                )
             ], [
                 AC_MSG_WARN([libini_config-devel >= 1.0.0 not available, using older version])
             ]
diff --git a/src/external/samba.m4 b/src/external/samba.m4
index e896739..10a553b 100644
--- a/src/external/samba.m4
+++ b/src/external/samba.m4
@@ -20,12 +20,13 @@ without them. In this case, you will need to execute configure script
 with argument --without-samba
     ]]))
 
-    PKG_CHECK_MODULES(INI_CONFIG_V1_1, ini_config >= 1.1.0, ,
+    if test x"$HAVE_LIBINI_CONFIG_V1_1" != x1; then
         AC_MSG_ERROR([[Please install libini_config development libraries
 v1.1.0, or newer. libini_config libraries are necessary for building ipa
 provider, as well as for building gpo-based access control in ad provider. If
 you do not want to build these providers it is possible to build SSSD without
 them. In this case, you will need to execute configure script with argument
 --without-samba
-    ]]))
+        ]])
+    fi
 fi
-- 
2.0.1

_______________________________________________
sssd-devel mailing list
[email protected]
https://lists.fedorahosted.org/mailman/listinfo/sssd-devel

Reply via email to