Util-Linux Archive on lore.kernel.org
 help / Atom feed
* why do I get this:/bin/findmnt.suse: /lib64/libsmartcols.so.1: version `SMARTCOLS_2.25' not found (required by /bin/findmnt.suse)
@ 2018-08-27  5:27 L A Walsh
  2018-08-30  9:20 ` Karel Zak
  0 siblings, 1 reply; 2+ messages in thread
From: L A Walsh @ 2018-08-27  5:27 UTC (permalink / raw)
  To: util-linux

when smartcols.sym has a whole section with 2.25 syms in it.

What is the point of embedding mixing symbols with versions if they 
don't work?
I.e. the 2.25 version of the symbols is in the lib, but findmnt linked 
against 2.25 doesn't work cuz it can't access that specific label. 
(sources from
2.32.1).  

I don't understand why the symbols are versioned in a library that 
doesn't appear to have anything other than a normal symbol table.

So why are these symbols versioned if they don't work?  They seem to 
prevent earlier versions of programs from working with later libs even 
though they are compatible.

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: why do I get this:/bin/findmnt.suse: /lib64/libsmartcols.so.1: version `SMARTCOLS_2.25' not found (required by /bin/findmnt.suse)
  2018-08-27  5:27 why do I get this:/bin/findmnt.suse: /lib64/libsmartcols.so.1: version `SMARTCOLS_2.25' not found (required by /bin/findmnt.suse) L A Walsh
@ 2018-08-30  9:20 ` Karel Zak
  0 siblings, 0 replies; 2+ messages in thread
From: Karel Zak @ 2018-08-30  9:20 UTC (permalink / raw)
  To: L A Walsh; +Cc: util-linux

On Sun, Aug 26, 2018 at 10:27:10PM -0700, L A Walsh wrote:
> when smartcols.sym has a whole section with 2.25 syms in it.
> 
> What is the point of embedding mixing symbols with versions if they don't
> work?

?

> I.e. the 2.25 version of the symbols is in the lib, but findmnt linked
> against 2.25 doesn't work cuz it can't access that specific label. (sources
> from
> 2.32.1).

Not sure if I understand. findmnt with symbols from 2.25 will work
with library from 2.32 as the library provides all previous versions
too.

For example:

 LD_LIBRARY_PATH=/home/projects/util-linux/util-linux/.libs/ /usr/bin/findmnt

allows me to run old findmnt 2.30.2 (fedora 27) against library from
current git tree (v2.33).


> I don't understand why the symbols are versioned in a library that doesn't
> appear to have anything other than a normal symbol table.

* list of symbols defines the library API. It's better to have
  explicit list in the .sym file than depend on static/extern keywords
  in the code.

* symbols versioning is fine grained solution. The library does not need to 
  change library soname version; symbols versioning provides the same 
  functionality on symbols level.

* library is ready for future incompatible changes

* versioned symbols allow to create explicit dependence between binary
  and library. This is used for example by distribution packaging
  systems (e.g. rpm) where package with binary requires specific
  symbols and package with library provides the symbols. It's better
  than dependence on library soname.

* binary with new symbols will not executed against library with old
  symbols only.

> So why are these symbols versioned if they don't work?  They seem to prevent
> earlier versions of programs from working with later libs even though they
> are compatible.

It's not true if the library provides old versions too.

See excellent Ulrich's shared library howto for more details (chapter 3.3):
https://software.intel.com/sites/default/files/m/a/1/e/dsohowto.pdf

   Karel

-- 
 Karel Zak  <kzak@redhat.com>
 http://karelzak.blogspot.com

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, back to index

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-08-27  5:27 why do I get this:/bin/findmnt.suse: /lib64/libsmartcols.so.1: version `SMARTCOLS_2.25' not found (required by /bin/findmnt.suse) L A Walsh
2018-08-30  9:20 ` Karel Zak

Util-Linux Archive on lore.kernel.org

Archives are clonable: git clone --mirror https://lore.kernel.org/util-linux/0 util-linux/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 util-linux util-linux/ https://lore.kernel.org/util-linux \
		util-linux@vger.kernel.org util-linux@archiver.kernel.org
	public-inbox-index util-linux


Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.util-linux


AGPL code for this site: git clone https://public-inbox.org/ public-inbox