about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/applications/video/handbrake/default.nix52
-rw-r--r--pkgs/top-level/all-packages.nix5
2 files changed, 41 insertions, 16 deletions
diff --git a/pkgs/applications/video/handbrake/default.nix b/pkgs/applications/video/handbrake/default.nix
index aa2407134f383..7155d63b8dcc2 100644
--- a/pkgs/applications/video/handbrake/default.nix
+++ b/pkgs/applications/video/handbrake/default.nix
@@ -2,10 +2,14 @@
 #
 # 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, fetchurl,
   # Main build tools
-  python2, pkgconfig, autoconf, automake, cmake, nasm, libtool, m4,
+  python2, pkgconfig, autoconf, automake, cmake, nasm, libtool, m4, lzma,
   # Processing, video codecs, containers
   ffmpeg-full, nv-codec-headers, libogg, x264, x265, libvpx, libtheora,
   # Codecs, audio
@@ -14,20 +18,34 @@
   libiconv, fribidi, fontconfig, freetype, libass, jansson, libxml2, harfbuzz,
   # Optical media
   libdvdread, libdvdnav, libdvdcss, libbluray,
-  useGtk ? true, wrapGAppsHook ? null,
-                 intltool ? null,
-                 glib ? null,
-                 gtk3 ? null,
-                 libappindicator-gtk3 ? null,
-                 libnotify ? null,
-                 gst_all_1 ? null,
-                 dbus-glib ? null,
-                 udev ? null,
-                 libgudev ? null,
-                 hicolor-icon-theme ? null,
+  # Darwin-specific
+  AudioToolbox ? null,
+  Foundation ? null,
+  libobjc ? null,
+  VideoToolbox ? null,
+  # 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, wrapGAppsHook ? null,
+                             intltool ? null,
+                             glib ? null,
+                             gtk3 ? null,
+                             libappindicator-gtk3 ? null,
+                             libnotify ? null,
+                             gst_all_1 ? null,
+                             dbus-glib ? null,
+                             udev ? null,
+                             libgudev ? null,
+                             hicolor-icon-theme ? null,
+  # FDK
   useFdk ? false, fdk_aac ? null
 }:
 
+assert stdenv.isDarwin -> AudioToolbox != null && Foundation != null
+  && libobjc != null && VideoToolbox != null;
+
 stdenv.mkDerivation rec {
   pname = "handbrake";
   version = "1.2.2";
@@ -45,12 +63,13 @@ stdenv.mkDerivation rec {
     ffmpeg-full libogg libtheora x264 x265 libvpx
     libopus lame libvorbis a52dec speex libsamplerate
     libiconv fribidi fontconfig freetype libass jansson libxml2 harfbuzz
-    libdvdread libdvdnav libdvdcss libbluray
+    libdvdread libdvdnav libdvdcss libbluray lzma
   ] ++ lib.optionals useGtk [
     glib gtk3 libappindicator-gtk3 libnotify
     gst_all_1.gstreamer gst_all_1.gst-plugins-base dbus-glib udev
     libgudev hicolor-icon-theme
   ] ++ lib.optional useFdk fdk_aac
+    ++ lib.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"
     ++ lib.optional stdenv.isLinux nv-codec-headers;
@@ -66,6 +85,8 @@ stdenv.mkDerivation rec {
 
     substituteInPlace libhb/module.defs \
       --replace /usr/include/libxml2 ${libxml2.dev}/include/libxml2
+    substituteInPlace libhb/module.defs \
+      --replace '$(CONTRIB.build/)include/libxml2' ${libxml2.dev}/include/libxml2
 
     # Force using nixpkgs dependencies
     sed -i '/MODULES += contrib/d' make/include/main.defs
@@ -75,8 +96,9 @@ stdenv.mkDerivation rec {
   configureFlags = [
     "--disable-df-fetch"
     "--disable-df-verify"
-    (if useGtk then "--disable-gtk-update-checks" else "--disable-gtk")
-    (if useFdk then "--enable-fdk-aac"            else "")
+    (if useGtk          then "--disable-gtk-update-checks" else "--disable-gtk")
+    (if useFdk          then "--enable-fdk-aac"            else "")
+    (if stdenv.isDarwin then "--disable-xcode"             else "")
   ];
 
   # NOTE: 2018-12-27: Check NixOS HandBrake test if changing
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 03ae106c481a8..ff67f8ca79dc0 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -18990,7 +18990,10 @@ in
 
   lxdvdrip = callPackage ../applications/video/lxdvdrip { };
 
-  handbrake = callPackage ../applications/video/handbrake { };
+  handbrake = callPackage ../applications/video/handbrake {
+    inherit (darwin.apple_sdk.frameworks) AudioToolbox Foundation VideoToolbox;
+    inherit (darwin) libobjc;
+  };
 
   lilyterm = callPackage ../applications/misc/lilyterm {
     inherit (gnome2) vte;