From ba845b0d47b72cff580058446e99c723d8bf6df4 Mon Sep 17 00:00:00 2001 From: Emily Date: Sun, 25 Aug 2024 18:13:38 +0100 Subject: [PATCH 1/4] keyfinder: drop MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Unmaintained, abandoned upstream, depends on an outdated version of the abandoned libav, and doesn’t build even if that dependency is replaced with FFmpeg. --- pkgs/applications/audio/keyfinder/default.nix | 40 ------------------- pkgs/top-level/aliases.nix | 1 + pkgs/top-level/all-packages.nix | 2 - 3 files changed, 1 insertion(+), 42 deletions(-) delete mode 100644 pkgs/applications/audio/keyfinder/default.nix diff --git a/pkgs/applications/audio/keyfinder/default.nix b/pkgs/applications/audio/keyfinder/default.nix deleted file mode 100644 index 24a72501db54..000000000000 --- a/pkgs/applications/audio/keyfinder/default.nix +++ /dev/null @@ -1,40 +0,0 @@ -{ lib, mkDerivation, fetchFromGitHub, libav_0_8, libkeyfinder, qtbase, qtxmlpatterns, qmake, taglib }: - -mkDerivation rec { - pname = "keyfinder"; - version = "2.4"; - - src = fetchFromGitHub { - sha256 = "11yhdwan7bz8nn8vxr54drckyrnlxynhx5s981i475bbccg8g7ls"; - rev = "530034d6fe86d185f6a68b817f8db5f552f065d7"; # tag is missing - repo = "is_KeyFinder"; - owner = "ibsh"; - }; - - nativeBuildInputs = [ qmake ]; - buildInputs = [ libav_0_8 libkeyfinder qtbase qtxmlpatterns taglib ]; - - postPatch = '' - substituteInPlace is_KeyFinder.pro \ - --replace "-stdlib=libc++" "" \ - --replace "\$\$[QT_INSTALL_PREFIX]" "$out" - ''; - - dontWrapQtApps = true; - - meta = with lib; { - description = "Musical key detection for digital audio (graphical UI)"; - longDescription = '' - KeyFinder is an open source key detection tool, for DJs interested in - harmonic and tonal mixing. Designed primarily for electronic and dance - music, it is highly configurable and can be applied to many genres. It - supports a huge range of codecs thanks to LibAV, and writes to metadata - tags using TagLib. It's intended to be very focused: no library - management, no track suggestions, no media player. Just a fast, - efficient workflow tool. - ''; - homepage = "https://www.ibrahimshaath.co.uk/keyfinder/"; - license = licenses.gpl3Plus; - platforms = platforms.linux; - }; -} diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index ca3f074d2fe6..c40f88180c1d 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -722,6 +722,7 @@ mapAliases ({ keepkey_agent = keepkey-agent; # added 2024-01-06 kerberos = libkrb5; # moved from top-level 2021-03-14 kexectools = kexec-tools; # Added 2021-09-03 + keyfinger = throw "keyfinder has been removed as it was abandoned upstream and did not build; consider using mixxx or keyfinder-cli"; # Addd 2024-08-25 keysmith = libsForQt5.kdeGear.keysmith; # Added 2021-07-14 kfctl = throw "kfctl is broken and has been archived by upstream"; # Added 2023-08-21 kgx = gnome-console; # Added 2022-02-19 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 02732f83265d..02fd64b21203 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -31231,8 +31231,6 @@ with pkgs; khronos = callPackage ../applications/office/khronos { }; - keyfinder = libsForQt5.callPackage ../applications/audio/keyfinder { }; - keyfinder-cli = callPackage ../applications/audio/keyfinder-cli { }; kfilt = callPackage ../applications/networking/cluster/kfilt { }; From 34334f147d4811e1407c058c18b1fa237d1e2e5d Mon Sep 17 00:00:00 2001 From: Emily Date: Sun, 25 Aug 2024 17:53:34 +0100 Subject: [PATCH 2/4] libav{,_{0_8,11,12}}: drop Every version is insecure, none of them build successfully, the project has been abandoned upstream for years, the website is gone, and nothing in the tree that works used them. --- pkgs/development/libraries/libav/default.nix | 137 ------------------ .../libraries/libav/vpx-12.3-libvpx-1.8.patch | 46 ------ .../libav/vpxenc-0.8.17-libvpx-1.5.patch | 22 --- pkgs/top-level/aliases.nix | 5 + pkgs/top-level/all-packages.nix | 4 - 5 files changed, 5 insertions(+), 209 deletions(-) delete mode 100644 pkgs/development/libraries/libav/default.nix delete mode 100644 pkgs/development/libraries/libav/vpx-12.3-libvpx-1.8.patch delete mode 100644 pkgs/development/libraries/libav/vpxenc-0.8.17-libvpx-1.5.patch diff --git a/pkgs/development/libraries/libav/default.nix b/pkgs/development/libraries/libav/default.nix deleted file mode 100644 index 8cc098d81087..000000000000 --- a/pkgs/development/libraries/libav/default.nix +++ /dev/null @@ -1,137 +0,0 @@ -{ lib, stdenv, fetchurl, pkg-config, yasm, bzip2, zlib, perl, bash -, mp3Support ? true, lame ? null -, speexSupport ? true, speex ? null -, theoraSupport ? true, libtheora ? null -, vorbisSupport ? true, libvorbis ? null -, vpxSupport ? true, libvpx ? null -, x264Support ? false, x264 ? null -, xvidSupport ? true, xvidcore ? null -, faacSupport ? false, faac ? null -, vaapiSupport ? true, libva ? null -, vdpauSupport ? true, libvdpau ? null -, freetypeSupport ? true, freetype ? null # it's small and almost everywhere -, SDL # only for avplay in $bin, adds nontrivial closure to it -, enableGPL ? true # ToDo: some additional default stuff may need GPL -, enableUnfree ? faacSupport -}: - -assert faacSupport -> enableUnfree; - -let inherit (lib) optional optionals hasPrefix enableFeature; in - -/* ToDo: - - more deps, inspiration: https://packages.ubuntu.com/raring/libav-tools - - maybe do some more splitting into outputs -*/ - -let - result = { - # e.g. https://libav.org/releases/libav-11.11.tar.xz.sha1 - libav_0_8 = libavFun "0.8.21" "d858f65128dad0bac1a8c3a51e5cbb27a7c79b3f"; - libav_11 = libavFun "11.12" "61d5dcab5fde349834af193a572b12a5fd6a4d42"; - libav_12 = libavFun "12.3" "386c18c8b857f23dfcf456ce40370716130211d9"; - }; - - libavFun = version : sha1 : stdenv.mkDerivation rec { - pname = "libav"; - inherit version; - - src = fetchurl { - url = "${meta.homepage}/releases/${pname}-${version}.tar.xz"; - inherit sha1; # upstream directly provides sha1 of releases over https - }; - - patches = [] - ++ optional (vpxSupport && hasPrefix "0.8." version) ./vpxenc-0.8.17-libvpx-1.5.patch - ++ optional (vpxSupport && hasPrefix "12." version) ./vpx-12.3-libvpx-1.8.patch - ; - - postPatch = '' - patchShebangs . - # another shebang was hidden in a here document text - substituteInPlace ./configure --replace "#! /bin/sh" "#!${bash}/bin/sh" - ''; - - configurePlatforms = []; - configureFlags = assert lib.all (x: x!=null) buildInputs; [ - "--arch=${stdenv.hostPlatform.parsed.cpu.name}" - "--target_os=${stdenv.hostPlatform.parsed.kernel.name}" - #"--enable-postproc" # it's now a separate package in upstream - "--disable-avserver" # upstream says it's in a bad state - "--enable-avplay" - "--enable-shared" - "--enable-runtime-cpudetect" - "--cc=${stdenv.cc.targetPrefix}cc" - (enableFeature enableGPL "gpl") - (enableFeature enableGPL "swscale") - (enableFeature mp3Support "libmp3lame") - (enableFeature mp3Support "libmp3lame") - (enableFeature speexSupport "libspeex") - (enableFeature theoraSupport "libtheora") - (enableFeature vorbisSupport "libvorbis") - (enableFeature vpxSupport "libvpx") - (enableFeature x264Support "libx264") - (enableFeature xvidSupport "libxvid") - (enableFeature faacSupport "libfaac") - (enableFeature faacSupport "nonfree") - (enableFeature vaapiSupport "vaapi") - (enableFeature vdpauSupport "vdpau") - (enableFeature freetypeSupport "libfreetype") - ] ++ optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ - "--cross-prefix=${stdenv.cc.targetPrefix}" - "--enable-cross-compile" - ]; - - nativeBuildInputs = [ pkg-config perl ]; - buildInputs = [ lame yasm zlib bzip2 SDL bash ] - ++ [ perl ] # for install-man target - ++ optional mp3Support lame - ++ optional speexSupport speex - ++ optional theoraSupport libtheora - ++ optional vorbisSupport libvorbis - ++ optional vpxSupport libvpx - ++ optional x264Support x264 - ++ optional xvidSupport xvidcore - ++ optional faacSupport faac - ++ optional vaapiSupport libva - ++ optional vdpauSupport libvdpau - ++ optional freetypeSupport freetype - ; - - enableParallelBuilding = true; - - outputs = [ "bin" "dev" "out" ]; - setOutputFlags = false; - - # alltools to build smaller tools, incl. aviocat, ismindex, qt-faststart, etc. - buildFlags = [ "all" "alltools" "install-man" ]; - - - postInstall = '' - moveToOutput bin "$bin" - # alltools target compiles an executable in tools/ for every C - # source file in tools/, so move those to $out - for tool in $(find tools -type f -executable); do - mv "$tool" "$bin/bin/" - done - ''; - - doInstallCheck = false; # fails randomly - installCheckTarget = "check"; # tests need to be run *after* installation - - passthru = { inherit vdpauSupport; }; - - meta = with lib; { - homepage = "https://libav.org/"; - description = "Complete, cross-platform solution to record, convert and stream audio and video (fork of ffmpeg)"; - license = with licenses; if enableUnfree then unfree #ToDo: redistributable or not? - else if enableGPL then gpl2Plus else lgpl21Plus; - platforms = with platforms; linux ++ darwin; - knownVulnerabilities = - lib.optional (lib.versionOlder version "12.1") "CVE-2017-9051" - ++ lib.optionals (lib.versionOlder version "12.3") [ "CVE-2018-5684" "CVE-2018-5766" ] - ++ lib.optionals (lib.versionOlder version "12.4") [ "CVE-2019-9717" "CVE-2019-9720" ]; - }; - }; # libavFun - -in result diff --git a/pkgs/development/libraries/libav/vpx-12.3-libvpx-1.8.patch b/pkgs/development/libraries/libav/vpx-12.3-libvpx-1.8.patch deleted file mode 100644 index 8f8e5003284f..000000000000 --- a/pkgs/development/libraries/libav/vpx-12.3-libvpx-1.8.patch +++ /dev/null @@ -1,46 +0,0 @@ ---- libav/libavcodec/libvpx.c.orig 2018-02-12 21:25:59 UTC -+++ libav/libavcodec/libvpx.c -@@ -25,6 +25,7 @@ - enum AVPixelFormat ff_vpx_imgfmt_to_pixfmt(vpx_img_fmt_t img) - { - switch (img) { -+#if VPX_IMAGE_ABI_VERSION < 5 - case VPX_IMG_FMT_RGB24: return AV_PIX_FMT_RGB24; - case VPX_IMG_FMT_RGB565: return AV_PIX_FMT_RGB565BE; - case VPX_IMG_FMT_RGB555: return AV_PIX_FMT_RGB555BE; -@@ -36,10 +37,13 @@ enum AVPixelFormat ff_vpx_imgfmt_to_pixfmt(vpx_img_fmt - case VPX_IMG_FMT_ARGB_LE: return AV_PIX_FMT_BGRA; - case VPX_IMG_FMT_RGB565_LE: return AV_PIX_FMT_RGB565LE; - case VPX_IMG_FMT_RGB555_LE: return AV_PIX_FMT_RGB555LE; -+#endif - case VPX_IMG_FMT_I420: return AV_PIX_FMT_YUV420P; - case VPX_IMG_FMT_I422: return AV_PIX_FMT_YUV422P; - case VPX_IMG_FMT_I444: return AV_PIX_FMT_YUV444P; -+#if VPX_IMAGE_ABI_VERSION < 5 - case VPX_IMG_FMT_444A: return AV_PIX_FMT_YUVA444P; -+#endif - #if VPX_IMAGE_ABI_VERSION >= 3 - case VPX_IMG_FMT_I440: return AV_PIX_FMT_YUV440P; - case VPX_IMG_FMT_I42016: return AV_PIX_FMT_YUV420P16BE; -@@ -53,6 +57,7 @@ enum AVPixelFormat ff_vpx_imgfmt_to_pixfmt(vpx_img_fmt - vpx_img_fmt_t ff_vpx_pixfmt_to_imgfmt(enum AVPixelFormat pix) - { - switch (pix) { -+#if VPX_IMAGE_ABI_VERSION < 5 - case AV_PIX_FMT_RGB24: return VPX_IMG_FMT_RGB24; - case AV_PIX_FMT_RGB565BE: return VPX_IMG_FMT_RGB565; - case AV_PIX_FMT_RGB555BE: return VPX_IMG_FMT_RGB555; -@@ -64,10 +69,13 @@ vpx_img_fmt_t ff_vpx_pixfmt_to_imgfmt(enum AVPixelForm - case AV_PIX_FMT_BGRA: return VPX_IMG_FMT_ARGB_LE; - case AV_PIX_FMT_RGB565LE: return VPX_IMG_FMT_RGB565_LE; - case AV_PIX_FMT_RGB555LE: return VPX_IMG_FMT_RGB555_LE; -+#endif - case AV_PIX_FMT_YUV420P: return VPX_IMG_FMT_I420; - case AV_PIX_FMT_YUV422P: return VPX_IMG_FMT_I422; - case AV_PIX_FMT_YUV444P: return VPX_IMG_FMT_I444; -+#if VPX_IMAGE_ABI_VERSION < 5 - case AV_PIX_FMT_YUVA444P: return VPX_IMG_FMT_444A; -+#endif - #if VPX_IMAGE_ABI_VERSION >= 3 - case AV_PIX_FMT_YUV440P: return VPX_IMG_FMT_I440; - case AV_PIX_FMT_YUV420P16BE: return VPX_IMG_FMT_I42016; diff --git a/pkgs/development/libraries/libav/vpxenc-0.8.17-libvpx-1.5.patch b/pkgs/development/libraries/libav/vpxenc-0.8.17-libvpx-1.5.patch deleted file mode 100644 index 456828c025ef..000000000000 --- a/pkgs/development/libraries/libav/vpxenc-0.8.17-libvpx-1.5.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- a/libavcodec/libvpxenc.c 2016-05-01 17:57:16.753852614 +0200 -+++ b/libavcodec/libvpxenc.c 2016-05-01 18:01:08.252147138 +0200 -@@ -67,19 +67,11 @@ - - /** String mappings for enum vp8e_enc_control_id */ - static const char *ctlidstr[] = { -- [VP8E_UPD_ENTROPY] = "VP8E_UPD_ENTROPY", -- [VP8E_UPD_REFERENCE] = "VP8E_UPD_REFERENCE", -- [VP8E_USE_REFERENCE] = "VP8E_USE_REFERENCE", -- [VP8E_SET_ROI_MAP] = "VP8E_SET_ROI_MAP", -- [VP8E_SET_ACTIVEMAP] = "VP8E_SET_ACTIVEMAP", -- [VP8E_SET_SCALEMODE] = "VP8E_SET_SCALEMODE", - [VP8E_SET_CPUUSED] = "VP8E_SET_CPUUSED", - [VP8E_SET_ENABLEAUTOALTREF] = "VP8E_SET_ENABLEAUTOALTREF", - [VP8E_SET_NOISE_SENSITIVITY] = "VP8E_SET_NOISE_SENSITIVITY", -- [VP8E_SET_SHARPNESS] = "VP8E_SET_SHARPNESS", - [VP8E_SET_STATIC_THRESHOLD] = "VP8E_SET_STATIC_THRESHOLD", - [VP8E_SET_TOKEN_PARTITIONS] = "VP8E_SET_TOKEN_PARTITIONS", -- [VP8E_GET_LAST_QUANTIZER] = "VP8E_GET_LAST_QUANTIZER", - [VP8E_SET_ARNR_MAXFRAMES] = "VP8E_SET_ARNR_MAXFRAMES", - [VP8E_SET_ARNR_STRENGTH] = "VP8E_SET_ARNR_STRENGTH", - [VP8E_SET_ARNR_TYPE] = "VP8E_SET_ARNR_TYPE", diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index c40f88180c1d..39290460d27d 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -751,6 +751,11 @@ mapAliases ({ lfs = dysk; # Added 2023-07-03 llvmPackages_rocm = throw "'llvmPackages_rocm' has been replaced with 'rocmPackages.llvm'"; # Added 2023-10-08 libAfterImage = throw "'libAfterImage' has been removed from nixpkgs, as it's no longer in development for a long time"; # Added 2024-06-01 + libav = throw "libav has been removed as it was insecure and abandoned upstream for over half a decade; please use FFmpeg"; # Added 2024-08-25 + libav_0_8 = libav; # Added 2024-08-25 + libav_11 = libav; # Added 2024-08-25 + libav_12 = libav; # Added 2024-08-25 + libav_all = libav; # Added 2024-08-25 libayatana-indicator-gtk3 = libayatana-indicator; # Added 2022-10-18 libayatana-appindicator-gtk3 = libayatana-appindicator; # Added 2022-10-18 libbencodetools = bencodetools; # Added 2022-07-30 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 02fd64b21203..b92997c85eef 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -21160,10 +21160,6 @@ with pkgs; libaudec = callPackage ../development/libraries/libaudec { }; - libav = libav_11; # branch 11 is API-compatible with branch 10 - libav_all = callPackages ../development/libraries/libav { }; - inherit (libav_all) libav_0_8 libav_11 libav_12; - libavc1394 = callPackage ../development/libraries/libavc1394 { }; libavif = callPackage ../development/libraries/libavif { }; From b2d74c308853434624e6688247670f0945c5dc0e Mon Sep 17 00:00:00 2001 From: Emily Date: Sun, 25 Aug 2024 18:07:31 +0100 Subject: [PATCH 3/4] gst_all_1.gst-libav: remove libav references --- pkgs/development/libraries/gstreamer/libav/default.nix | 9 +++------ pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/pkgs/development/libraries/gstreamer/libav/default.nix b/pkgs/development/libraries/gstreamer/libav/default.nix index 92156dec54ea..38a553ec8669 100644 --- a/pkgs/development/libraries/gstreamer/libav/default.nix +++ b/pkgs/development/libraries/gstreamer/libav/default.nix @@ -8,14 +8,11 @@ , gstreamer , gst-plugins-base , gettext -, libav +, ffmpeg-headless # Checks meson.is_cross_build(), so even canExecute isn't enough. , enableDocumentation ? stdenv.hostPlatform == stdenv.buildPlatform, hotdoc }: -# Note that since gst-libav-1.6, libav is actually ffmpeg. See -# https://gstreamer.freedesktop.org/releases/1.6/ for more info. - stdenv.mkDerivation rec { pname = "gst-libav"; version = "1.24.3"; @@ -40,7 +37,7 @@ stdenv.mkDerivation rec { buildInputs = [ gstreamer gst-plugins-base - libav + ffmpeg-headless ]; mesonFlags = [ @@ -53,7 +50,7 @@ stdenv.mkDerivation rec { ''; meta = with lib; { - description = "FFmpeg/libav plugin for GStreamer"; + description = "FFmpeg plugin for GStreamer"; homepage = "https://gstreamer.freedesktop.org"; license = licenses.lgpl2Plus; platforms = platforms.unix; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b92997c85eef..2965e8eed9d2 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -20503,7 +20503,7 @@ with pkgs; gsettings-qt = libsForQt5.callPackage ../development/libraries/gsettings-qt { }; gst_all_1 = recurseIntoAttrs(callPackage ../development/libraries/gstreamer { - callPackage = newScope (gst_all_1 // { libav = pkgs.ffmpeg-headless; }); + callPackage = newScope gst_all_1; inherit (darwin.apple_sdk.frameworks) AudioToolbox AVFoundation Cocoa CoreFoundation CoreMedia CoreServices CoreVideo DiskArbitration Foundation IOKit MediaToolbox OpenGL Security SystemConfiguration VideoToolbox; }); From 744da98b10506663d494d06252b8cde32e7db974 Mon Sep 17 00:00:00 2001 From: Emily Date: Sun, 25 Aug 2024 18:09:01 +0100 Subject: [PATCH 4/4] python3Packages.av: remove libav reference --- pkgs/development/python-modules/av/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/python-modules/av/default.nix b/pkgs/development/python-modules/av/default.nix index 57fca04c0a4b..a030344e8f4c 100644 --- a/pkgs/development/python-modules/av/default.nix +++ b/pkgs/development/python-modules/av/default.nix @@ -94,7 +94,7 @@ buildPythonPackage rec { ]; meta = with lib; { - description = "Pythonic bindings for FFmpeg/Libav"; + description = "Pythonic bindings for FFmpeg"; mainProgram = "pyav"; homepage = "https://github.com/PyAV-Org/PyAV"; changelog = "https://github.com/PyAV-Org/PyAV/blob/v${version}/CHANGELOG.rst";