Bug 34586

Summary: ceph/common.so.0 упакован в librados2
Product: Sisyphus Reporter: Evgeny Sinelnikov <sin>
Component: cephAssignee: Alexey Shabalin <shaba>
Status: CLOSED NOTABUG QA Contact: qa-sisyphus
Severity: major    
Priority: P3 CC: shaba
Version: unstable   
Hardware: all   
OS: Linux   

Description Evgeny Sinelnikov 2018-02-26 15:42:40 MSK
Наткнулся на вот такой комментарий при сборке пакета зависящего от ceph:

commit 666c6802cbe148356b1b2b19893ce43d3521343a
Author: David Disseldorp <ddiss@suse.de>
Date:   Thu Jul 20 11:10:57 2017 +0200

    build: fix ceph_statx check when configured with libcephfs_dir
    
    When configured with a custom libcephfs_dir, the ceph_statx check fails
    to link. This is due to the location of the ceph-common dependency,
    which is installed under a ceph subdirectory.
    
    ceph/build > make DESTDIR=./inst install
    ...
    ceph/build > find inst/|grep -e /libcephfs -e /libceph-common
    inst/usr/local/lib64/ceph/libceph-common.so.0
    inst/usr/local/lib64/ceph/libceph-common.so
    inst/usr/local/lib64/libcephfs.so.2.0.0
    inst/usr/local/lib64/libcephfs.so.2
    inst/usr/local/lib64/libcephfs.so
    inst/usr/local/include/cephfs/libcephfs.h
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=13250
    
    Signed-off-by: David Disseldorp <ddiss@suse.de>
    Reviewed-by: Jeff Layton <jlayton@samba.org>
    
    (cherry picked from commit ff7df3d3f5259362a6bb6780d6b532e57e89681d)
    
    Autobuild-User(v4-6-test): Karolin Seeger <kseeger@samba.org>
    Autobuild-Date(v4-6-test): Tue Feb 13 13:36:13 CET 2018 on sn-devel-144

Вопрос. А разве правильно, что /usr/lib64/ceph/common.so.0 упакован в пакет librados2, а не в libcephfs2?
Comment 1 Alexey Shabalin 2018-02-27 12:23:12 MSK
(В ответ на комментарий №0)
> Вопрос. А разве правильно, что /usr/lib64/ceph/common.so.0 упакован в пакет
> librados2, а не в libcephfs2?
Скорее да. libcephfs2 нужен не так многим, а librados2 нужен всем, кто использует ceph.
Т.к. /usr/lib64/librados.so.2 слинкован с /usr/lib64/ceph/common.so.0, то и упакован в этот же пакет. Как вариант, можно упаковать /usr/lib64/ceph/common.so.0 в отдельный пакет, но от этого мало пользы, сам по себе он никому не нужен.
Comment 2 Alexey Shabalin 2018-02-27 12:27:45 MSK
кстати, и в RH, и в debian, /usr/lib64/ceph/common.so.0 тоже в пакете librados.
Comment 3 Evgeny Sinelnikov 2018-02-28 12:11:03 MSK
Честно говоря, я пока не понимаю как оно у них собирается. Думаю, что RH и CentOS не имеет смысла смотреть:
http://src.fedoraproject.org/rpms/samba
...
%global with_vfs_cephfs 0
%if 0%{?fedora}
%ifarch aarch64 ppc64le s390x x86_64
%global with_vfs_cephfs 1
%endif
%endif

Да, и на i586 тоже получается.
Comment 4 Evgeny Sinelnikov 2018-02-28 12:12:42 MSK
А... Ну, у них тоже есть костыль:

From ebae8df5e4b955f235cdeb629e99d32d35766d65 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?G=C3=BCnther=20Deschner?= <gd@samba.org>
Date: Mon, 15 Jan 2018 23:20:39 +0100
Subject: [PATCH] FIXME: build: fix libceph-common detection

Guenther

Signed-off-by: Guenther Deschner <gd@samba.org>
---
 source3/wscript | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/source3/wscript b/source3/wscript
index 0f8fe5452da..4eba0103be8 100644
--- a/source3/wscript
+++ b/source3/wscript
@@ -1540,6 +1540,8 @@ main() {
         conf.env['CPPPATH_CEPHFS'] = Options.options.libcephfs_dir + '/include'
         conf.env['LIBPATH_CEPHFS'] = Options.options.libcephfs_dir + '/lib'
         conf.env['LIBPATH_CEPH-COMMON'] = Options.options.libcephfs_dir + '/lib/ceph'
+    else:
+        conf.env['LIBPATH_CEPH-COMMON'] = Options.options.LIBDIR + '/ceph'
 
     if (Options.options.with_cephfs and
         conf.CHECK_HEADERS('cephfs/libcephfs.h', False, False, 'cephfs') and
-- 
2.14.3
Comment 5 Evgeny Sinelnikov 2018-02-28 12:14:22 MSK
Наверное, у них даже по-изящнее, чем у меня получилось:
http://git.altlinux.org/people/sin/packages/samba.git?p=samba.git;a=commitdiff;h=9a24e06ad5071756737ba8efda51cc29c646be9f