diff --git a/baselibs.conf b/baselibs.conf index aa2578a..9c1a05c 100644 --- a/baselibs.conf +++ b/baselibs.conf @@ -1,9 +1,9 @@ -libavcodec58suse0 -libavdevice58suse0 -libavfilter7suse0 -libavformat58suse0 -libavresample4suse0 -libavutil56suse0 -libpostproc55suse0 -libswresample3suse0 -libswscale5suse0 +libavcodec58_91 +libavdevice58_10 +libavfilter7_85 +libavformat58_45 +libavresample4_0 +libavutil56_51 +libpostproc55_7 +libswresample3_7 +libswscale5_7 diff --git a/ffmpeg-4.changes b/ffmpeg-4.changes index e4eab4e..f090ee9 100644 --- a/ffmpeg-4.changes +++ b/ffmpeg-4.changes @@ -1,7 +1,7 @@ ------------------------------------------------------------------- Sat Jul 4 22:09:51 UTC 2020 - Jan Engelhardt -- Add soversion.patch to workaround upstream ABI breakage. +- Add soversion.patch to workaround ELF ABI breakage. ------------------------------------------------------------------- Wed Jun 17 16:32:04 UTC 2020 - Jan Engelhardt diff --git a/ffmpeg-4.spec b/ffmpeg-4.spec index 3623d5b..9d2e14c 100644 --- a/ffmpeg-4.spec +++ b/ffmpeg-4.spec @@ -199,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%{?sle_vxersion} >= 150200 %ifarch x86_64 BuildRequires: pkgconfig(libmfx) %endif @@ -237,15 +237,15 @@ Provides: ffmpeg-tools = %version Obsoletes: ffmpeg-tools < %version Provides: ffmpeg = %version Obsoletes: ffmpeg < %version -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 +Requires: libavcodec58_91 = %version-%release +Requires: libavdevice58_10 = %version-%release +Requires: libavfilter7_85 = %version-%release +Requires: libavformat58_45 = %version-%release +Requires: libavresample4_0 = %version-%release +Requires: libavutil56_51 = %version-%release +Requires: libpostproc55_7 = %version-%release +Requires: libswresample3_7 = %version-%release +Requires: libswscale5_7 = %version-%release %description FFmpeg is a multimedia framework, able to decode, encode, @@ -256,20 +256,21 @@ that humans and machines have created. This build of ffmpeg is limited in the number of codecs supported. %endif -%package -n libavcodec58suse0 +%package -n libavcodec58_91 Summary: FFmpeg codec library -# For mozillas Group: System/Libraries -Requires: libavutil56suse0 = %version-%release -Requires: libswresample3suse0 = %version-%release -Provides: libavcodec = %version-%release +Requires: libavutil56_51 = %version-%release +Requires: libswresample3_7 = %version-%release %if 0%{?BUILD_ORIG} Provides: libavcodec-full = %version-%release -# This can be required by packages likes vlc-codecs - following the shlib name to not get random lib providers -Provides: libavcodec58(unrestricted) +# This can be (and is) required by packages like vlc-codecs - +# do follow the shlib name to not get random lib providers +Provides: libavcodec58_91(unrestricted) %endif +# For mozillas +Provides: libavcodec = %version-%release -%description -n libavcodec58suse0 +%description -n libavcodec58_91 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. @@ -285,7 +286,7 @@ Provides: libavcodec-devel = %version-%release Obsoletes: libavcodec-devel < %version-%release Requires: %name-libavresample-devel = %version-%release Requires: %name-libavutil-devel = %version-%release -Requires: libavcodec58suse0 = %version-%release +Requires: libavcodec58_91 = %version-%release %devel_conflicts -c < -v %_major_version %devel_conflicts -c >= -v %_major_expected @@ -296,15 +297,15 @@ subtitle streams, and several bitstream filters. This subpackage contains the headers for FFmpeg libavcodec. -%package -n libavdevice58suse0 +%package -n libavdevice58_10 Summary: FFmpeg device library Group: System/Libraries -Requires: libavcodec58suse0 = %version-%release -Requires: libavfilter7suse0 = %version-%release -Requires: libavformat58suse0 = %version-%release -Requires: libavutil56suse0 = %version-%release +Requires: libavcodec58_91 = %version-%release +Requires: libavfilter7_85 = %version-%release +Requires: libavformat58_45 = %version-%release +Requires: libavutil56_51 = %version-%release -%description -n libavdevice58suse0 +%description -n libavdevice58_10 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, @@ -325,7 +326,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: libavdevice58suse0 = %version-%release +Requires: libavdevice58_10 = %version-%release %devel_conflicts -c < -v %_major_version %devel_conflicts -c >= -v %_major_expected @@ -337,18 +338,18 @@ DShow, and ALSA. This subpackage contains the headers for FFmpeg libavcodec. -%package -n libavfilter7suse0 +%package -n libavfilter7_85 Summary: FFmpeg audio and video filtering library Group: System/Libraries -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 +Requires: libavcodec58_91 = %version-%release +Requires: libavformat58_10 = %version-%release +Requires: libavresample4_0 = %version-%release +Requires: libavutil56_51 = %version-%release +Requires: libpostproc55_7 = %version-%release +Requires: libswresample3_7 = %version-%release +Requires: libswscale5_7 = %version-%release -%description -n libavfilter7suse0 +%description -n libavfilter7_85 The libavfilter library provides a generic audio/video filtering framework containing several filters, sources and sinks. @@ -364,7 +365,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: libavfilter7suse0 = %version-%release +Requires: libavfilter7_85 = %version-%release %devel_conflicts -c < -v %_major_version %devel_conflicts -c >= -v %_major_expected @@ -374,13 +375,13 @@ framework containing several filters, sources and sinks. This subpackage contains the headers for FFmpeg libavfilter. -%package -n libavformat58suse0 +%package -n libavformat58_45 Summary: FFmpeg's stream format library Group: System/Libraries -Requires: libavcodec58suse0 = %version-%release -Requires: libavutil56suse0 = %version-%release +Requires: libavcodec58_91 = %version-%release +Requires: libavutil56_51 = %version-%release -%description -n libavformat58suse0 +%description -n libavformat58_45 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 @@ -398,7 +399,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: libavformat58suse0 = %version-%release +Requires: libavformat58_45 = %version-%release %devel_conflicts -c < -v %_major_version %devel_conflicts -c >= -v %_major_expected @@ -410,12 +411,12 @@ container formats. This subpackage contains the headers for FFmpeg libavformat. -%package -n libavresample4suse0 +%package -n libavresample4_0 Summary: FFmpeg alternate audio resampling library Group: System/Libraries -Requires: libavutil56suse0 = %version-%release +Requires: libavutil56_51 = %version-%release -%description -n libavresample4suse0 +%description -n libavresample4_0 An audio resampling library that is being provided for drop-in compatibility with libav. @@ -427,7 +428,7 @@ Group: Development/Libraries/C and C++ Provides: libavresample-devel = %version-%release Obsoletes: libavresample-devel < %version-%release Requires: %name-libavutil-devel = %version-%release -Requires: libavresample4suse0 = %version-%release +Requires: libavresample4_0 = %version-%release %devel_conflicts -c < -v %_major_version %devel_conflicts -c >= -v %_major_expected @@ -439,11 +440,11 @@ It is advised to use libswresample for new code. This subpackage contains the headers for FFmpeg's copy of libavresample. -%package -n libavutil56suse0 +%package -n libavutil56_51 Summary: FFmpeg's utility library Group: System/Libraries -%description -n libavutil56suse0 +%description -n libavutil56_51 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, @@ -455,7 +456,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: libavutil56suse0 = %version-%release +Requires: libavutil56_51 = %version-%release %devel_conflicts -c < -v %_major_version %devel_conflicts -c >= -v %_major_expected @@ -468,12 +469,12 @@ for pixel and sample formats). This subpackage contains the headers for FFmpeg libavutil. -%package -n libpostproc55suse0 +%package -n libpostproc55_7 Summary: FFmpeg post-processing library Group: System/Libraries -Requires: libavutil56suse0 = %version-%release +Requires: libavutil56_51 = %version-%release -%description -n libpostproc55suse0 +%description -n libpostproc55_7 A library with video postprocessing filters, such as deblocking and deringing filters, noise reduction, automatic contrast and brightness correction, linear/cubic interpolating deinterlacing. @@ -484,7 +485,7 @@ Group: Development/Libraries/C and C++ Provides: libpostproc-devel = %version-%release Obsoletes: libpostproc-devel < %version-%release Requires: %name-libavutil-devel = %version-%release -Requires: libpostproc55suse0 = %version-%release +Requires: libpostproc55_7 = %version-%release %devel_conflicts -c < -v %_major_version %devel_conflicts -c >= -v %_major_expected @@ -495,12 +496,12 @@ correction, linear/cubic interpolating deinterlacing. This subpackage contains the headers for FFmpeg libpostproc. -%package -n libswresample3suse0 +%package -n libswresample3_7 Summary: FFmpeg software resampling library Group: System/Libraries -Requires: libavutil56suse0 = %version-%release +Requires: libavutil56_51 = %version-%release -%description -n libswresample3suse0 +%description -n libswresample3_7 The libswresample library performs audio conversion between different sample rates, channel layout and channel formats. @@ -510,7 +511,7 @@ Group: Development/Libraries/C and C++ Provides: libswresample-devel = %version-%release Obsoletes: libswresample-devel < %version-%release Requires: %name-libavutil-devel = %version-%release -Requires: libswresample3suse0 = %version-%release +Requires: libswresample3_7 = %version-%release %devel_conflicts -c < -v %_major_version %devel_conflicts -c >= -v %_major_expected @@ -520,12 +521,12 @@ sample rates, channel layout and channel formats. This subpackage contains the headers for FFmpeg libswresample. -%package -n libswscale5suse0 +%package -n libswscale5_7 Summary: FFmpeg image scaling and colorspace/pixel conversion library Group: System/Libraries -Requires: libavutil56suse0 = %version-%release +Requires: libavutil56_51 = %version-%release -%description -n libswscale5suse0 +%description -n libswscale5_7 The libswscale library performs image scaling and colorspace and pixel format conversion operations. @@ -535,7 +536,7 @@ Group: Development/Libraries/C and C++ Provides: libswscale-devel = %version-%release Conflicts: libswscale-devel Requires: %name-libavutil-devel = %version-%release -Requires: libswscale5suse0 = %version-%release +Requires: libswscale5_7 = %version-%release %devel_conflicts -c < -v %_major_version %devel_conflicts -c >= -v %_major_expected @@ -676,7 +677,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%{?sle_vxersion} >= 150200 %ifarch x86_64 --enable-libmfx \ %endif @@ -747,24 +748,24 @@ for i in libavformat/options_table.h libavformat/os_support.h \ cp -a $i "$b/%_includedir/ffmpeg/private/$i" done -%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 +%post -n libavcodec58_91 -p /sbin/ldconfig +%postun -n libavcodec58_91 -p /sbin/ldconfig +%post -n libavdevice58_10 -p /sbin/ldconfig +%postun -n libavdevice58_10 -p /sbin/ldconfig +%post -n libavfilter7_85 -p /sbin/ldconfig +%postun -n libavfilter7_85 -p /sbin/ldconfig +%post -n libavformat58_45 -p /sbin/ldconfig +%postun -n libavformat58_45 -p /sbin/ldconfig +%post -n libavresample4_0 -p /sbin/ldconfig +%postun -n libavresample4_0 -p /sbin/ldconfig +%post -n libavutil56_51 -p /sbin/ldconfig +%postun -n libavutil56_51 -p /sbin/ldconfig +%post -n libpostproc55_7 -p /sbin/ldconfig +%postun -n libpostproc55_7 -p /sbin/ldconfig +%post -n libswresample3_7 -p /sbin/ldconfig +%postun -n libswresample3_7 -p /sbin/ldconfig +%post -n libswscale5_7 -p /sbin/ldconfig +%postun -n libswscale5_7 -p /sbin/ldconfig %files %doc Changelog CREDITS README.md @@ -772,39 +773,39 @@ done %_mandir/man1/ff*.1* %_datadir/ffmpeg/ -%files -n libavcodec58suse0 +%files -n libavcodec58_91 %license COPYING.GPLv2 LICENSE.md %_libdir/libavcodec.so.* -%files -n libavdevice58suse0 +%files -n libavdevice58_10 %license COPYING.GPLv2 LICENSE.md %_libdir/libavdevice.so.* -%files -n libavfilter7suse0 +%files -n libavfilter7_85 %license COPYING.GPLv2 LICENSE.md %_libdir/libavfilter.so.* -%files -n libavformat58suse0 +%files -n libavformat58_45 %license COPYING.GPLv2 LICENSE.md %_libdir/libavformat.so.* -%files -n libavresample4suse0 +%files -n libavresample4_0 %license COPYING.GPLv2 LICENSE.md %_libdir/libavresample.so.* -%files -n libavutil56suse0 +%files -n libavutil56_51 %license COPYING.GPLv2 LICENSE.md %_libdir/libavutil.so.* -%files -n libpostproc55suse0 +%files -n libpostproc55_7 %license COPYING.GPLv2 LICENSE.md %_libdir/libpostproc.so.* -%files -n libswresample3suse0 +%files -n libswresample3_7 %license COPYING.GPLv2 LICENSE.md %_libdir/libswresample.so.* -%files -n libswscale5suse0 +%files -n libswscale5_7 %license COPYING.GPLv2 LICENSE.md %_libdir/libswscale.so.* diff --git a/soversion.patch b/soversion.patch index 911455a..8fb428c 100644 --- a/soversion.patch +++ b/soversion.patch @@ -4,23 +4,15 @@ 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""" +aspects. [...]""" -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! +Further discussion on the mailing list explored this topic, and +revealed that ELF symbol versioning is lacklusterly implemented in +ffmpeg, which can cause inadvertent mixing of library versions on +openSUSE, and precompiled Linux distributions in general. It is +unclear when upstream will have implemented a solution. Until then, +we will need to tighten the requirements between packages, to which +end we stretch the SOVERSION to include MINOR. --- configure | 2 +- @@ -35,7 +27,7 @@ Index: ffmpeg-4.3/configure SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)' SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)' -SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)' -+SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)suse0' ++SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR).$(LIBMINOR)' LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"' SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)' SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'