[SSSD] [PATCH] 3rd party plugin & sudo packaging

Jakub Hrozek jhrozek at redhat.com
Tue Jan 17 10:00:45 UTC 2012


[PATCH 1/3] Add a configure switch to specify 3rd party app libraries location
As discussed previously on the list, this is where we will be installing
libraries for applications like sudo, autofs or openssh.

[PATCH 2/3] Export libsss_sudo as a separate package
Builds a new library called libsss_sudo along with a public header and a
pkg-config file. This patch (at least the exports file) should be
applied on top of Pavel's review patch.

[PATCH 3/3] Add a new Makefile target to build RPMs with the experimental flag
I'm not sure if this patch is useful for upstream in general, but it has
been quite useful for me to deliver the latest code to Dan. The patch
adds a couple of new targets that build RPMs with the experimental
features enabled.
-------------- next part --------------
From c17f9600552a16da88d439ab3321bf79e05f4326 Mon Sep 17 00:00:00 2001
From: Jakub Hrozek <jhrozek at redhat.com>
Date: Tue, 10 Jan 2012 16:51:52 +0100
Subject: [PATCH 1/3] Add a configure switch to specify 3rd party app
 libraries location

---
 configure.ac       |    1 +
 src/conf_macros.m4 |   19 ++++++++++++++++++-
 2 files changed, 19 insertions(+), 1 deletions(-)

diff --git a/configure.ac b/configure.ac
index f4d65ee0e56eedd7bf1b9a493acd1b2a89c36bc2..2f9857a19a74dce915fac4332cf160d709fc1c0a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -93,6 +93,7 @@ WITH_NSCD
 WITH_SEMANAGE
 WITH_LIBNL
 WITH_NOLOGIN_SHELL
+WITH_APP_LIBS
 
 m4_include([src/external/pkg.m4])
 m4_include([src/external/libpopt.m4])
diff --git a/src/conf_macros.m4 b/src/conf_macros.m4
index fc5dec67442b0e3be02cd6bf53592e7439fcbf75..537b9857aaf74675a45b4bf62b5612d09a28ca3c 100644
--- a/src/conf_macros.m4
+++ b/src/conf_macros.m4
@@ -383,4 +383,21 @@ AC_DEFUN([WITH_UNICODE_LIB],
     
     AM_CONDITIONAL([WITH_LIBUNISTRING], test x"$unicode_lib" = x"libunistring")
     AM_CONDITIONAL([WITH_GLIB], test x"$unicode_lib" = x"glib2")
-  ])
\ No newline at end of file
+  ])
+
+AC_DEFUN([WITH_APP_LIBS],
+  [ AC_ARG_WITH([app-libs],
+                [AC_HELP_STRING([--with-app-libs=<path>],
+                                [Path to the 3rd party application plugins [/usr/lib/sssd/modules]]
+                               )
+                ]
+               )
+    appmodpath="${libdir}/sssd/modules"
+    config_appmodpath="\"LIBDIR\"/sssd/modules"
+    if test x"$with_app_libs" != x; then
+        appmodpath=$with_app_libs
+        config_appmodpath=$with_app_libs
+    fi
+    AC_SUBST(appmodpath)
+    AC_DEFINE_UNQUOTED(APP_MODULES_PATH, "$config_appmodpath", [Path to the 3rd party modules])
+  ])
-- 
1.7.7.4

-------------- next part --------------
From c57972123d2fb4676cead69b43fcf10599c5dcd2 Mon Sep 17 00:00:00 2001
From: Jakub Hrozek <jhrozek at redhat.com>
Date: Mon, 16 Jan 2012 19:05:33 +0100
Subject: [PATCH 2/3] Export libsss_sudo as a separate package

---
 Makefile.am                           |   36 ++++++++++++++++++++++++++------
 configure.ac                          |    3 +-
 src/sss_client/sss_sudo.exports       |   15 +++++++++++++
 src/sss_client/sudo/libsss_sudo.pc.in |   12 +++++++++++
 4 files changed, 58 insertions(+), 8 deletions(-)
 create mode 100644 src/sss_client/sss_sudo.exports
 create mode 100644 src/sss_client/sudo/libsss_sudo.pc.in

diff --git a/Makefile.am b/Makefile.am
index a0855ae0598dfa54845cac3d8eba651d384eb90e..643ca6a1cd7f51279d4908c349dd86e1c6fbe686 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -39,6 +39,7 @@ logpath = @logpath@
 pubconfpath = @pubconfpath@
 pkgconfigdir = $(libdir)/pkgconfig
 krb5rcachedir = @krb5rcachedir@
+sudolibdir = @appmodpath@
 
 UNICODE_LIBS=@UNICODE_LIBS@
 
@@ -570,14 +571,11 @@ sss_debuglevel_LDADD = \
 
 if BUILD_SUDO
 sss_sudo_cli_SOURCES = \
-    src/sss_client/sudo_testcli/sudo_testcli.c \
-    src/sss_client/sudo/sss_sudo_response.c \
-    src/sss_client/sudo/sss_sudo.c \
-    src/sss_client/sudo/sss_sudo.h \
-    src/sss_client/sudo/sss_sudo_private.h \
     src/sss_client/common.c \
-    src/sss_client/sss_cli.h
+    src/sss_client/sudo_testcli/sudo_testcli.c
 sss_sudo_cli_CFLAGS = $(AM_CFLAGS)
+sss_sudo_cli_LDADD = \
+    libsss_sudo.la
 endif
 
 #################
@@ -868,9 +866,32 @@ pam_sss_la_LDFLAGS = \
     -avoid-version \
     -Wl,--version-script,$(srcdir)/src/sss_client/sss_pam.exports
 
+if BUILD_SUDO
+
+libsss_sudo_la_SOURCES = \
+    src/sss_client/common.c \
+    src/sss_client/sss_cli.h \
+    src/sss_client/sudo/sss_sudo_response.c \
+    src/sss_client/sudo/sss_sudo.c \
+    src/sss_client/sudo/sss_sudo.h \
+    src/sss_client/sudo/sss_sudo_private.h
+libsss_sudo_la_LDFLAGS = \
+    -Wl,--version-script,$(srcdir)/src/sss_client/sss_sudo.exports \
+    -version 1:0:0
+
+sudolib_LTLIBRARIES = libsss_sudo.la
+dist_pkgconfig_DATA += src/sss_client/sudo/libsss_sudo.pc
+
+include_HEADERS += \
+    src/sss_client/sudo/sss_sudo.h
+endif
+
 dist_noinst_DATA += \
     src/sss_client/sss_nss.exports \
     src/sss_client/sss_pam.exports
+if BUILD_SUDO
+dist_noinst_DATA += src/sss_client/sss_sudo.exports
+endif
 
 ####################
 # Plugin Libraries #
@@ -1189,7 +1210,8 @@ installsssddirs::
     $(DESTDIR)$(dbpath) \
     $(DESTDIR)$(pidpath) \
     $(DESTDIR)$(logpath) \
-    $(DESTDIR)$(pubconfpath)
+    $(DESTDIR)$(pubconfpath) \
+    $(DESTDIR)$(sudolibdir)
 
 if HAVE_DOXYGEN
 docs:
diff --git a/configure.ac b/configure.ac
index 2f9857a19a74dce915fac4332cf160d709fc1c0a..f338aaa139fbca84a6ae947211ccf148fc468678 100644
--- a/configure.ac
+++ b/configure.ac
@@ -231,5 +231,6 @@ AC_SUBST([abs_builddir], $abs_build_dir)
 
 AC_CONFIG_FILES([Makefile contrib/sssd.spec src/examples/rwtab src/doxy.config
                  src/sysv/systemd/sssd.service po/Makefile.in src/man/Makefile
-                 src/providers/ipa/ipa_hbac.pc src/providers/ipa/ipa_hbac.doxy])
+                 src/providers/ipa/ipa_hbac.pc src/providers/ipa/ipa_hbac.doxy
+                 src/sss_client/sudo/libsss_sudo.pc])
 AC_OUTPUT
diff --git a/src/sss_client/sss_sudo.exports b/src/sss_client/sss_sudo.exports
new file mode 100644
index 0000000000000000000000000000000000000000..3f6bea30c9c1c90010845b9fa08ce77bd18dec0b
--- /dev/null
+++ b/src/sss_client/sss_sudo.exports
@@ -0,0 +1,15 @@
+EXPORTED {
+
+	# public functions
+	global:
+
+		sss_sudo_send_recv;
+		sss_sudo_free_result;
+		sss_sudo_get_values;
+		sss_sudo_free_values;
+
+	# everything else is local
+	local:
+		*;
+};
+
diff --git a/src/sss_client/sudo/libsss_sudo.pc.in b/src/sss_client/sudo/libsss_sudo.pc.in
new file mode 100644
index 0000000000000000000000000000000000000000..ba67fa987c90e45b7ff30beaa6b874609118f0a3
--- /dev/null
+++ b/src/sss_client/sudo/libsss_sudo.pc.in
@@ -0,0 +1,12 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: sss_sudo
+Description: A library to allow communication between SUDO and SSSD
+Version: @VERSION@
+Libs: -L at appmodpath@ -lsss_sudo
+Cflags:
+URL: http://fedorahosted.org/sssd/
+
-- 
1.7.7.4

-------------- next part --------------
From b5da6c1d55acd67defaaf406edafb85922eee936 Mon Sep 17 00:00:00 2001
From: Jakub Hrozek <jhrozek at redhat.com>
Date: Mon, 16 Jan 2012 19:05:55 +0100
Subject: [PATCH 3/3] Add a new Makefile target to build RPMs with the
 experimental flag

---
 Makefile.am          |   20 ++++++++++++++++----
 contrib/sssd.spec.in |   38 +++++++++++++++++++++++++++++++++++++-
 2 files changed, 53 insertions(+), 5 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index 643ca6a1cd7f51279d4908c349dd86e1c6fbe686..54f491f53991c7e040dc291d7f62208db38e97e1 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1287,25 +1287,37 @@ rpmroot:
 	mkdir -p $(RPMBUILD)/SPECS
 	mkdir -p $(RPMBUILD)/SRPMS
 
-rpms: dist-gzip rpmroot
+rpmbrprep: dist-gzip rpmroot
 	cp $(builddir)/contrib/sssd.spec $(RPMBUILD)/SPECS
 	cp $(distdir).tar.gz $(RPMBUILD)/SOURCES
+
+rpms: rpmbrprep
 	cd $(RPMBUILD); \
 	rpmbuild --define "_topdir $(RPMBUILD)" -ba SPECS/sssd.spec
 
+experimental-rpms: rpmbrprep
+	cd $(RPMBUILD); \
+	rpmbuild --define "_topdir $(RPMBUILD)"   \
+		 --define "enable_experimental 1" \
+		 -ba SPECS/sssd.spec
+
 if GIT_CHECKOUT
 prerelease-rpms:
 	cp $(srcdir)/version.m4 $(srcdir)/version.m4.orig
 	sed -e "s/m4_define(\[PRERELEASE_VERSION_NUMBER\], \[.*\])/m4_define(\[PRERELEASE_VERSION_NUMBER\], \[.`date +%Y%m%d.%H%M`.git`git log -1 --pretty=format:%h`\])/" < $(srcdir)/version.m4.orig > $(srcdir)/version.m4
 	$(MAKE) rpms
 	mv $(srcdir)/version.m4.orig $(srcdir)/version.m4
+
+prerelease-experimental-rpms:
+	cp $(srcdir)/version.m4 $(srcdir)/version.m4.orig
+	sed -e "s/m4_define(\[PRERELEASE_VERSION_NUMBER\], \[.*\])/m4_define(\[PRERELEASE_VERSION_NUMBER\], \[.`date +%Y%m%d.%H%M`.git`git log -1 --pretty=format:%h`\])/" < $(srcdir)/version.m4.orig > $(srcdir)/version.m4
+	$(MAKE) experimental-rpms
+	mv $(srcdir)/version.m4.orig $(srcdir)/version.m4
 endif
 
 # make srpms will use the old digest algorithm to be compatible
 # with RHEL5
-srpm: dist-gzip rpmroot
-	cp $(builddir)/contrib/sssd.spec $(RPMBUILD)/SPECS
-	cp $(distdir).tar.gz $(RPMBUILD)/SOURCES
+srpm: rpmbrprep
 	cd $(RPMBUILD); \
 	rpmbuild --define "_topdir $(RPMBUILD)" \
 	         --define _source_filedigest_algorithm=1 \
diff --git a/contrib/sssd.spec.in b/contrib/sssd.spec.in
index 8bc51148f5de360fa47f2c6705e9ef318cde61ea..e5d12bfcbc6db526057ad610b3e59a9e63fe67b9 100644
--- a/contrib/sssd.spec.in
+++ b/contrib/sssd.spec.in
@@ -14,6 +14,10 @@
 %global with_unicode_lib --with-unicode-lib=glib2
 %endif
 
+%if (0%{?enable_experimental} == 1)
+%global experimental --enable-all-experimental-features
+%endif
+
 # Determine the location of the LDB modules directory
 %global ldb_modulesdir %(pkg-config --variable=modulesdir ldb)
 
@@ -158,6 +162,25 @@ Requires: libipa_hbac = %{version}-%{release}
 The libipa_hbac-python contains the bindings so that libipa_hbac can be
 used by Python applications.
 
+%if (0%{?enable_experimental} == 1)
+%package -n libsss_sudo
+Summary: A library to allow communication between SUDO and SSSD
+Group: Development/Libraries
+License: LGPLv3+
+
+%description -n libsss_sudo
+A utility library to allow communication between SUDO and SSSD
+
+%package -n libsss_sudo-devel
+Summary: A library to allow communication between SUDO and SSSD
+Group: Development/Libraries
+License: LGPLv3+
+Requires: libsss_sudo = %{version}-%{release}
+
+%description -n libsss_sudo-devel
+A utility library to allow communication between SUDO and SSSD
+%endif
+
 %prep
 %setup -q
 
@@ -183,7 +206,8 @@ autoreconf -ivf
     --enable-pammoddir=/%{_lib}/security \
     --disable-static \
     --disable-rpath \
-    %{with_unicode_lib}
+    %{with_unicode_lib} \
+    %{experimental}
 
 make %{?_smp_mflags} all
 
@@ -341,6 +365,18 @@ rm -rf $RPM_BUILD_ROOT
 %defattr(-,root,root,-)
 %{python_sitearch}/pyhbac.so
 
+%if (0%{?enable_experimental} == 1)
+%files -n libsss_sudo
+%defattr(-,root,root,-)
+%doc src/sss_client/COPYING src/sss_client/COPYING.LESSER
+%{_libdir}/sssd/modules/libsss_sudo.so.*
+
+%files -n libsss_sudo-devel
+%{_includedir}/sss_sudo.h
+%{_libdir}/sssd/modules/libsss_sudo.so
+%{_libdir}/pkgconfig/libsss_sudo.pc
+%endif
+
 %post
 /sbin/ldconfig
 /sbin/chkconfig --add %{servicename}
-- 
1.7.7.4



More information about the sssd-devel mailing list