LinuxQuestions.org
Latest LQ Deal: Latest LQ Deals
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Distributions > Slackware
User Name
Password
Slackware This Forum is for the discussion of Slackware Linux.

Notices


Reply
  Search this Thread
Old 09-09-2018, 03:19 PM   #1
Didier Spaier
LQ Addict
 
Registered: Nov 2008
Location: Paris, France
Distribution: Slint64-15.0
Posts: 11,089

Rep: Reputation: Disabled
How to check for backward compatibility of API and ABI of library.


Hello,

I sometimes hesitate to upgrade a software for myself or for Slint, if its requirements have changed.

For instance upgrading from MATE 1.18 to MATE 1.20 requires GTK 3.22 and GLib 2.50 or newer, but Slackware 14.2 (and Slint 14.2) ship GTK 3.18.9 and GLib2-2.46.

I have found this website: https://abi-laboratory.pro/ that seems helpful.

Keeping the examples above, for GTK looking at this page I see that changes introduced in version 3.20.0 could be worrisome. It appears from here that there could be issues with removal of symbols in libgdk3, detailed in this page, which also mentions size changes of a type and a field.

A similar check for Glib highlights possible issues due to changes introduced in versions 2.47.2, 2.48.1, 2.50 and 2.52.0.

This leads to these questions:
  • Is there a simple way to automatize checking of the installed binaries for usage of removed symbols, like running ldd or readelf?
  • Is there a way to check the possible effects of size changes in installed software?
  • If you have used https://abi-laboratory.pro/ what do you think of its reliability?
  • Are there other (and better) tools and methods to assess the possible issues when upgrading a library.
I will be grateful for answers, advises and pointers coming from anyone and especially Pat and Slackware contributors.

Last edited by Didier Spaier; 09-09-2018 at 10:12 PM. Reason: Duplicate word removed.
 
Old 09-09-2018, 04:28 PM   #2
a4z
Senior Member
 
Registered: Feb 2009
Posts: 1,727

Rep: Reputation: 742Reputation: 742Reputation: 742Reputation: 742Reputation: 742Reputation: 742Reputation: 742
if unsure, rebuild,
for Mate, if it says 3.20.0, and you use it with a lower version, rebuild to see what's missing. The version check for GTK lib is just something in the makefile / configure files, os it should be possible to fix.
if it's not compiling, you know, if it's compiling, use this build.
even if just minor changes, and the description is 'in a backward compatible manner', if the developers are not religious with compatibility, like Qt is, going down from minimum requirements is a good way to get in troubles.

the abi checker report you linked is useful, and the report says it, GDKEvent and scroll event have different binary size, so this is definitely a problem.
But I wonder if in this case the versioning of libgdk is as it should be ... maybe they are not that religious than others with there ABI compatibility
 
1 members found this post helpful.
Old 09-09-2018, 07:42 PM   #3
willysr
Senior Member
 
Registered: Jul 2004
Location: Jogja, Indonesia
Distribution: Slackware-Current
Posts: 4,687

Rep: Reputation: 1803Reputation: 1803Reputation: 1803Reputation: 1803Reputation: 1803Reputation: 1803Reputation: 1803Reputation: 1803Reputation: 1803Reputation: 1803Reputation: 1803
That's why i don't promote 3.20 to 14.2 supported releases since we all agreed that 3.20 is for newer GTK+3. It has been discussed by the upstream developers along with packagers. Slackware 14.2 has enjoyed several MATE releases and it's time for next Slackware to get the latest release of MATE
 
Old 09-09-2018, 11:27 PM   #4
dugan
LQ Guru
 
Registered: Nov 2003
Location: Canada
Distribution: distro hopper
Posts: 11,275

Rep: Reputation: 5341Reputation: 5341Reputation: 5341Reputation: 5341Reputation: 5341Reputation: 5341Reputation: 5341Reputation: 5341Reputation: 5341Reputation: 5341Reputation: 5341
I do know this:

If you upgrade FFMPEG, you generally need to rebuild everything that depends on it.
 
Old 09-10-2018, 02:34 AM   #5
a4z
Senior Member
 
Registered: Feb 2009
Posts: 1,727

Rep: Reputation: 742Reputation: 742Reputation: 742Reputation: 742Reputation: 742Reputation: 742Reputation: 742
this topic, btw, descripse the problem why I created sbbdep and why it has a --whoneeds option, to know what should (maybe) be rebuilded in case of an library update
 
Old 09-10-2018, 03:39 AM   #6
chrisretusn
Senior Member
 
Registered: Dec 2005
Location: Philippines
Distribution: Slackware64-current
Posts: 2,999

Rep: Reputation: 1565Reputation: 1565Reputation: 1565Reputation: 1565Reputation: 1565Reputation: 1565Reputation: 1565Reputation: 1565Reputation: 1565Reputation: 1565Reputation: 1565
sbbdep, a great tool indeed, use it a lot.
 
Old 09-10-2018, 04:36 AM   #7
kjhambrick
Senior Member
 
Registered: Jul 2005
Location: Round Rock, TX
Distribution: Slackware64 15.0 + Multilib
Posts: 2,159

Rep: Reputation: 1512Reputation: 1512Reputation: 1512Reputation: 1512Reputation: 1512Reputation: 1512Reputation: 1512Reputation: 1512Reputation: 1512Reputation: 1512Reputation: 1512
Yes, thumbs up for sbbdep.

Does sbbdep process packages other than SBo Packages ?

In addition to sbbdep, if what you need is an in-order list of prerequisites suitable for shell scripting, chris.willing's SBo tool hoorex works for me.

But `hoorex -r -m ${SomeSBoPackage}` only resolves SBo Prerequisite Packages for SomeSBoPackage ( or `hoorex -m ${SomeSBoPackage}` finds the inverse == what SBo Packages depend on SomeSBoPackage ? )...

I don't know of any tool that can check the required version of each Prerequisite Library or Program file actually installed on the system.

The hoorex scrripts builds a Package Index from the REQUIRES= Variable in each SBo.info file so it can tell me what I need but not the version I need of each PreReq.

Does sbbdep solve Didier Spaier's knotty problem of library version compatibility ?

If so, that would certainly be worth modifying my build scripts

Thanks.

-- kjh
 
Old 09-10-2018, 05:10 AM   #8
a4z
Senior Member
 
Registered: Feb 2009
Posts: 1,727

Rep: Reputation: 742Reputation: 742Reputation: 742Reputation: 742Reputation: 742Reputation: 742Reputation: 742
Quote:
Originally Posted by kjhambrick View Post
Does sbbdep process packages other than SBo Packages ?
packages of any source, of course, and binary files that are, or not, part of any package

I had also the option to run it over a folder, so that yo can use it in a build script after the make install step for the DEST dir, to get the list of required libraries, but I haven't used this for years now, so I do not know if this option still exits/works :-)

Quote:
Originally Posted by kjhambrick View Post
Does sbbdep solve Didier Spaier's knotty problem of library version compatibility ?
no, since this is a different problem and requires something total different, old lib - new lib and check if they are ABI compatible.

Last edited by a4z; 09-10-2018 at 05:12 AM.
 
  


Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
[SOLVED] Glibc backward compatibility simeon_z Linux - General 8 11-09-2016 03:48 PM
New Slackware 14 backward compatibility vdemuth Slackware 9 09-23-2012 07:18 PM
please explain api and abi nodisk Programming 1 12-21-2005 01:50 PM
Graphics, AGP and backward compatibility bigjohn Linux - Hardware 7 08-05-2005 05:17 AM
Backward compatibility lenucks General 4 06-27-2004 02:34 AM

LinuxQuestions.org > Forums > Linux Forums > Linux - Distributions > Slackware

All times are GMT -5. The time now is 04:57 PM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration