Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove libqalculate22 from recommends on Debian for OBS builds #1418

Closed
eatyourbaby opened this issue Aug 6, 2024 · 9 comments
Closed

Remove libqalculate22 from recommends on Debian for OBS builds #1418

eatyourbaby opened this issue Aug 6, 2024 · 9 comments
Assignees
Labels
Bug P3 Medium Fix, but can wait if there's more import stuff to do. C: CI/CD Issue related to CI/CD Help wanted Much appreciated!

Comments

@eatyourbaby
Copy link

eatyourbaby commented Aug 6, 2024

Package source

OBS

App logs

N/A

Current Behavior

The current Debian control file for OBS builds blanketly recommends libqalculate22 as a dependency. A recent libqalculate update led to a soname bump from libqalculate22 to libqalculate23, and thus libqalculate22 no longer exists in their repo. Since the control file also specifies ${shlibs:Depends} as a dependency, the correct version, currently libqalculate23, is automatically added to the dependency list. Therefore manually listing libqalculate22 in recommends is not necessary.

Expected Behavior

Remove libqalculate22 from recommends.

Anything else?

No response

@ManuelSchneid3r
Copy link
Member

i wonder why debian packages the lib this weird way. why isnt there simply a libqalculate libqalculate5 libqalculate5.2 and such?

@eatyourbaby
Copy link
Author

eatyourbaby commented Aug 6, 2024

This is to identify and handle breaking ABI changes. According to Debian Policy,

Every time the shared library ABI changes in a way that could break binaries linked against older versions of the shared library, the SONAME of the library and the corresponding name for the binary package containing the runtime shared library should change. Normally, this means the SONAME should change any time an interface is removed from the shared library or the signature of an interface (the number of parameters or the types of parameters that it takes, for example) is changed. This practice is vital to allowing clean upgrades from older versions of the package and clean transitions between the old ABI and new ABI without having to upgrade every affected package simultaneously.

@ManuelSchneid3r
Copy link
Member

But this is handled by the library itself right? i mean i guess they follow semantic verisoning and as such the major version atm 5.x should take care of this, shouldnt it?

@eatyourbaby
Copy link
Author

Yes, SONAME is handled by the library developers themselves. When libqalculate updated from 4.x to 5.x, they bumped SONAME to 22 to 23 (Qalculate/libqalculate#633). Therefore, I'm not sure if their SONAME follows semantic versioning even if their software version follows it.

Since you're building against libqalculate-dev, it will always be the latest version available, so you don't need to worry about updating build-deps. The only thing is to bump the libqalculate[xx]'s SONAME to match it every once in a while.

@ManuelSchneid3r
Copy link
Member

I wonder why the library name contains the version at all. Usually the libraries have no version in their name and let the package manager handle the versions using metadata. It makes no sense to me because assuming they don't break ABI upstream ABI should match API and the version of the dev package should match the lib package. Is this done by package managers or upstream?

@ManuelSchneid3r
Copy link
Member

I wonder if this is the packagers responsibility or if it should rather be fixed upstream. This is a mess for the build system because I have to provide deb files for each distro. Currently all distros are built using one general dst and control file

@ManuelSchneid3r ManuelSchneid3r added Bug P3 Medium Fix, but can wait if there's more import stuff to do. C: CI/CD Issue related to CI/CD labels Aug 19, 2024
@ManuelSchneid3r
Copy link
Member

Although it recommends a package that does not exist it should work if you install libqalculate manually, right? I am not a deb guru and probably could use some help. I read that the rules file could be used to conditionally set the lib used.

@ManuelSchneid3r ManuelSchneid3r added the Help wanted Much appreciated! label Aug 19, 2024
@eatyourbaby
Copy link
Author

I must apologize that I missed an important line when I was skimming the dependency list for the current albert package. It already depends on the libqalculate23 package because you have ${shlibs:Depends} in the Debian control file. shlibs allows the Debian build system to automatically add the correct shared libraries to the package dependency list from Build-Depends.

I wasn't sure why libqalculate22 was added to recommends in the first place, but it wasn't necessary and I got distracted by the warning message. You can remove libqalculate22 from recommends instead and I will edit the issue accordingly.

@eatyourbaby eatyourbaby changed the title Depend on libqalculate23 on Debian testing for OBS builds Remove libqalculate22 from recommends on Debian for OBS builds Aug 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug P3 Medium Fix, but can wait if there's more import stuff to do. C: CI/CD Issue related to CI/CD Help wanted Much appreciated!
Development

No branches or pull requests

2 participants