Bug 36410

Summary: в libsane-1.0.27-alt4 часть libsane продублирована в каждом модуле
Product: Sisyphus Reporter: Dmitry V. Levin <ldv>
Component: libsaneAssignee: Vitaly Lipatov <lav>
Status: REOPENED --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: lav, mike, nickel
Version: unstable   
Hardware: all   
OS: Linux   

Description Dmitry V. Levin 2019-03-26 03:31:17 MSK
Например,
$ LC_ALL=C comm -12 \
<(/usr/lib/rpm/provided_symbols /usr/lib6/libsane.so.1.0.27) \
<(/usr/lib/rpm/provided_symbols /usr/lib64/sane/libsane-test.so.1.0.27)
md5_buffer
md5_finish_ctx
md5_init_ctx
md5_process_block
md5_process_bytes
md5_read_ctx
md5_stream
sane_cancel
sane_close
sane_control_option
sane_exit
sane_get_devices
sane_get_option_descriptor
sane_get_parameters
sane_get_select_fd
sane_init
sane_open
sane_read
sane_set_io_mode
sane_start
sane_strstatus
sanei_check_value
sanei_config_get_paths
sanei_config_get_string
sanei_config_open
sanei_config_read
sanei_config_skip_whitespace
sanei_configure_attach
sanei_constrain_value
sanei_debug_msg
sanei_debug_sanei_config
sanei_debug_sanei_debug
sanei_debug_sanei_thread
sanei_init_debug
sanei_thread_begin
sanei_thread_get_status
sanei_thread_init
sanei_thread_is_forked
sanei_thread_is_valid
sanei_thread_kill
sanei_thread_sendsig
sanei_thread_waitpid
Comment 1 Vitaly Lipatov 2024-06-04 23:16:46 MSK
Так задумано, что portable-слой собирается внутри статической библиотекой, которая линкуется к каждому модулю.
Линковаться с libsane у модулей не принято. Видимо, потому что это libsane подгружает модуль, и никаких требований к этому модулю не предъявляется (касательно версии libsane). В совокупности выглядит как средство обеспечить высокий уровень переносимости модулей.

$ cd lib
$ ls -1
alloca.c
getenv.c
getopt1.c
getopt.c
inet_ntop.c
inet_pton.c
Makefile.am
md5.c
sigprocmask.c
sleep.c
snprintf.c
strcasestr.c
strdup.c
strndup.c
strsep.c
syslog.c
usleep.c
vsyslog.c


$ cat Makefile.am
##  Makefile.am -- an automake template for Makefile.in file
##  Copyright (C) 2009 Chris Bagwell and Sane Developers.
##
##  This file is part of the "Sane" build infra-structure.  See
##  included LICENSE file for license information.
AM_CPPFLAGS += -I. -I$(top_builddir)/include -I$(top_srcdir)/include

noinst_LTLIBRARIES = liblib.la

liblib_la_SOURCES  = md5.c
liblib_la_CPPFLAGS = -I$(top_srcdir)/include
liblib_la_LIBADD   = $(LTALLOCA) $(LTLIBOBJS)
Comment 2 Dmitry V. Levin 2024-06-05 00:04:51 MSK
Ошибка в дизайне библиотеки - это же ещё большая ошибка, чем оплошность в реализации.