Name: ffmpeg Version: 7.1 Release: 4%{?dist} Summary: Digital VCR and streaming server License: LGPL-2.1-or-later AND GPL-2.0-or-later URL: https://ffmpeg.org Source0: https://ffmpeg.org/releases/ffmpeg-%{version}.tar.xz %undefine _debugsource_packages BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: make BuildRequires: pkgconfig BuildRequires: nasm BuildRequires: zlib-ng-compat-devel BuildRequires: bzip2-devel BuildRequires: libvpx-devel BuildRequires: lame-devel %description FFmpeg -- built as a real, moderately-featured library-only stack (no command-line programs/doc) specifically as a prerequisite for KPipeWire, which hard-requires libavcodec/libavutil/libavformat/ libavfilter/libswscale via unconditional REQUIRED pkg_check_modules() calls with no graceful degradation path. FFmpeg itself is confirmed entirely absent from Azure Linux's package repos (unlike GStreamer, which turned out to be available for Kamoso earlier this phase -- this is a genuine, verified gap, not an unchecked assumption). Enabled libvpx (VP8/VP9, real encode+decode, no patent/licensing issues, confirmed available) instead of chasing libx264 (GPL, confirmed NOT packaged here) for H.264 -- VP8/VP9 is a fully functional choice for PipeWire-based Wayland screen-recording pipelines. zlib/bzlib auto-detected and enabled since their -devel packages are present. No X11/SDL/ALSA/PulseAudio program-level integration needed since --disable-programs skips building the ffmpeg/ffplay/ffprobe binaries entirely -- only the shared libraries KPipeWire links against are built. %package devel Summary: Development package for FFmpeg Requires: %{name}%{?_isa} = %{version}-%{release} %description devel %{summary}. %prep %autosetup -p1 %build ./configure \ --prefix=%{_prefix} \ --libdir=%{_libdir} \ --incdir=%{_includedir} \ --shlibdir=%{_libdir} \ --enable-shared \ --disable-static \ --disable-programs \ --disable-doc \ --disable-debug \ --enable-libvpx \ --enable-libmp3lame \ --optflags="%{optflags}" \ --extra-cflags="-fno-lto" \ --extra-ldflags="-fno-lto" %make_build %install %make_install %files %license COPYING.GPLv2 COPYING.GPLv3 COPYING.LGPLv2.1 COPYING.LGPLv3 LICENSE.md %doc %{_datadir}/ffmpeg/examples/ %{_libdir}/libavcodec.so.* %{_libdir}/libavutil.so.* %{_libdir}/libavformat.so.* %{_libdir}/libavfilter.so.* %{_libdir}/libavdevice.so.* %{_libdir}/libswscale.so.* %{_libdir}/libswresample.so.* %files devel %{_includedir}/libavcodec/ %{_includedir}/libavutil/ %{_includedir}/libavformat/ %{_includedir}/libavfilter/ %{_includedir}/libavdevice/ %{_includedir}/libswscale/ %{_includedir}/libswresample/ %{_libdir}/libavcodec.so %{_libdir}/libavutil.so %{_libdir}/libavformat.so %{_libdir}/libavfilter.so %{_libdir}/libavdevice.so %{_libdir}/libswscale.so %{_libdir}/libswresample.so %{_libdir}/pkgconfig/libav*.pc %{_libdir}/pkgconfig/libsw*.pc %changelog * Sun Aug 30 2026 Smech - 7.1-4 - R3 fixed debugsource packaging cleanly; final gap was %{_datadir}/ffmpeg/examples/ (source .c files + Makefile + README from FFmpeg's own unconditional make install-examples target -- there's no ./configure flag to skip it). Claimed as %%doc. * Sun Aug 30 2026 Smech - 7.1-3 - R2's -fno-lto fix worked -- the real compile+link succeeded cleanly this time. Only remaining failure was RPM-level: "Empty %%files file debugsourcefiles.list", a standard find-debuginfo.sh quirk that shows up when a build's debug source-file references don't line up with rpmbuild's automatic debuginfo/debugsource subpackage generation (plausibly related to the -fno-lto override changing how source paths get embedded). Disabled debugsource subpackage generation via %%undefine _debugsource_packages, the standard fix for this exact error class. * Sun Aug 30 2026 Smech - 7.1-2 - R1 failed at final link: "relocation R_X86_64_PC32 against undefined symbol `mask24l' can not be used when making a shared object; recompile with -fPIC" while linking libswscale.so, coming from an LTO partition temp file (ltrans*.ltrans.o) -- a real interaction bug between this distro's baked-in hardened-gcc LTO specs and libswscale's hand-written nasm RGB24 conversion routines (rgb_2_rgb.asm), which aren't LTO bitcode and don't mix cleanly with LTO-optimized C objects at final link under redhat-hardened-ld. Disabled LTO narrowly via --extra-cflags/--extra-ldflags="-fno-lto" rather than the much broader --disable-x86asm (which would kill nasm-optimized routines across every FFmpeg library, not just this one legacy code path). * Sun Aug 30 2026 Smech - 7.1-1 - Real upstream source. Built specifically as a KPipeWire prerequisite after confirming FFmpeg is genuinely absent from this distro's repos (per explicit user instruction to pursue this rather than skip Spectacle). Library-only build (--disable-programs/--disable-doc) with libvpx (real VP8/VP9 codec) instead of the unavailable libx264. %%files is a first-pass estimate of standard FFmpeg library/header naming, not yet verified against a real build log -- FFmpeg's own build system doesn't use CMake/ECM like everything else this session, so this is the first classic autoconf-style ./configure package built in this repo; expect a real-error correction round.