[SSSD] [PATCHES] libwbclient: user _sssd suffix to avoid collision with Samba version
Jakub Hrozek
jhrozek at redhat.com
Mon Sep 8 13:42:50 UTC 2014
On Mon, Sep 08, 2014 at 03:06:08PM +0200, Lukas Slebodnik wrote:
> On (08/09/14 14:58), Lukas Slebodnik wrote:
> >On (05/09/14 18:07), Sumit Bose wrote:
> >>Hi,
> >>
> >>currently if libwbclient is enabled (and it is enabled be default) 'make
> >>install' might overwrite the already installed Samba version of the
> >>library.
> >>
> >>To make this more robust but keep the library enabled by default I would
> >>suggest to add a _sssd suffix to all installed files to avoid
> >>collisions. If an admin want to use the SSSD version instead of the
> >>Samba version the libraries must be replaced manually. Distributions can
> >>you their scheme to handle different implementations of the same binary
> >>during building the packages, e.g. for Fedora and RHEL this would be
> >>/sbin/alternatives.
> >>
> >>All renaming is done in the second patch. The first patch just fixes an
> >>issue during make test when disabling libwbclient and should be applied
> >>even if the second is NACKed.
> >>
> >>bye,
> >>Sumit
> >
> >>From e2243251fe5917fbcb7ec28128697936966fa9eb Mon Sep 17 00:00:00 2001
> >>From: Sumit Bose <sbose at redhat.com>
> >>Date: Fri, 5 Sep 2014 10:33:21 +0200
> >>Subject: [PATCH 1/2] dlopen test: only test libwbclient when it is build
> >>
> >>---
> >> src/tests/dlopen-tests.c | 2 ++
> >> 1 file changed, 2 insertions(+)
> >>
> >Obvious ACK
> >
> >>From 9ebb9b66fdd730448014d4bf3b984fd861214a86 Mon Sep 17 00:00:00 2001
> >>From: Sumit Bose <sbose at redhat.com>
> >>Date: Fri, 5 Sep 2014 12:30:43 +0200
> >>Subject: [PATCH 2/2] libwbclient: user _sssd suffix to avoid collision with
> >> Samba version
> >>
> >>---
> >> Makefile.am | 15 +-
> >> configure.ac | 2 +-
> >> contrib/sssd.spec.in | 8 +-
> >> src/sss_client/libwbclient/libwbclient.h | 2 +-
> >> src/sss_client/libwbclient/wbclient.h | 1372 ------------------------
> >> src/sss_client/libwbclient/wbclient.pc.in | 11 -
> >> src/sss_client/libwbclient/wbclient_sssd.h | 1372 ++++++++++++++++++++++++
> >> src/sss_client/libwbclient/wbclient_sssd.pc.in | 11 +
> >> src/tests/dlopen-tests.c | 2 +-
> >> 9 files changed, 1398 insertions(+), 1397 deletions(-)
> >> delete mode 100644 src/sss_client/libwbclient/wbclient.h
> >> delete mode 100644 src/sss_client/libwbclient/wbclient.pc.in
> >> create mode 100644 src/sss_client/libwbclient/wbclient_sssd.h
> >> create mode 100644 src/sss_client/libwbclient/wbclient_sssd.pc.in
> >>
> >>diff --git a/Makefile.am b/Makefile.am
> >>index ce9063e..a8ab100 100644
> >>--- a/Makefile.am
> >>+++ b/Makefile.am
> >>@@ -793,11 +793,12 @@ include_HEADERS = \
> >> $(NULL)
> >>
> >> if BUILD_LIBWBCLIENT
> >>-lib_LTLIBRARIES += libwbclient.la
> >>-pkgconfig_DATA += src/sss_client/libwbclient/wbclient.pc
> >>+lib_LTLIBRARIES += libwbclient_sssd.la
> >>+pkgconfig_DATA += src/sss_client/libwbclient/wbclient_sssd.pc
> >>
> >>-EXTRA_libwbclient_la_DEPENDENCIES = src/sss_client/libwbclient/wbclient.exports
> >>-libwbclient_la_SOURCES = \
> >>+EXTRA_libwbclient_sssd_la_DEPENDENCIES = \
> >>+ src/sss_client/libwbclient/wbclient.exports
> >>+libwbclient_sssd_la_SOURCES = \
> >> src/sss_client/libwbclient/wbc_guid.c \
> >> src/sss_client/libwbclient/wbc_idmap_common.c \
> >> src/sss_client/libwbclient/wbc_idmap_sssd.c \
> >>@@ -810,16 +811,16 @@ libwbclient_la_SOURCES = \
> >> src/sss_client/libwbclient/wbc_sssd_internal.h \
> >> src/sss_client/libwbclient/wbc_util_common.c \
> >> src/sss_client/libwbclient/wbc_util_sssd.c
> >>-libwbclient_la_LIBADD = \
> >>+libwbclient_sssd_la_LIBADD = \
> >> libsss_nss_idmap.la \
> >> $(CLIENT_LIBS)
> >>-libwbclient_la_LDFLAGS = \
> >>+libwbclient_sssd_la_LDFLAGS = \
> >> -Wl,--version-script,$(srcdir)/src/sss_client/libwbclient/wbclient.exports \
> >> -version-info 11:0:11
> >I am not really sure it will work.
> >The problem with colliding names is fixed, but utilities will not work with
> >this new library. The side effect of renaming is that soname is changed.
> >
> > sh-4.3$ objdump -p .libs/libwbclient_sssd.so | grep -i wbclient
> > .libs/libwbclient_sssd.so: file format elf64-x86-64
> > SONAME libwbclient_sssd.so.0
> > 1 0x01 0x0af71cb0 libwbclient_sssd.so.0
> > 2 0x00 0x0d90a3c9 WBCLIENT_0.9
> > 3 0x00 0x090a3c90 WBCLIENT_0.10
> > WBCLIENT_0.9
> > 4 0x00 0x090a3c91 WBCLIENT_0.11
> >
> >
> > sh-4.3$ objdump -p /usr/lib64/libwbclient.so | grep -i wbclient
> > /usr/lib64/libwbclient.so: file format elf64-x86-64
> > SONAME libwbclient.so.0
> > 1 0x01 0x08faa220 libwbclient.so.0
> > 2 0x00 0x0d90a3c9 WBCLIENT_0.9
> > 3 0x00 0x090a3c90 WBCLIENT_0.10
> > WBCLIENT_0.9
> > 4 0x00 0x090a3c91 WBCLIENT_0.11
> >
> >And winbind utilities require different soname than we have.
> > bash-4.3$ objdump -p /usr/bin/wbinfo | grep -A2 wbclient
> > NEEDED libwbclient.so.0
> > NEEDED libreplace.so
> > NEEDED libsamba-hostconfig.so.0
> > --
> > required from libwbclient.so.0:
> > 0x090a3c90 0x00 13 WBCLIENT_0.10
> > 0x0d90a3c9 0x00 07 WBCLIENT_0.9
> >
>
> I tried to override soname, but it does not work.
>
> libwbclient_sssd_la_LDFLAGS = \
> -Wl,--version-script,$(srcdir)/src/sss_client/libwbclient/wbclient.exports \
> - -version-info 11:0:11
> + -version-info 11:0:11 -Wl,-soname=libwbclient.so.0
>
> libtool put autogenerated soname at the end.
>
> # lot of lines omited
> -O2 -Wl,--version-script -Wl,./src/sss_client/libwbclient/wbclient.exports \
> -Wl,-soname=libwbclient.so.0 -Wl,--as-needed \
> -Wl,-soname -Wl,libwbclient_sssd.so.0 -o .libs/libwbclient_sssd.so.0.11.0
>
> I can see two possible solutions.
> a) rename library after building and before installation
> #not sure if it is possible, maybe some automake hooks
This is what is typically done using alternatives, see:
https://fedoraproject.org/wiki/Packaging:Alternatives
> b) build library with "noinst_" prefix => will not be installed by default
> and do all magic ourself (renaming, installation ...)
>
> Solutions A and B require more time and careful testing.
>
> LS
> _______________________________________________
> sssd-devel mailing list
> sssd-devel at lists.fedorahosted.org
> https://lists.fedorahosted.org/mailman/listinfo/sssd-devel
More information about the sssd-devel
mailing list