Subject: ffmpeg upgrade hell

From: Alex <[email-masked]>
Date: Wed, 13 Dec 2023 17:07:26 +0100

Recently, ffmpeg has been upgraded to 6.1 on Edge.

However, this upgrade didn't exactly go smoothly on my Edge desktop. To
elaborate, _some_ components were upgraded to 6.1, while some stayed on
6.0.1-r1. More specifically, these (ffmpeg too, tho I removed it
manually):

ffmpeg-libavcodec-6.1-r0 x86_64 {ffmpeg} (GPL-2.0-or-later AND
LGPL-2.1-or-later) [upgradable from: ffmpeg-libavcodec-6.0.1-r1]
ffmpeg-libavfilter-6.1-r0 x86_64 {ffmpeg} (GPL-2.0-or-later AND
LGPL-2.1-or-later) [upgradable from: ffmpeg-libavfilter-6.0.1-r1]
ffmpeg-libswresample-6.1-r0 x86_64 {ffmpeg} (GPL-2.0-or-later AND
LGPL-2.1-or-later) [upgradable from: ffmpeg-libswresample-6.0.1-r1]
ffplay-6.1-r0 x86_64 {ffmpeg} (GPL-2.0-or-later AND LGPL-2.1-or-later)
[upgradable from: ffplay-6.0.1-r1]

I noticed this after running the ffmpeg cli and getting errors about
symbols on /usr/lib/libavformat.so.60:

Error relocating /usr/lib/libavformat.so.60: av_packet_side_data_add:
symbol not found 
Error relocating /usr/lib/libavformat.so.60:
av_packet_side_data_get: symbol not found 
Error relocating
/usr/lib/libavformat.so.60: av_packet_side_data_new: symbol not found

I was able to (hopefully temporarily) remove dependencies on the ffmpeg
CLI program, and tried to install it again manually, to no avail.
Trying to apk add ffmpeg now returns this:

ERROR: unable to select packages:
  ffmpeg-libswresample-6.1-r0:
    conflicts: ffmpeg-libswresample-6.0.1-r1
    satisfies: world[ffmpeg-libswresample]
	ffmpeg-6.1-r0[so:libswresample.so.4]
	ffmpeg-libavcodec-6.1-r0[so:libswresample.so.4]
	ffmpeg-libavfilter-6.1-r0[so:libswresample.so.4]
	ffplay-6.1-r0[so:libswresample.so.4]
	ffmpeg-libswresample-6.0.1-r1: conflicts:
	ffmpeg-libswresample-6.1-r0 satisfies:
	world[ffmpeg-libswresample]
	libmgba-0.10.2-r1[so:libswresample.so.5]
	obs-studio-29.1.3-r0[so:libswresample.so.5]
	subtitlecomposer-0.8.0-r1[so:libswresample.so.5]

Unfortunately, can't really remove ffmpeg-libswresample without
removing XFCE.

Is this the fault of my setup, or is something like a rebuild pending?

-- 
Current PGP KeyID: 0AFB427F1800FD89751C4035292228735AE707FF

https://blueselene.com/pgp-archive/0AFB427F1800FD89751C4035292228735AE707FF/key.pub

---

From: Alex <[email-masked]>
Date: Wed, 13 Dec 2023 17:14:21 +0100

> More specifically, these (ffmpeg too, tho I removed it manually)

Correction: I think the ffmpeg CLI was actually upgraded to 6.1, if it
stayed on the previous version I would have likely not have found the
symbol errors. Sorry, by the time I ran apk list -I ffmpeg was already
removed, so can't confirm this.

---

From: Patrycja Rosa <[email-masked]>
Date: Wed, 13 Dec 2023 18:35:10 +0100

> Is this the fault of my setup, or is something like a rebuild pending?

there's two issues here:
- we removed a patch that bumps SONAME of a library, thus reverting it 
to the old number, but the dependent packages were not rebuilt
( you can see that in the long "unable to select packages" error, where 
the new stuff requires you to have .so.4, but the existing packages need 
.so.5 )
- ffmpeg introduced a new symbol to libavcodec, but didn't bump the 
SONAME; that allowed for installing the new libavformat ( which uses 
said symbol ) alongside old libavcodec ( because we just check for 
matching SONAME from DT_NEEDED )

both of them are known to us, and tracked on 
https://gitlab.alpinelinux.org/alpine/aports/-/issues/15577 as well as 
discussed on #alpine-devel on OFTC

---

From: Alex <[email-masked]>
Date: Thu, 14 Dec 2023 16:01:01 +0100

Thank you for the explanation Patrycja.

I also wanted to note that this has been fixed by rebuilding the
packages depending on ffmpeg, I was able to upgrade the components that
stayed on the previous version and now I have the ffmpeg CLI back!

Thank you very much to the Alpine devs for your work on the distro.