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 69533417178c583c927d2e141c7359a5ca19362d Mon Sep 17 00:00:00 2001 From: Christian Heimes <chei...@redhat.com> Date: Tue, 3 Jan 2017 14:32:05 +0100 Subject: [PATCH] Client-only builds with --disable-server https://fedorahosted.org/freeipa/ticket/6517 --- Makefile.am | 6 +- configure.ac | 253 +++++++++++++++++++++-------------------------------------- server.m4 | 119 ++++++++++++++++++++++++++++ 3 files changed, 212 insertions(+), 166 deletions(-) create mode 100644 server.m4 diff --git a/Makefile.am b/Makefile.am index 9bfc899..24d31c8 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,7 +1,11 @@ ACLOCAL_AMFLAGS = -I m4 IPACLIENT_SUBDIRS = ipaclient ipalib ipapython -SUBDIRS = asn1 util client contrib daemons init install $(IPACLIENT_SUBDIRS) ipaplatform ipaserver ipatests po +SUBDIRS = asn1 util client contrib $(IPACLIENT_SUBDIRS) ipaplatform ipatests po + +if ENABLE_SERVER + SUBDIRS += daemons init install ipaserver +endif MOSTLYCLEANFILES = ipasetup.pyc ipasetup.pyo \ ignore_import_errors.pyc ignore_import_errors.pyo \ diff --git a/configure.ac b/configure.ac index ff5f7b6..56cae6a 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])]) @@ -500,56 +411,6 @@ AC_CONFIG_FILES([ client/man/Makefile contrib/completion/Makefile contrib/Makefile - daemons/dnssec/Makefile - daemons/Makefile - daemons/ipa-kdb/Makefile - daemons/ipa-sam/Makefile - daemons/ipa-otpd/Makefile - daemons/ipa-slapi-plugins/Makefile - daemons/ipa-slapi-plugins/libotp/Makefile - daemons/ipa-slapi-plugins/ipa-cldap/Makefile - daemons/ipa-slapi-plugins/ipa-dns/Makefile - daemons/ipa-slapi-plugins/ipa-enrollment/Makefile - daemons/ipa-slapi-plugins/ipa-lockout/Makefile - daemons/ipa-slapi-plugins/ipa-otp-counter/Makefile - daemons/ipa-slapi-plugins/ipa-otp-lasttoken/Makefile - daemons/ipa-slapi-plugins/ipa-pwd-extop/Makefile - daemons/ipa-slapi-plugins/ipa-extdom-extop/Makefile - daemons/ipa-slapi-plugins/ipa-winsync/Makefile - daemons/ipa-slapi-plugins/ipa-version/Makefile - daemons/ipa-slapi-plugins/ipa-uuid/Makefile - daemons/ipa-slapi-plugins/ipa-modrdn/Makefile - daemons/ipa-slapi-plugins/ipa-sidgen/Makefile - daemons/ipa-slapi-plugins/ipa-range-check/Makefile - daemons/ipa-slapi-plugins/topology/Makefile - init/systemd/Makefile - init/tmpfilesd/Makefile - init/Makefile - install/Makefile - install/certmonger/Makefile - install/conf/Makefile - install/html/Makefile - install/migration/Makefile - install/share/Makefile - install/share/advise/Makefile - install/share/advise/legacy/Makefile - install/share/csrgen/Makefile - install/share/profiles/Makefile - install/share/schema.d/Makefile - install/ui/Makefile - install/ui/css/Makefile - install/ui/src/Makefile - install/ui/src/libs/Makefile - install/ui/images/Makefile - install/ui/build/Makefile - install/ui/build/dojo/Makefile - install/ui/build/freeipa/Makefile - install/tools/Makefile - install/tools/man/Makefile - install/updates/Makefile - install/restart_scripts/Makefile - install/wsgi/Makefile - install/oddjob/Makefile ipaclient/Makefile ipalib/Makefile ipaplatform/Makefile @@ -562,13 +423,68 @@ AC_CONFIG_FILES([ util/Makefile ]) +AM_COND_IF([ENABLE_SERVER], [ + AC_CONFIG_FILES([ + daemons/dnssec/Makefile + daemons/Makefile + daemons/ipa-kdb/Makefile + daemons/ipa-sam/Makefile + daemons/ipa-otpd/Makefile + daemons/ipa-slapi-plugins/Makefile + daemons/ipa-slapi-plugins/libotp/Makefile + daemons/ipa-slapi-plugins/ipa-cldap/Makefile + daemons/ipa-slapi-plugins/ipa-dns/Makefile + daemons/ipa-slapi-plugins/ipa-enrollment/Makefile + daemons/ipa-slapi-plugins/ipa-lockout/Makefile + daemons/ipa-slapi-plugins/ipa-otp-counter/Makefile + daemons/ipa-slapi-plugins/ipa-otp-lasttoken/Makefile + daemons/ipa-slapi-plugins/ipa-pwd-extop/Makefile + daemons/ipa-slapi-plugins/ipa-extdom-extop/Makefile + daemons/ipa-slapi-plugins/ipa-winsync/Makefile + daemons/ipa-slapi-plugins/ipa-version/Makefile + daemons/ipa-slapi-plugins/ipa-uuid/Makefile + daemons/ipa-slapi-plugins/ipa-modrdn/Makefile + daemons/ipa-slapi-plugins/ipa-sidgen/Makefile + daemons/ipa-slapi-plugins/ipa-range-check/Makefile + daemons/ipa-slapi-plugins/topology/Makefile + init/systemd/Makefile + init/tmpfilesd/Makefile + init/Makefile + install/Makefile + install/certmonger/Makefile + install/conf/Makefile + install/html/Makefile + install/migration/Makefile + install/share/Makefile + install/share/advise/Makefile + install/share/advise/legacy/Makefile + install/share/csrgen/Makefile + install/share/profiles/Makefile + install/share/schema.d/Makefile + install/ui/Makefile + install/ui/css/Makefile + install/ui/src/Makefile + install/ui/src/libs/Makefile + install/ui/images/Makefile + install/ui/build/Makefile + install/ui/build/dojo/Makefile + install/ui/build/freeipa/Makefile + install/tools/Makefile + install/tools/man/Makefile + install/updates/Makefile + install/restart_scripts/Makefile + install/wsgi/Makefile + install/oddjob/Makefile + ]) +]) + AC_OUTPUT echo " IPA Server $VERSION ======================== - vendor version: ${VERSION}${VENDOR_SUFFIX} + vendor version: ${VERSION}${VENDOR_SUFFIX} prefix: ${prefix} exec_prefix: ${exec_prefix} libdir: ${libdir} @@ -578,14 +494,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]) +
-- 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