On (15/05/15 12:52), Sumit Bose wrote:
>On Mon, May 11, 2015 at 06:38:30PM +0200, Lukas Slebodnik wrote:
>> On (11/05/15 18:26), Sumit Bose wrote:
>> >On Mon, May 11, 2015 at 09:12:38AM +0200, Lukas Slebodnik wrote:
>> >> On (06/05/15 16:25), Sumit Bose wrote:
>> >> >Hi,
>> >> >
>> >> >with Samba-4.2.x libwbclient has a new interface version because new
>> >> >calls were added which have an opaque context as an argument to allow
>> >> >threaded applications to send multiple requests to winbind in parallel.
>> >> >
>> >> >This patch adds the new interface but so far does not implement any
>> >> >calls.
>> >> >
>> >> >We have a similar issue in SSSD, all applications either single all
>> >> >multi-threaded use a single file-descriptor to talk to the SSSD
>> >> >responders and the requests are serialized. Originally the only clients
>> >> >were the NSS and PAM client code where there was no way around it
>> >> >because the PAM and NSS interface do not provide a way to pass a
>> >> >thread-local context.
>> >> >
>> >> >Nowadays there are applications like 389ds running on a FreeIPA server
>> >> >which want to get data exclusively from SSSD which can use more enhanced
>> >> >interface. So I think it would make sense to consider an enhancement to
>> >> >the low-level client communication code similar to the changes done in
>> >> >Samba so that threads can get an individual file-descriptors to talk to
>> >> >the responders. When this is done the new context aware libwbclient
>> >> >calls can be implemented (as long as it is possible).
>> >> >
>> >> >bye,
>> >> >Sumit
>> >>
>> >> >From 137f33cdb7429ec4aeafd8ca4856bc1527e30443 Mon Sep 17 00:00:00 2001
>> >> >From: Sumit Bose <[email protected]>
>> >> >Date: Wed, 6 May 2015 13:07:54 +0200
>> >> >Subject: [PATCH] libwbclient-sssd: update interface to version 0.12
>> >> >
>> >> >This patch adds the new interface version 0.12 to libwbclient-sssd. The
>> >> >old version can still be generated with the --with-libwbclient-011
>> >> >configure option.
>> >> >
>> >> >This patch does not add an implementation of the new calls because first
>> >> >the SSSD client code has to be made thread friendly similar to Samba's
>> >> >libwbclient.
>> >> >---
>> >> > Makefile.am | 30 +-
>> >> > configure.ac | 1 +
>> >> > src/conf_macros.m4 | 26 +
>> >> > src/sss_client/libwbclient/wbc_ctx_sssd.c | 396 ++++++++++
>> >> > .../{wbclient.exports => wbclient-0.11.exports} | 4 +-
>> >> > src/sss_client/libwbclient/wbclient.exports | 62 +-
>> >> > .../{wbclient_sssd.h => wbclient_sssd-0.11.h} | 0
>> >> > src/sss_client/libwbclient/wbclient_sssd.h | 853
>> >> > ++++++++++++++++++---
>> >> > src/sss_client/libwbclient/wbclient_sssd.pc.in | 2 +-
>> >> > 9 files changed, 1267 insertions(+), 107 deletions(-)
>> >> > create mode 100644 src/sss_client/libwbclient/wbc_ctx_sssd.c
>> >> > copy src/sss_client/libwbclient/{wbclient.exports =>
>> >> > wbclient-0.11.exports} (98%)
>> >> > copy src/sss_client/libwbclient/{wbclient_sssd.h =>
>> >> > wbclient_sssd-0.11.h} (100%)
>> >> >
>> >> >diff --git a/Makefile.am b/Makefile.am
>> >> >index
>> >> >0aad222c1276b76607ec2d0e5c6b411d3b17b0a7..ce83e2ecd9151179e05ad37cbfe5aee86d384741
>> >> > 100644
>> >> >--- a/Makefile.am
>> >> >+++ b/Makefile.am
>> >> >@@ -887,7 +887,10 @@ libwbclient_LTLIBRARIES = libwbclient.la
>> >> > pkgconfig_DATA += src/sss_client/libwbclient/wbclient_sssd.pc
>> >> >
>> >> > EXTRA_libwbclient_la_DEPENDENCIES = \
>> >> >- src/sss_client/libwbclient/wbclient.exports
>> >> >+ src/sss_client/libwbclient/wbclient.exports \
>> >> >+ src/sss_client/libwbclient/wbclient-0.11.exports \
>> >> >+ $(NULL)
>> >> >+
>> >> > libwbclient_la_SOURCES = \
>> >> > src/sss_client/libwbclient/wbc_guid.c \
>> >> > src/sss_client/libwbclient/wbc_idmap_common.c \
>> >> >@@ -900,17 +903,34 @@ libwbclient_la_SOURCES = \
>> >> > src/sss_client/libwbclient/wbc_sid_sssd.c \
>> >> > src/sss_client/libwbclient/wbc_sssd_internal.h \
>> >> > src/sss_client/libwbclient/wbc_util_common.c \
>> >> >- src/sss_client/libwbclient/wbc_util_sssd.c
>> >> >+ src/sss_client/libwbclient/wbc_util_sssd.c \
>> >> >+ src/sss_client/libwbclient/wbc_ctx_sssd.c \
>> >> >+ $(NULL)
>> >> > libwbclient_la_LIBADD = \
>> >> > libsss_nss_idmap.la \
>> >> >- $(CLIENT_LIBS)
>> >> >+ $(CLIENT_LIBS) \
>> >> >+ $(NULL)
>> >> >+
>> >> >+if BUILD_LIBWBCLIENT_011
>> >> > libwbclient_la_LDFLAGS = \
>> >> >-
>> >> >-Wl,--version-script,$(srcdir)/src/sss_client/libwbclient/wbclient.exports
>> >> > \
>> >> >+
>> >> >-Wl,--version-script,$(srcdir)/src/sss_client/libwbclient/wbclient-0.11.exports
>> >> > \
>> >> > -version-info 11:0:11
>> >> >
>> >> >-dist_noinst_DATA += src/sss_client/libwbclient/wbclient.exports
>> >> >+include_HEADERS += src/sss_client/libwbclient/wbclient_sssd-0.11.h
>> >> >+dist_noinst_HEADERS += src/sss_client/libwbclient/wbclient_sssd.h
>> >> >+else #BUILD_LIBWBCLIENT_011
>> >> >+libwbclient_la_LDFLAGS = \
>> >> >+
>> >> >-Wl,--version-script,$(srcdir)/src/sss_client/libwbclient/wbclient.exports
>> >> > \
>> >> >+ -version-info 12:0:12
>> >> >
>> >> > include_HEADERS += src/sss_client/libwbclient/wbclient_sssd.h
>> >> >+dist_noinst_HEADERS += src/sss_client/libwbclient/wbclient_sssd-0.11.h
>> >> >+endif
>> >> >+
>> >> >+dist_noinst_DATA += src/sss_client/libwbclient/wbclient.exports \
>> >> >+ src/sss_client/libwbclient/wbclient-0.11.exports \
>> >> >+ $(NULL)
>> >> >+
>> >> > endif #BUILD_LIBWBCLIENT
>> >> >
>> >> > if BUILD_IFP
>> >> >diff --git a/configure.ac b/configure.ac
>> >> >index
>> >> >1f9c6f86772890bb0e269287d58aa6ea46e59ee1..15b421515aab4dc6e9f5a9e29670bdbe76313e0c
>> >> > 100644
>> >> >--- a/configure.ac
>> >> >+++ b/configure.ac
>> >> >@@ -137,6 +137,7 @@ WITH_SAMBA
>> >> > WITH_NFS
>> >> > WITH_NFS_LIB_PATH
>> >> > WITH_LIBWBCLIENT
>> >> >+WITH_LIBWBCLIENT_011
>> >> > WITH_SSSD_USER
>> >> >
>> >> > m4_include([src/external/pkg.m4])
>> >> >diff --git a/src/conf_macros.m4 b/src/conf_macros.m4
>> >> >index
>> >> >9ed0a4c44c209e88fc896d0cd3040cb572b358c9..728da445282d76d4048ef2a105b45954a961cbdb
>> >> > 100644
>> >> >--- a/src/conf_macros.m4
>> >> >+++ b/src/conf_macros.m4
>> >> >@@ -698,10 +698,36 @@ AC_DEFUN([WITH_LIBWBCLIENT],
>> >> >
>> >> > if test x"$with_libwbclient" = xyes; then
>> >> > AC_DEFINE(BUILD_LIBWBCLIENT, 1, [whether to build SSSD
>> >> > implementation of libwbclient])
>> >> >+
>> >> >+ libwbclient_version="0.12"
>> >> >+ AC_SUBST(libwbclient_version)
>> >> > fi
>> >> > AM_CONDITIONAL([BUILD_LIBWBCLIENT], [test x"$with_libwbclient" =
>> >> > xyes])
>> >> >+ AM_CONDITIONAL([BUILD_LIBWBCLIENT_011], [test x = y])
>> >> > ])
>> >> >
>> >> >+AC_DEFUN([WITH_LIBWBCLIENT_011],
>> >> >+ [ AC_ARG_WITH([libwbclient_011],
>> >> >+ [AC_HELP_STRING([--with-libwbclient-0.11],
>> >> >+ [Whether to build version 0.11 of SSSD
>> >> >implementation of libwbclient [no]]
>> >> >+ )
>> >> >+ ],
>> >> >+ [with_libwbclient_011=$withval],
>> >> >+ with_libwbclient_011=no
>> >> >+ )
>> >> >+
>> >> >+ if test x"$with_libwbclient_011" = xyes; then
>> >> >+ AC_DEFINE(BUILD_LIBWBCLIENT, 1, [whether to build SSSD
>> >> >implementation of libwbclient])
>> >> >+ AC_DEFINE(BUILD_LIBWBCLIENT_011, 1, [whether to build version
>> >> >0.11 of SSSD implementation of libwbclient])
>> >> >+
>> >> >+ libwbclient_version="0.11"
>> >> >+ AC_SUBST(libwbclient_version)
>> >> >+ fi
>> >> >+ AM_CONDITIONAL([BUILD_LIBWBCLIENT], [test x"$with_libwbclient" =
>> >> >xyes])
>> >> >+ AM_CONDITIONAL([BUILD_LIBWBCLIENT_011], [test
>> >> >x"$with_libwbclient_011" = xyes])
>> >> >+ ])
>> >> >+
>> >> >+
>> >>
>> >> I would prefer to keep it simple.
>> >>
>> >> libwbclient.so.0.12 is backward compatible with libwbclient.so.0.11.
>> >> Just new functions were added.
>> >>
>> >> It means that each program which was compiled with libwbclient.so.0.11
>> >> will
>> >> work with libwbclient.so.0.12 as well. We needn't complicate our life
>> >> with two
>> >> versions of libwbclient.
>> >
>> >In general I agree. But my intend was to make it easy for distributions
>> >and other integrators to build and use libwbclient-sssd for older samba
>> >versions using 0.11 without irritating the users. So I would prefer to
>> >do it this way for a start and try to get some experience and feedback
>> >if it is needed by other and switch to a different scheme later, because
>> >I agree that was cannot do this for ever.
>> >
>>
>> I'm sorry I do not understand the use case.
>> What do you mean by "libwbclient-sssd for older samba"?
>> What problems can you see in packaging/distributions?
>>
>> Maybe I miss some corner cases
>> but I cannot see any problem with samba/libwbclient.so.0.11
>> together with sssd/libwbclient.so.0.12.
>> It can be easily handled with alternatives and symbolic links.
>>
>> /usr/lib{.64}/libwbclient.so.0.11 can point either to
>> samba/libwbclient.so.0.11
>> or sssd/libwbclient.so.0.12
>>
>
>ok, I removed the 0.11 parts and made some changes which should make it
>easy to add new versions or create an older version. The explicit
>version information can be found in src/conf_macros.m4. If someone wants
>to create an older version the number has to be change here and the
>newer versions have to be removed from
>src/sss_client/libwbclient/wbclient.exports, that's all.
>
than you for patch.
I tested on fedora 22 (already have samba-libwblient.so.0.12)
and on rhel7 with small cheat (I was lazy to patch autoconf files :-)
alternatives --install /usr/lib64/libwbclient.so.0.11 \
libwbclient.so.0.11-64
/usr/lib64/sssd/modules/libwbclient.so.0.12.0
all QE tests passed.
Maybe we can do another compromise and have two vesion files
as in your previous version. So if someone "really" don't want
symbols from libwbclient.so. then he can just patch makefile and remove
line with version-script (LDFLAGS)
But I'm fine with this version and I would like to ack it and backport fo
fedora 22. I just want to know your preference about version-script files.
LS
_______________________________________________
sssd-devel mailing list
[email protected]
https://lists.fedorahosted.org/mailman/listinfo/sssd-devel