URL: https://github.com/freeipa/freeipa/pull/364 Author: tiran Title: #364: Client-only builds with --disable-server Action: synchronized
To pull the PR as Git branch: git remote add ghfreeipa https://github.com/freeipa/freeipa git fetch ghfreeipa pull/364/head:pr364 git checkout pr364
From 126df80c9edbf4d7a3232a2d7f0ade53e7021aa6 Mon Sep 17 00:00:00 2001 From: Christian Heimes <chei...@redhat.com> Date: Tue, 3 Jan 2017 14:32:05 +0100 Subject: [PATCH 1/2] Client-only builds with --disable-server https://fedorahosted.org/freeipa/ticket/6517 --- Makefile.am | 17 ++++++- configure.ac | 148 +++++++++++++---------------------------------------------- server.m4 | 119 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 168 insertions(+), 116 deletions(-) create mode 100644 server.m4 diff --git a/Makefile.am b/Makefile.am index 9bfc899..c2b205b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,7 +1,22 @@ ACLOCAL_AMFLAGS = -I m4 +if ENABLE_SERVER + SERVER_SUBDIRS = daemons init install ipaserver +else + SERVER_SUBDIRS = +endif IPACLIENT_SUBDIRS = ipaclient ipalib ipapython -SUBDIRS = asn1 util client contrib daemons init install $(IPACLIENT_SUBDIRS) ipaplatform ipaserver ipatests po +SUBDIRS = + asn1 \ + client \ + contrib \ + $(IPACLIENT_SUBDIRS) \ + ipaplatform \ + ipatests \ + po \ + $(SERVER_SUBDIRS) \ + util + MOSTLYCLEANFILES = ipasetup.pyc ipasetup.pyo \ ignore_import_errors.pyc ignore_import_errors.pyo \ diff --git a/configure.ac b/configure.ac index 8fdc731..faf6954 100644 --- a/configure.ac +++ b/configure.ac @@ -24,6 +24,17 @@ LT_INIT AC_HEADER_STDC +PKG_PROG_PKG_CONFIG + +AC_ARG_ENABLE([server], +[ --disable-server Disable server support], +[case "${enableval}" in + yes) enable_server=true ;; + no) enable_server=false ;; + *) AC_MSG_ERROR([bad value ${enableval} for --disable-server]) ;; +esac],[enable_server=true]) +AM_CONDITIONAL([ENABLE_SERVER], [test x$enable_server = xtrue]) + AM_CONDITIONAL([HAVE_GCC], [test "$ac_cv_prog_gcc" = yes]) dnl --------------------------------------------------------------------------- @@ -33,37 +44,10 @@ PKG_CHECK_MODULES([NSPR], [nspr]) PKG_CHECK_MODULES([NSS], [nss]) dnl --------------------------------------------------------------------------- -dnl - Check for DS slapi plugin -dnl --------------------------------------------------------------------------- - -# Need to hack CPPFLAGS to be able to correctly detetct slapi-plugin.h -SAVE_CPPFLAGS=$CPPFLAGS -CPPFLAGS=$NSPR_CFLAGS -AC_CHECK_HEADER(dirsrv/slapi-plugin.h) -if test "x$ac_cv_header_dirsrv_slapi-plugin_h" = "xno" ; then - AC_MSG_ERROR([Required 389-ds header not available (389-ds-base-devel)]) -fi -AC_CHECK_HEADER(dirsrv/repl-session-plugin.h) -if test "x$ac_cv_header_dirsrv_repl_session_plugin_h" = "xno" ; then - AC_MSG_ERROR([Required 389-ds header not available (389-ds-base-devel)]) -fi -CPPFLAGS=$SAVE_CPPFLAGS - -if test "x$ac_cv_header_dirsrv_slapi_plugin_h" = "xno" ; then - AC_MSG_ERROR([Required DS slapi plugin header not available (fedora-ds-base-devel)]) -fi - -dnl --------------------------------------------------------------------------- dnl - Check for KRB5 dnl --------------------------------------------------------------------------- PKG_CHECK_MODULES([KRB5], [krb5]) -AC_CHECK_HEADER(krad.h, [], [AC_MSG_ERROR([krad.h not found])]) -AC_CHECK_LIB(krad, main, [], [AC_MSG_ERROR([libkrad not found])]) -KRAD_LIBS="-lkrad" -krb5rundir="${localstatedir}/run/krb5kdc" -AC_SUBST(KRAD_LIBS) -AC_SUBST(krb5rundir) dnl --------------------------------------------------------------------------- dnl - Check for OpenLDAP SDK @@ -101,69 +85,6 @@ if test "x$PYTHON" = "x" ; then fi dnl --------------------------------------------------------------------------- -dnl Check for ndr_krb5pac and other samba libraries -dnl --------------------------------------------------------------------------- - -PKG_PROG_PKG_CONFIG() -PKG_CHECK_MODULES([TALLOC], [talloc]) -PKG_CHECK_MODULES([TEVENT], [tevent]) -PKG_CHECK_MODULES([NDRPAC], [ndr_krb5pac]) -PKG_CHECK_MODULES([NDRNBT], [ndr_nbt]) -PKG_CHECK_MODULES([NDR], [ndr]) -PKG_CHECK_MODULES([SAMBAUTIL], [samba-util]) -SAMBA40EXTRA_LIBPATH="-L`$PKG_CONFIG --variable=libdir samba-util`/samba -Wl,-rpath=`$PKG_CONFIG --variable=libdir samba-util`/samba" -AC_SUBST(SAMBA40EXTRA_LIBPATH) - -bck_cflags="$CFLAGS" -CFLAGS="$NDRPAC_CFLAGS" -AC_CHECK_MEMBER( - [struct PAC_DOMAIN_GROUP_MEMBERSHIP.domain_sid], - [AC_DEFINE([HAVE_STRUCT_PAC_DOMAIN_GROUP_MEMBERSHIP], [1], - [struct PAC_DOMAIN_GROUP_MEMBERSHIP is available.])], - [AC_MSG_NOTICE([struct PAC_DOMAIN_GROUP_MEMBERSHIP is not available])], - [[#include <ndr.h> - #include <gen_ndr/krb5pac.h>]]) - -CFLAGS="$bck_cflags" - -LIBPDB_NAME="" -AC_CHECK_LIB([samba-passdb], - [make_pdb_method], - [LIBPDB_NAME="samba-passdb"; HAVE_LIBPDB=1], - [LIBPDB_NAME="pdb"], - [$SAMBA40EXTRA_LIBPATH]) - -if test "x$LIB_PDB_NAME" = "xpdb" ; then - AC_CHECK_LIB([$LIBPDB_NAME], - [make_pdb_method], - [HAVE_LIBPDB=1], - [AC_MSG_ERROR([Neither libpdb nor libsamba-passdb does have make_pdb_method])], - [$SAMBA40EXTRA_LIBPATH]) -fi - -AC_SUBST(LIBPDB_NAME) - -AC_CHECK_LIB([$LIBPDB_NAME],[pdb_enum_upn_suffixes], - [AC_DEFINE([HAVE_PDB_ENUM_UPN_SUFFIXES], [1], [Ability to enumerate UPN suffixes])], - [AC_MSG_WARN([libpdb does not have pdb_enum_upn_suffixes, no support for realm domains in ipasam])], - [$SAMBA40EXTRA_LIBPATH]) - -dnl --------------------------------------------------------------------------- -dnl Check for libunistring -dnl --------------------------------------------------------------------------- -AC_CHECK_HEADERS([unicase.h],,AC_MSG_ERROR([Could not find unicase.h])) -AC_CHECK_LIB([unistring], - [ulc_casecmp], - [UNISTRING_LIBS="-lunistring"], - [AC_MSG_ERROR([libunistring does not have ulc_casecmp])]) -AC_SUBST(UNISTRING_LIBS) - -dnl --------------------------------------------------------------------------- -dnl Check for libverto -dnl --------------------------------------------------------------------------- -PKG_CHECK_MODULES([LIBVERTO], [libverto]) - -dnl --------------------------------------------------------------------------- dnl - Check for cmocka unit test framework http://cmocka.cryptomilk.org/ dnl --------------------------------------------------------------------------- PKG_CHECK_EXISTS(cmocka, @@ -247,24 +168,6 @@ dnl --------------------------------------------------------------------------- PKG_CHECK_MODULES([INI], [ini_config >= 1.2.0]) dnl --------------------------------------------------------------------------- -dnl - Check for systemd directories -dnl --------------------------------------------------------------------------- -PKG_CHECK_EXISTS([systemd], [], [AC_MSG_ERROR([systemd not found])]) -AC_ARG_WITH([systemdsystemunitdir], - AS_HELP_STRING([--with-systemdsystemunitdir=DIR], - [Directory for systemd service files]), - [systemdsystemunitdir=$with_systemdsystemunitdir], - [systemdsystemunitdir=$($PKG_CONFIG --define-variable=prefix='${prefix}' --variable=systemdsystemunitdir systemd)]) -AC_SUBST([systemdsystemunitdir]) - -AC_ARG_WITH([systemdtmpfilesdir], - AS_HELP_STRING([--with-systemdtmpfilesdir=DIR], - [Directory for systemd-tmpfiles configuration files]), - [systemdtmpfilesdir=$with_systemdtmpfilesdir], - [systemdtmpfilesdir=$($PKG_CONFIG --define-variable=prefix='${prefix}' --variable=tmpfilesdir systemd)]) -AC_SUBST([systemdtmpfilesdir]) - -dnl --------------------------------------------------------------------------- dnl - Get /etc/sysconfig directory path dnl --------------------------------------------------------------------------- AC_ARG_WITH([sysconfenvdir], @@ -275,6 +178,14 @@ AC_ARG_WITH([sysconfenvdir], AC_SUBST([sysconfenvdir]) dnl --------------------------------------------------------------------------- +dnl - Server-only configuration +dnl --------------------------------------------------------------------------- + +AM_COND_IF([ENABLE_SERVER], [ + m4_include(server.m4) +]) + +dnl --------------------------------------------------------------------------- dnl - Check for program paths dnl --------------------------------------------------------------------------- AC_PATH_PROG(UNLINK, unlink, [AC_MSG_ERROR([unlink not found])]) @@ -568,7 +479,7 @@ echo " IPA Server $VERSION ======================== - vendor version: ${VERSION}${VENDOR_SUFFIX} + vendor version: ${VERSION}${VENDOR_SUFFIX} prefix: ${prefix} exec_prefix: ${exec_prefix} libdir: ${libdir} @@ -578,14 +489,21 @@ echo " sysconfenvdir: ${sysconfenvdir} localstatedir: ${localstatedir} datadir: ${datadir} - krb5rundir: ${krb5rundir} - systemdsystemunitdir: ${systemdsystemunitdir} - systemdtmpfilesdir: ${systemdtmpfilesdir} source code location: ${srcdir} compiler: ${CC} cflags: ${CFLAGS} LDAP libs: ${LDAP_LIBS} - KRB5 libs: ${KRB5_LIBS} - KRAD libs: ${KRAD_LIBS} OpenSSL crypto libs: ${CRYPTO_LIBS} -" + KRB5 libs: ${KRB5_LIBS}" + +AM_COND_IF([ENABLE_SERVER], [ + echo "\ + KRAD libs: ${KRAD_LIBS} + krb5rundir: ${krb5rundir} + systemdsystemunitdir: ${systemdsystemunitdir} + systemdtmpfilesdir: ${systemdtmpfilesdir} + build mode: server & client" +], [ + echo "\ + build mode: client only" +]) diff --git a/server.m4 b/server.m4 new file mode 100644 index 0000000..fa86cd8 --- /dev/null +++ b/server.m4 @@ -0,0 +1,119 @@ +dnl server dependencies + +dnl --------------------------------------------------------------------------- +dnl - Check for DS slapi plugin +dnl --------------------------------------------------------------------------- + +# Need to hack CPPFLAGS to be able to correctly detetct slapi-plugin.h +SAVE_CPPFLAGS=$CPPFLAGS +CPPFLAGS=$NSPR_CFLAGS +AC_CHECK_HEADER(dirsrv/slapi-plugin.h) +if test "x$ac_cv_header_dirsrv_slapi-plugin_h" = "xno" ; then + AC_MSG_ERROR([Required 389-ds header not available (389-ds-base-devel)]) +fi +AC_CHECK_HEADER(dirsrv/repl-session-plugin.h) +if test "x$ac_cv_header_dirsrv_repl_session_plugin_h" = "xno" ; then + AC_MSG_ERROR([Required 389-ds header not available (389-ds-base-devel)]) +fi +CPPFLAGS=$SAVE_CPPFLAGS + +if test "x$ac_cv_header_dirsrv_slapi_plugin_h" = "xno" ; then + AC_MSG_ERROR([Required DS slapi plugin header not available (fedora-ds-base-devel)]) +fi + +dnl --------------------------------------------------------------------------- +dnl - Check for KRB5 krad +dnl --------------------------------------------------------------------------- + +AC_CHECK_HEADER(krad.h, [], [AC_MSG_ERROR([krad.h not found])]) +AC_CHECK_LIB(krad, main, [], [AC_MSG_ERROR([libkrad not found])]) +KRAD_LIBS="-lkrad" +krb5rundir="${localstatedir}/run/krb5kdc" +AC_SUBST(KRAD_LIBS) +AC_SUBST(krb5rundir) + +dnl --------------------------------------------------------------------------- +dnl Check for ndr_krb5pac and other samba libraries +dnl --------------------------------------------------------------------------- + +PKG_CHECK_MODULES([TALLOC], [talloc]) +PKG_CHECK_MODULES([TEVENT], [tevent]) +PKG_CHECK_MODULES([NDRPAC], [ndr_krb5pac]) +PKG_CHECK_MODULES([NDRNBT], [ndr_nbt]) +PKG_CHECK_MODULES([NDR], [ndr]) +PKG_CHECK_MODULES([SAMBAUTIL], [samba-util]) +SAMBA40EXTRA_LIBPATH="-L`$PKG_CONFIG --variable=libdir samba-util`/samba -Wl,-rpath=`$PKG_CONFIG --variable=libdir samba-util`/samba" +AC_SUBST(SAMBA40EXTRA_LIBPATH) + +bck_cflags="$CFLAGS" +CFLAGS="$NDRPAC_CFLAGS" +AC_CHECK_MEMBER( + [struct PAC_DOMAIN_GROUP_MEMBERSHIP.domain_sid], + [AC_DEFINE([HAVE_STRUCT_PAC_DOMAIN_GROUP_MEMBERSHIP], [1], + [struct PAC_DOMAIN_GROUP_MEMBERSHIP is available.])], + [AC_MSG_NOTICE([struct PAC_DOMAIN_GROUP_MEMBERSHIP is not available])], + [[#include <ndr.h> + #include <gen_ndr/krb5pac.h>]]) + +CFLAGS="$bck_cflags" + +LIBPDB_NAME="" +AC_CHECK_LIB([samba-passdb], + [make_pdb_method], + [LIBPDB_NAME="samba-passdb"; HAVE_LIBPDB=1], + [LIBPDB_NAME="pdb"], + [$SAMBA40EXTRA_LIBPATH]) + +if test "x$LIB_PDB_NAME" = "xpdb" ; then + AC_CHECK_LIB([$LIBPDB_NAME], + [make_pdb_method], + [HAVE_LIBPDB=1], + [AC_MSG_ERROR([Neither libpdb nor libsamba-passdb does have make_pdb_method])], + [$SAMBA40EXTRA_LIBPATH]) +fi + +AC_SUBST(LIBPDB_NAME) + +AC_CHECK_LIB([$LIBPDB_NAME],[pdb_enum_upn_suffixes], + [AC_DEFINE([HAVE_PDB_ENUM_UPN_SUFFIXES], [1], [Ability to enumerate UPN suffixes])], + [AC_MSG_WARN([libpdb does not have pdb_enum_upn_suffixes, no support for realm domains in ipasam])], + [$SAMBA40EXTRA_LIBPATH]) + + +dnl --------------------------------------------------------------------------- +dnl Check for libunistring +dnl --------------------------------------------------------------------------- + +AC_CHECK_HEADERS([unicase.h],,AC_MSG_ERROR([Could not find unicase.h])) +AC_CHECK_LIB([unistring], + [ulc_casecmp], + [UNISTRING_LIBS="-lunistring"], + [AC_MSG_ERROR([libunistring does not have ulc_casecmp])]) +AC_SUBST(UNISTRING_LIBS) + + +dnl --------------------------------------------------------------------------- +dnl Check for libverto +dnl --------------------------------------------------------------------------- + +PKG_CHECK_MODULES([LIBVERTO], [libverto]) + +dnl --------------------------------------------------------------------------- +dnl - Check for systemd directories +dnl --------------------------------------------------------------------------- + +PKG_CHECK_EXISTS([systemd], [], [AC_MSG_ERROR([systemd not found])]) +AC_ARG_WITH([systemdsystemunitdir], + AS_HELP_STRING([--with-systemdsystemunitdir=DIR], + [Directory for systemd service files]), + [systemdsystemunitdir=$with_systemdsystemunitdir], + [systemdsystemunitdir=$($PKG_CONFIG --define-variable=prefix='${prefix}' --variable=systemdsystemunitdir systemd)]) +AC_SUBST([systemdsystemunitdir]) + +AC_ARG_WITH([systemdtmpfilesdir], + AS_HELP_STRING([--with-systemdtmpfilesdir=DIR], + [Directory for systemd-tmpfiles configuration files]), + [systemdtmpfilesdir=$with_systemdtmpfilesdir], + [systemdtmpfilesdir=$($PKG_CONFIG --define-variable=prefix='${prefix}' --variable=tmpfilesdir systemd)]) +AC_SUBST([systemdtmpfilesdir]) + From 7dc668556b82389e85d02da3a6f287afd7347898 Mon Sep 17 00:00:00 2001 From: Christian Heimes <chei...@redhat.com> Date: Thu, 9 Feb 2017 11:00:16 +0100 Subject: [PATCH 2/2] fixup --- Makefile.am | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/Makefile.am b/Makefile.am index c2b205b..311f612 100644 --- a/Makefile.am +++ b/Makefile.am @@ -6,16 +6,8 @@ else SERVER_SUBDIRS = endif IPACLIENT_SUBDIRS = ipaclient ipalib ipapython -SUBDIRS = - asn1 \ - client \ - contrib \ - $(IPACLIENT_SUBDIRS) \ - ipaplatform \ - ipatests \ - po \ - $(SERVER_SUBDIRS) \ - util +SUBDIRS = asn1 util client contrib po \ + $(IPACLIENT_SUBDIRS) ipaplatform ipatests $(SERVER_SUBDIRS) MOSTLYCLEANFILES = ipasetup.pyc ipasetup.pyo \
-- Manage your subscription for the Freeipa-devel mailing list: https://www.redhat.com/mailman/listinfo/freeipa-devel Contribute to FreeIPA: http://www.freeipa.org/page/Contribute/Code