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
