From 2a43e2c0bb1ececf05cf083f84afee2a65d784f936ce5c16529d7ef994d57152 Mon Sep 17 00:00:00 2001 From: Jan Engelhardt Date: Sat, 4 Jul 2020 22:16:36 +0000 Subject: [PATCH] - Add soversion.patch to workaround upstream ABI breakage. OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/ffmpeg-4?expand=0&rev=125 --- baselibs.conf | 18 ++--- ffmpeg-4.changes | 5 ++ ffmpeg-4.spec | 169 ++++++++++++++++++++++++----------------------- soversion.patch | 41 ++++++++++++ 4 files changed, 140 insertions(+), 93 deletions(-) create mode 100644 soversion.patch diff --git a/baselibs.conf b/baselibs.conf index a1e21dc..aa2578a 100644 --- a/baselibs.conf +++ b/baselibs.conf @@ -1,9 +1,9 @@ -libavcodec58 -libavdevice58 -libavfilter7 -libavformat58 -libavresample4 -libavutil56 -libpostproc55 -libswresample3 -libswscale5 +libavcodec58suse0 +libavdevice58suse0 +libavfilter7suse0 +libavformat58suse0 +libavresample4suse0 +libavutil56suse0 +libpostproc55suse0 +libswresample3suse0 +libswscale5suse0 diff --git a/ffmpeg-4.changes b/ffmpeg-4.changes index fd5c9b4..e4eab4e 100644 --- a/ffmpeg-4.changes +++ b/ffmpeg-4.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Sat Jul 4 22:09:51 UTC 2020 - Jan Engelhardt + +- Add soversion.patch to workaround upstream ABI breakage. + ------------------------------------------------------------------- Wed Jun 17 16:32:04 UTC 2020 - Jan Engelhardt diff --git a/ffmpeg-4.spec b/ffmpeg-4.spec index 9a66f75..8142d48 100644 --- a/ffmpeg-4.spec +++ b/ffmpeg-4.spec @@ -111,6 +111,7 @@ Patch1: ffmpeg-arm6l.diff Patch2: ffmpeg-new-coder-errors.diff Patch3: ffmpeg-codec-choice.diff Patch4: ffmpeg-4.2-dlopen-fdk_aac.patch +Patch5: soversion.patch BuildRequires: ladspa-devel BuildRequires: libgsm-devel BuildRequires: libmp3lame-devel @@ -198,7 +199,7 @@ BuildRequires: pkgconfig(xcb-shm) BuildRequires: pkgconfig(xcb-xfixes) BuildRequires: pkgconfig(xext) BuildRequires: pkgconfig(xfixes) -%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150200 +%if 0%{?suse_version} >= 1550 || 0%{?xsle_version} >= 150200 %ifarch x86_64 BuildRequires: pkgconfig(libmfx) %endif @@ -236,15 +237,15 @@ Provides: ffmpeg-tools = %version Obsoletes: ffmpeg-tools < %version Provides: ffmpeg = %version Obsoletes: ffmpeg < %version -Requires: libavcodec58 = %version-%release -Requires: libavdevice58 = %version-%release -Requires: libavfilter7 = %version-%release -Requires: libavformat58 = %version-%release -Requires: libavresample4 = %version-%release -Requires: libavutil56 = %version-%release -Requires: libpostproc55 = %version-%release -Requires: libswresample3 = %version-%release -Requires: libswscale5 = %version-%release +Requires: libavcodec58suse0 = %version-%release +Requires: libavdevice58suse0 = %version-%release +Requires: libavfilter7suse0 = %version-%release +Requires: libavformat58suse0 = %version-%release +Requires: libavresample4suse0 = %version-%release +Requires: libavutil56suse0 = %version-%release +Requires: libpostproc55suse0 = %version-%release +Requires: libswresample3suse0 = %version-%release +Requires: libswscale5suse0 = %version-%release %description FFmpeg is a multimedia framework, able to decode, encode, @@ -255,12 +256,12 @@ that humans and machines have created. This build of ffmpeg is limited in the number of codecs supported. %endif -%package -n libavcodec58 +%package -n libavcodec58suse0 Summary: FFmpeg codec library # For mozillas Group: System/Libraries -Requires: libavutil56 = %version-%release -Requires: libswresample3 = %version-%release +Requires: libavutil56suse0 = %version-%release +Requires: libswresample3suse0 = %version-%release Provides: libavcodec = %version-%release %if 0%{?BUILD_ORIG} Provides: libavcodec-full = %version-%release @@ -268,7 +269,7 @@ Provides: libavcodec-full = %version-%release Provides: libavcodec58(unrestricted) %endif -%description -n libavcodec58 +%description -n libavcodec58suse0 The libavcodec library provides a generic encoding/decoding framework and contains multiple decoders and encoders for audio, video and subtitle streams, and several bitstream filters. @@ -284,7 +285,7 @@ Provides: libavcodec-devel = %version-%release Obsoletes: libavcodec-devel < %version-%release Requires: %name-libavresample-devel = %version-%release Requires: %name-libavutil-devel = %version-%release -Requires: libavcodec58 = %version-%release +Requires: libavcodec58suse0 = %version-%release %devel_conflicts -c < -v %_major_version %devel_conflicts -c >= -v %_major_expected @@ -295,15 +296,15 @@ subtitle streams, and several bitstream filters. This subpackage contains the headers for FFmpeg libavcodec. -%package -n libavdevice58 +%package -n libavdevice58suse0 Summary: FFmpeg device library Group: System/Libraries -Requires: libavcodec58 = %version-%release -Requires: libavfilter7 = %version-%release -Requires: libavformat58 = %version-%release -Requires: libavutil56 = %version-%release +Requires: libavcodec58suse0 = %version-%release +Requires: libavfilter7suse0 = %version-%release +Requires: libavformat58suse0 = %version-%release +Requires: libavutil56suse0 = %version-%release -%description -n libavdevice58 +%description -n libavdevice58suse0 The libavdevice library provides a generic framework for grabbing from and rendering to many common multimedia input/output devices, and supports several input and output devices, including Video4Linux2, VfW, @@ -324,7 +325,7 @@ Requires: %name-libavutil-devel = %version-%release Requires: %name-libpostproc-devel = %version-%release Requires: %name-libswresample-devel = %version-%release Requires: %name-libswscale-devel = %version-%release -Requires: libavdevice58 = %version-%release +Requires: libavdevice58suse0 = %version-%release %devel_conflicts -c < -v %_major_version %devel_conflicts -c >= -v %_major_expected @@ -336,18 +337,18 @@ DShow, and ALSA. This subpackage contains the headers for FFmpeg libavcodec. -%package -n libavfilter7 +%package -n libavfilter7suse0 Summary: FFmpeg audio and video filtering library Group: System/Libraries -Requires: libavcodec58 = %version-%release -Requires: libavformat58 = %version-%release -Requires: libavresample4 = %version-%release -Requires: libavutil56 = %version-%release -Requires: libpostproc55 = %version-%release -Requires: libswresample3 = %version-%release -Requires: libswscale5 = %version-%release +Requires: libavcodec58suse0 = %version-%release +Requires: libavformat58suse0 = %version-%release +Requires: libavresample4suse0 = %version-%release +Requires: libavutil56suse0 = %version-%release +Requires: libpostproc55suse0 = %version-%release +Requires: libswresample3suse0 = %version-%release +Requires: libswscale5suse0 = %version-%release -%description -n libavfilter7 +%description -n libavfilter7suse0 The libavfilter library provides a generic audio/video filtering framework containing several filters, sources and sinks. @@ -363,7 +364,7 @@ Requires: %name-libavutil-devel = %version-%release Requires: %name-libpostproc-devel = %version-%release Requires: %name-libswresample-devel = %version-%release Requires: %name-libswscale-devel = %version-%release -Requires: libavfilter7 = %version-%release +Requires: libavfilter7suse0 = %version-%release %devel_conflicts -c < -v %_major_version %devel_conflicts -c >= -v %_major_expected @@ -373,13 +374,13 @@ framework containing several filters, sources and sinks. This subpackage contains the headers for FFmpeg libavfilter. -%package -n libavformat58 +%package -n libavformat58suse0 Summary: FFmpeg's stream format library Group: System/Libraries -Requires: libavcodec58 = %version-%release -Requires: libavutil56 = %version-%release +Requires: libavcodec58suse0 = %version-%release +Requires: libavutil56suse0 = %version-%release -%description -n libavformat58 +%description -n libavformat58suse0 The libavformat library provides a generic framework for multiplexing and demultiplexing (muxing and demuxing) audio, video and subtitle streams. It encompasses multiple muxers and demuxers for multimedia @@ -397,7 +398,7 @@ Obsoletes: libavformat-devel < %version-%release Requires: %name-libavcodec-devel = %version-%release Requires: %name-libavutil-devel = %version-%release Requires: %name-libswresample-devel = %version-%release -Requires: libavformat58 = %version-%release +Requires: libavformat58suse0 = %version-%release %devel_conflicts -c < -v %_major_version %devel_conflicts -c >= -v %_major_expected @@ -409,12 +410,12 @@ container formats. This subpackage contains the headers for FFmpeg libavformat. -%package -n libavresample4 +%package -n libavresample4suse0 Summary: FFmpeg alternate audio resampling library Group: System/Libraries -Requires: libavutil56 = %version-%release +Requires: libavutil56suse0 = %version-%release -%description -n libavresample4 +%description -n libavresample4suse0 An audio resampling library that is being provided for drop-in compatibility with libav. @@ -426,7 +427,7 @@ Group: Development/Libraries/C and C++ Provides: libavresample-devel = %version-%release Obsoletes: libavresample-devel < %version-%release Requires: %name-libavutil-devel = %version-%release -Requires: libavresample4 = %version-%release +Requires: libavresample4suse0 = %version-%release %devel_conflicts -c < -v %_major_version %devel_conflicts -c >= -v %_major_expected @@ -438,11 +439,11 @@ It is advised to use libswresample for new code. This subpackage contains the headers for FFmpeg's copy of libavresample. -%package -n libavutil56 +%package -n libavutil56suse0 Summary: FFmpeg's utility library Group: System/Libraries -%description -n libavutil56 +%description -n libavutil56suse0 The libavutil library is a utility library to aid portable multimedia programming. It contains safe portable string functions, random number generators, data structures, additional mathematics functions, @@ -454,7 +455,7 @@ Summary: Development files for FFmpeg's utility library Group: Development/Libraries/C and C++ Provides: libavutil-devel = %version-%release Obsoletes: libavutil-devel < %version-%release -Requires: libavutil56 = %version-%release +Requires: libavutil56suse0 = %version-%release %devel_conflicts -c < -v %_major_version %devel_conflicts -c >= -v %_major_expected @@ -467,12 +468,12 @@ for pixel and sample formats). This subpackage contains the headers for FFmpeg libavutil. -%package -n libpostproc55 +%package -n libpostproc55suse0 Summary: FFmpeg post-processing library Group: System/Libraries -Requires: libavutil56 = %version-%release +Requires: libavutil56suse0 = %version-%release -%description -n libpostproc55 +%description -n libpostproc55suse0 A library with video postprocessing filters, such as deblocking and deringing filters, noise reduction, automatic contrast and brightness correction, linear/cubic interpolating deinterlacing. @@ -483,7 +484,7 @@ Group: Development/Libraries/C and C++ Provides: libpostproc-devel = %version-%release Obsoletes: libpostproc-devel < %version-%release Requires: %name-libavutil-devel = %version-%release -Requires: libpostproc55 = %version-%release +Requires: libpostproc55suse0 = %version-%release %devel_conflicts -c < -v %_major_version %devel_conflicts -c >= -v %_major_expected @@ -494,12 +495,12 @@ correction, linear/cubic interpolating deinterlacing. This subpackage contains the headers for FFmpeg libpostproc. -%package -n libswresample3 +%package -n libswresample3suse0 Summary: FFmpeg software resampling library Group: System/Libraries -Requires: libavutil56 = %version-%release +Requires: libavutil56suse0 = %version-%release -%description -n libswresample3 +%description -n libswresample3suse0 The libswresample library performs audio conversion between different sample rates, channel layout and channel formats. @@ -509,7 +510,7 @@ Group: Development/Libraries/C and C++ Provides: libswresample-devel = %version-%release Obsoletes: libswresample-devel < %version-%release Requires: %name-libavutil-devel = %version-%release -Requires: libswresample3 = %version-%release +Requires: libswresample3suse0 = %version-%release %devel_conflicts -c < -v %_major_version %devel_conflicts -c >= -v %_major_expected @@ -519,12 +520,12 @@ sample rates, channel layout and channel formats. This subpackage contains the headers for FFmpeg libswresample. -%package -n libswscale5 +%package -n libswscale5suse0 Summary: FFmpeg image scaling and colorspace/pixel conversion library Group: System/Libraries -Requires: libavutil56 = %version-%release +Requires: libavutil56suse0 = %version-%release -%description -n libswscale5 +%description -n libswscale5suse0 The libswscale library performs image scaling and colorspace and pixel format conversion operations. @@ -534,7 +535,7 @@ Group: Development/Libraries/C and C++ Provides: libswscale-devel = %version-%release Conflicts: libswscale-devel Requires: %name-libavutil-devel = %version-%release -Requires: libswscale5 = %version-%release +Requires: libswscale5suse0 = %version-%release %devel_conflicts -c < -v %_major_version %devel_conflicts -c >= -v %_major_expected @@ -675,7 +676,7 @@ LDFLAGS="%_lto_cflags" \ %if %{with lv2} --enable-lv2 \ %endif -%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150200 +%if 0%{?suse_version} >= 1550 || 0%{?xsle_version} >= 150200 %ifarch x86_64 --enable-libmfx \ %endif @@ -746,24 +747,24 @@ for i in libavformat/options_table.h libavformat/os_support.h \ cp -a $i "$b/%_includedir/ffmpeg/private/$i" done -%post -n libavcodec58 -p /sbin/ldconfig -%postun -n libavcodec58 -p /sbin/ldconfig -%post -n libavdevice58 -p /sbin/ldconfig -%postun -n libavdevice58 -p /sbin/ldconfig -%post -n libavfilter7 -p /sbin/ldconfig -%postun -n libavfilter7 -p /sbin/ldconfig -%post -n libavformat58 -p /sbin/ldconfig -%postun -n libavformat58 -p /sbin/ldconfig -%post -n libavresample4 -p /sbin/ldconfig -%postun -n libavresample4 -p /sbin/ldconfig -%post -n libavutil56 -p /sbin/ldconfig -%postun -n libavutil56 -p /sbin/ldconfig -%post -n libpostproc55 -p /sbin/ldconfig -%postun -n libpostproc55 -p /sbin/ldconfig -%post -n libswresample3 -p /sbin/ldconfig -%postun -n libswresample3 -p /sbin/ldconfig -%post -n libswscale5 -p /sbin/ldconfig -%postun -n libswscale5 -p /sbin/ldconfig +%post -n libavcodec58suse0 -p /sbin/ldconfig +%postun -n libavcodec58suse0 -p /sbin/ldconfig +%post -n libavdevice58suse0 -p /sbin/ldconfig +%postun -n libavdevice58suse0 -p /sbin/ldconfig +%post -n libavfilter7suse0 -p /sbin/ldconfig +%postun -n libavfilter7suse0 -p /sbin/ldconfig +%post -n libavformat58suse0 -p /sbin/ldconfig +%postun -n libavformat58suse0 -p /sbin/ldconfig +%post -n libavresample4suse0 -p /sbin/ldconfig +%postun -n libavresample4suse0 -p /sbin/ldconfig +%post -n libavutil56suse0 -p /sbin/ldconfig +%postun -n libavutil56suse0 -p /sbin/ldconfig +%post -n libpostproc55suse0 -p /sbin/ldconfig +%postun -n libpostproc55suse0 -p /sbin/ldconfig +%post -n libswresample3suse0 -p /sbin/ldconfig +%postun -n libswresample3suse0 -p /sbin/ldconfig +%post -n libswscale5suse0 -p /sbin/ldconfig +%postun -n libswscale5suse0 -p /sbin/ldconfig %files %doc Changelog CREDITS README.md @@ -771,39 +772,39 @@ done %_mandir/man1/ff*.1* %_datadir/ffmpeg/ -%files -n libavcodec58 +%files -n libavcodec58suse0 %license COPYING.GPLv2 LICENSE.md %_libdir/libavcodec.so.* -%files -n libavdevice58 +%files -n libavdevice58suse0 %license COPYING.GPLv2 LICENSE.md %_libdir/libavdevice.so.* -%files -n libavfilter7 +%files -n libavfilter7suse0 %license COPYING.GPLv2 LICENSE.md %_libdir/libavfilter.so.* -%files -n libavformat58 +%files -n libavformat58suse0 %license COPYING.GPLv2 LICENSE.md %_libdir/libavformat.so.* -%files -n libavresample4 +%files -n libavresample4suse0 %license COPYING.GPLv2 LICENSE.md %_libdir/libavresample.so.* -%files -n libavutil56 +%files -n libavutil56suse0 %license COPYING.GPLv2 LICENSE.md %_libdir/libavutil.so.* -%files -n libpostproc55 +%files -n libpostproc55suse0 %license COPYING.GPLv2 LICENSE.md %_libdir/libpostproc.so.* -%files -n libswresample3 +%files -n libswresample3suse0 %license COPYING.GPLv2 LICENSE.md %_libdir/libswresample.so.* -%files -n libswscale5 +%files -n libswscale5suse0 %license COPYING.GPLv2 LICENSE.md %_libdir/libswscale.so.* diff --git a/soversion.patch b/soversion.patch new file mode 100644 index 0000000..911455a --- /dev/null +++ b/soversion.patch @@ -0,0 +1,41 @@ +From: Jan Engelhardt +Date: 2020-07-04 23:56:54.411950316 +0200 + +User frispete wrote on 2020-6-26 22:13+0000 at +https://build.opensuse.org/package/show/multimedia:libs/ffmpeg-4#comment-1257440 +: """Unfortunately, this version is binary incompatible to 4.2.3 in some +aspects. Chromium crashes when accessing some sites, e.g. +https://www.xometry.com/ and push the quote button. Blender cannot export PNG +files anymore""" + +And indeed: + +$ abidiff b42/usr/lib/debug/usr/lib64/libavcodec.so.58.54.100-4.2.3-1.1.x86_64.debug \ + b43/usr/lib/debug/usr/lib64/libavcodec.so.58.91.100-4.3-136.2.x86_64.debug + + [...] in pointed to type 'struct AVCodecContext' at avcodec.h:526:1: + type size changed from 8448 to 8576 (in bits) + [...] + underlying type 'struct AVDCT' at avdct.h:29:1 changed: + type size changed from 896 to 960 (in bits) + +As this struct is made public by way of presenting it in /usr/include, +I conclude: bad upstream, bad upstream! + +--- + configure | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: ffmpeg-4.3/configure +=================================================================== +--- ffmpeg-4.3.orig/configure ++++ ffmpeg-4.3/configure +@@ -3794,7 +3794,7 @@ SLIBPREF="lib" + SLIBSUF=".so" + SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)' + SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)' +-SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)' ++SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)suse0' + LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"' + SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)' + SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'