IBBoard / cawbird

A fork of the Corebird GTK Twitter client that continues to work with Twitter
https://ibboard.co.uk/cawbird/
GNU General Public License v3.0
310 stars 37 forks source link

"cawbird: error while loading shared libraries: ⁨librest-0.7.so⁩.0: cannot open shared object file: No such file or directory" #493

Closed ProfP30 closed 1 year ago

ProfP30 commented 1 year ago

Describe the bug Program halts with following error message: "cawbird: error while loading shared libraries: ⁨librest-0.7.so⁩.0: cannot open shared object file: No such file or directory"

To Reproduce Steps to reproduce the behavior:

  1. Launch Cawbird 1.5 in a shell.
  2. Watch the error messages appear

Expected behavior Cawbird should open up normally.

Screenshots cawbird_error

System details:

ProfP30 commented 1 year ago

Package "Librest" is available from the arch repo at current version 0.9.1-1 but not installed. Installing it changes nothing on the behaviour of Cawbird.

CodedOre commented 1 year ago

Is the librest package Arch provides compiled for libsoup 3? If yes, that's the issue: Cawbird still is on libsoup 2, and as far as I'm aware you can't mix libsoup 2 and 3 in the same program. However librest can only compiled for version 2 or 3, not both, so Arch probably picked the newer one.

Edit: Just checked on Arch's package website and yes, the librest package seems to use libsoup 3, so there's the issue.

See #464 as an related issue.

IBBoard commented 1 year ago

Yeah, sounds like it's a librest change if Arch has 0.9.1 in the repos (although the dependencies seem a bit broken if it's not pulled in a 0.8 version or said you've got to remove Cawbird, which is what I'd expect on Deb and RPM-based systems)

The problem is that all versions of Ubuntu up to 22.04, Debian up to Bullseye, all versions of CenOS, Fedora up to 36 and all openSUSE Leap versions still only have (and will only have) v0.8 and so migrating to 0.9 breaks our compatibility for them.

I understand they might have wanted to make breaking changes, but it's a very blinkered view that every app in a distro will be on one version of librest or the other and there won't be ones trying to use the newer/older version.

IBBoard commented 1 year ago

I had a quick poke around at this because it had been a while since I'd looked at librest and I'd forgotten where we were.

librest 0.9 removed OAuth1 support because "By today most providers should allow to authenticate with OAuth 2.0 and therefore i removed the OAuthProxy from librest" (emphasis mine). The Twitter v1 API doesn't support OAuth 2.

So we could have done conditional code to handle any API changes and supported both versions of the library. Except that librest killed off the part of the API that still works with Twitter v1 because most providers allow OAuth 2 authentication. Not all. Not even "all but the tiny, niche ones that are bit-rotting after five years of being unsupported and only have two regular users". But 'most'. Apparently Twitter isn't big enough for them to care about compatibility.

And Twitter (still?) haven't made Twitter v2 feature complete with v1, meaning that we couldn't migrate any sooner that CodedOre's rewrite.

I'm going to have to close this as "can't fix" and "external". People have to either wait for Cawbird 2.0 or get their distro to somehow package and release both versions of librest and libsoup (and hope that they don't conflict). Surely that's the point of .so numbers?

Impeta commented 1 year ago

@IBBoard @ProfP30 My apologizes for pinging, but just wanted to mention that simply installing "rest" (the legacy one) from Arch's extra community repositories solves this!

IBBoard commented 1 year ago

That's good to know. I'm glad Arch had both versions available. It seems like some distros (like Debian, surprisingly) are dropping the old version and breaking everything that isn't updated at the same time, so I thought it might not work.

Does suggest that the dependencies in Arch aren't quite right, though. It might be good to tell the packager.

ProfP30 commented 1 year ago

Thanks @Impeta for the info. Just wanted to confirm, that installing "rest" from Arch's extra community repository "workarounds" this issue, cawbird is useable again. Thanks a lot!