[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