about summary refs log tree commit diff
path: root/pkgs/applications/video/handbrake/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/video/handbrake/default.nix')
-rw-r--r--pkgs/applications/video/handbrake/default.nix336
1 files changed, 0 insertions, 336 deletions
diff --git a/pkgs/applications/video/handbrake/default.nix b/pkgs/applications/video/handbrake/default.nix
deleted file mode 100644
index f9761bd85bb56..0000000000000
--- a/pkgs/applications/video/handbrake/default.nix
+++ /dev/null
@@ -1,336 +0,0 @@
-# Upstream distributes HandBrake with bundle of according versions of libraries
-# and patches to them. This derivation patches HandBrake to use Nix closure
-# dependencies.
-#
-# NOTE: 2019-07-19: This derivation does not currently support the native macOS
-# GUI--it produces the "HandbrakeCLI" CLI version only. In the future it would
-# be nice to add the native GUI (and/or the GTK GUI) as an option too, but that
-# requires invoking the Xcode build system, which is non-trivial for now.
-
-{ stdenv
-, lib
-, fetchFromGitHub
-, fetchpatch
-  # For tests
-, testers
-, runCommand
-, fetchurl
-  # Main build tools
-, pkg-config
-, autoconf
-, automake
-, libtool
-, m4
-, xz
-, python3
-, numactl
-, writeText
-  # Processing, video codecs, containers
-, ffmpeg_7-full
-, nv-codec-headers
-, libogg
-, x264
-, x265
-, libvpx
-, libtheora
-, dav1d
-, zimg
-, svt-av1
-  # Codecs, audio
-, libopus
-, lame
-, libvorbis
-, a52dec
-, speex
-, libsamplerate
-  # Text processing
-, libiconv
-, fribidi
-, fontconfig
-, freetype
-, libass
-, jansson
-, libxml2
-, harfbuzz
-, libjpeg_turbo
-  # Optical media
-, libdvdread
-, libdvdnav
-, libdvdcss
-, libbluray
-  # Darwin-specific
-, AudioToolbox
-, Foundation
-, libobjc
-, VideoToolbox
-  # GTK
-  # NOTE: 2019-07-19: The gtk3 package has a transitive dependency on dbus,
-  # which in turn depends on systemd. systemd is not supported on Darwin, so
-  # for now we disable GTK GUI support on Darwin. (It may be possible to remove
-  # this restriction later.)
-, useGtk ? !stdenv.isDarwin
-, appstream
-, desktop-file-utils
-, meson
-, ninja
-, wrapGAppsHook4
-, intltool
-, glib
-, gtk4
-, libappindicator-gtk3
-, libnotify
-, gst_all_1
-, dbus-glib
-, udev
-, libgudev
-, hicolor-icon-theme
-  # FDK
-, useFdk ? false
-, fdk_aac
-}:
-
-let
-  version = "1.8.0";
-
-  src = fetchFromGitHub {
-    owner = "HandBrake";
-    repo = "HandBrake";
-    # uses version commit for logic in version.txt
-    rev = "5edf59c1da54fe1c9a487d09e8f52561fe49cb2a";
-    hash = "sha256-gr2UhqPY5mZOP8KBvk9yydl4AkTlqE83hYAcLwSv1Is=";
-  };
-
-  # Handbrake maintains a set of ffmpeg patches. In particular, these
-  # patches are required for subtitle timing to work correctly. See:
-  # https://github.com/HandBrake/HandBrake/issues/4029
-  # base ffmpeg version is specified in:
-  # https://github.com/HandBrake/HandBrake/blob/master/contrib/ffmpeg/module.defs
-  ffmpeg-version = "7.0";
-  ffmpeg-hb = (ffmpeg_7-full.override {
-    version = ffmpeg-version;
-    hash = "sha256-RdDfv+0y90XpgjIRvTjsemKyGunzDbsh4j4WiE9rfyM=";
-  }).overrideAttrs (old: {
-    patches = (old.patches or [ ]) ++ [
-      "${src}/contrib/ffmpeg/A01-mov-read-name-track-tag-written-by-movenc.patch"
-      "${src}/contrib/ffmpeg/A02-movenc-write-3gpp-track-titl-tag.patch"
-      "${src}/contrib/ffmpeg/A03-mov-read-3gpp-udta-tags.patch"
-      "${src}/contrib/ffmpeg/A04-movenc-write-3gpp-track-names-tags-for-all-available.patch"
-      "${src}/contrib/ffmpeg/A05-dvdsubdec-fix-processing-of-partial-packets.patch"
-      "${src}/contrib/ffmpeg/A06-dvdsubdec-return-number-of-bytes-used.patch"
-      "${src}/contrib/ffmpeg/A07-dvdsubdec-use-pts-of-initial-packet.patch"
-      "${src}/contrib/ffmpeg/A08-dvdsubdec-do-not-discard-zero-sized-rects.patch"
-      "${src}/contrib/ffmpeg/A09-ccaption_dec-fix-pts-in-real_time-mode.patch"
-      "${src}/contrib/ffmpeg/A10-matroskaenc-aac-extradata-updated.patch"
-      "${src}/contrib/ffmpeg/A11-videotoolbox-disable-H.264-10-bit-on-Intel-macOS.patch"
-
-      # patch to fix <https://github.com/HandBrake/HandBrake/issues/5011>
-      # commented out because it causes ffmpeg's filter-pixdesc-p010le test to fail.
-      # "${src}/contrib/ffmpeg/A12-libswscale-fix-yuv420p-to-p01xle-color-conversion-bu.patch"
-
-      "${src}/contrib/ffmpeg/A13-qsv-fix-decode-10bit-hdr.patch"
-      "${src}/contrib/ffmpeg/A14-amfenc-Add-support-for-pict_type-field.patch"
-      "${src}/contrib/ffmpeg/A15-amfenc-Fixes-the-color-information-in-the-ou.patch"
-      "${src}/contrib/ffmpeg/A16-amfenc-HDR-metadata.patch"
-      "${src}/contrib/ffmpeg/A17-av1dec-dovi-rpu.patch"
-      "${src}/contrib/ffmpeg/A18-avformat-mov-add-support-audio-fallback-track-ref.patch"
-      "${src}/contrib/ffmpeg/A19-mov-ignore-old-infe-box.patch"
-      "${src}/contrib/ffmpeg/A20-mov-free-infe-on-failure.patch"
-    ];
-  });
-
-  x265-hb = x265.overrideAttrs (old: {
-    # nixpkgs' x265 sourceRoot is x265-.../source whereas handbrake's x265 patches
-    # are written with respect to the parent directory instead of that source directory.
-    # patches which don't cleanly apply are commented out.
-    postPatch = (old.postPatch or "") + ''
-      pushd ..
-      patch -p1 < ${src}/contrib/x265/A01-threads-priority.patch
-      patch -p1 < ${src}/contrib/x265/A02-threads-pool-adjustments.patch
-      patch -p1 < ${src}/contrib/x265/A03-sei-length-crash-fix.patch
-      patch -p1 < ${src}/contrib/x265/A04-ambient-viewing-enviroment-sei.patch
-      # patch -p1 < ${src}/contrib/x265/A05-memory-leaks.patch
-      # patch -p1 < ${src}/contrib/x265/A06-crosscompile-fix.patch
-      popd
-    '';
-  });
-
-  versionFile = writeText "version.txt" ''
-    URL=${src.meta.homepage}.git
-    HASH=${src.rev}
-    SHORTHASH=${lib.substring 0 9 src.rev}
-    TAG=${version}
-    TAG_HASH=${src.rev}
-    REV=0
-    BRANCH=
-    REMOTE=${src.meta.homepage}.git
-    DATE=1970-01-01 00:00:01 +0000
-  '';
-
-  inherit (lib) optional optionals optionalString versions;
-
-in
-let
-  self = stdenv.mkDerivation rec {
-    pname = "handbrake";
-    inherit version src;
-
-    postPatch = ''
-      install -Dm444 ${versionFile} ${versionFile.name}
-
-      patchShebangs scripts
-      patchShebangs gtk/data/
-
-      substituteInPlace libhb/hb.c \
-        --replace-fail 'return hb_version;' 'return "${version}";'
-
-      # Force using nixpkgs dependencies
-      sed -i '/MODULES += contrib/d' make/include/main.defs
-      sed -e 's/^[[:space:]]*\(meson\|ninja\|nasm\)[[:space:]]*= ToolProbe.*$//g' \
-          -e '/    ## Additional library and tool checks/,/    ## MinGW specific library and tool checks/d' \
-          -i make/configure.py
-    '' + optionalString stdenv.isDarwin ''
-      # Prevent the configure script from failing if xcodebuild isn't available,
-      # which it isn't in the Nix context. (The actual build goes fine without
-      # xcodebuild.)
-      sed -e '/xcodebuild = ToolProbe/s/abort=.\+)/abort=False)/' -i make/configure.py
-    '' + optionalString useGtk ''
-      substituteInPlace gtk/module.rules \
-        --replace-fail '$(MESON.exe)' 'meson' \
-        --replace-fail '$(NINJA.exe)' 'ninja' \
-      # Force using nixpkgs dependencies
-      substituteInPlace gtk/meson.build \
-        --replace-fail \
-          "hb_incdirs = include_directories(hb_dir / 'libhb', hb_dir / 'contrib/include')" \
-          "hb_incdirs = include_directories(hb_dir / 'libhb')"
-      substituteInPlace gtk/ghb.spec \
-        --replace-fail "gtk-update-icon-cache" "gtk4-update-icon-cache"
-      substituteInPlace gtk/data/post_install.py \
-        --replace-fail "gtk-update-icon-cache" "gtk4-update-icon-cache"
-    '';
-
-    nativeBuildInputs = [
-      autoconf
-      automake
-      libtool
-      m4
-      pkg-config
-      python3
-    ]
-    ++ optionals useGtk [ appstream desktop-file-utils intltool meson ninja wrapGAppsHook4 ];
-
-    buildInputs = [
-      a52dec
-      dav1d
-      ffmpeg-hb
-      fontconfig
-      freetype
-      fribidi
-      harfbuzz
-      jansson
-      lame
-      libass
-      libbluray
-      libdvdcss
-      libdvdnav
-      libdvdread
-      libiconv
-      libjpeg_turbo
-      libogg
-      libopus
-      libsamplerate
-      libtheora
-      libvorbis
-      libvpx
-      libxml2
-      speex
-      svt-av1
-      x264
-      x265-hb
-      xz
-      zimg
-    ]
-    ++ optional (!stdenv.isDarwin) numactl
-    ++ optionals useGtk [
-      dbus-glib
-      glib
-      gst_all_1.gst-libav
-      gst_all_1.gst-plugins-bad
-      gst_all_1.gst-plugins-base
-      gst_all_1.gst-plugins-good
-      gst_all_1.gstreamer
-      gtk4
-      hicolor-icon-theme
-      libappindicator-gtk3
-      libgudev
-      libnotify
-      udev
-    ]
-    ++ optional useFdk fdk_aac
-    ++ optionals stdenv.isDarwin [ AudioToolbox Foundation libobjc VideoToolbox ]
-    # NOTE: 2018-12-27: Handbrake supports nv-codec-headers for Linux only,
-    # look at ./make/configure.py search "enable_nvenc"
-    ++ optional stdenv.isLinux nv-codec-headers;
-
-    configureFlags = [
-      "--disable-df-fetch"
-      "--disable-df-verify"
-    ]
-    ++ optional (!useGtk) "--disable-gtk"
-    ++ optional useFdk "--enable-fdk-aac"
-    ++ optional stdenv.isDarwin "--disable-xcode"
-    ++ optional stdenv.hostPlatform.isx86 "--harden";
-
-    # NOTE: 2018-12-27: Check NixOS HandBrake test if changing
-    NIX_LDFLAGS = [ "-lx265" ];
-
-    # meson/ninja are used only for the subprojects, not the toplevel
-    dontUseMesonConfigure = true;
-    dontUseMesonInstall = true;
-    dontUseNinjaBuild = true;
-    dontUseNinjaInstall = true;
-
-    makeFlags = [ "--directory=build" ];
-
-    passthru = {
-      # for convenience
-      inherit ffmpeg-hb x265-hb;
-
-      tests.basic-conversion =
-        let
-          # Big Buck Bunny example, licensed under CC Attribution 3.0.
-          testMkv = fetchurl {
-            url = "https://github.com/Matroska-Org/matroska-test-files/blob/cf0792be144ac470c4b8052cfe19bb691993e3a2/test_files/test1.mkv?raw=true";
-            sha256 = "1hfxbbgxwfkzv85pvpvx55a72qsd0hxjbm9hkl5r3590zw4s75h9";
-          };
-        in
-        runCommand "${pname}-${version}-basic-conversion" { nativeBuildInputs = [ self ]; } ''
-          mkdir -p $out
-          cd $out
-          HandBrakeCLI -i ${testMkv} -o test.mp4 -e x264 -q 20 -B 160
-          test -e test.mp4
-          HandBrakeCLI -i ${testMkv} -o test.mkv -e x264 -q 20 -B 160
-          test -e test.mkv
-        '';
-
-      tests.version = testers.testVersion { package = self; command = "HandBrakeCLI --version"; };
-    };
-
-    meta = with lib; {
-      homepage = "https://handbrake.fr/";
-      description = "Tool for converting video files and ripping DVDs";
-      longDescription = ''
-        Tool for converting and remuxing video files
-        into selection of modern and widely supported codecs
-        and containers. Very versatile and customizable.
-        Package provides:
-        CLI - `HandbrakeCLI`
-        GTK GUI - `ghb`
-      '';
-      license = licenses.gpl2Only;
-      maintainers = with maintainers; [ Anton-Latukha wmertens ];
-      platforms = with platforms; unix;
-      broken = stdenv.isDarwin;  # https://github.com/NixOS/nixpkgs/pull/297984#issuecomment-2016503434
-    };
-  };
-in
-self