about summary refs log tree commit diff
path: root/pkgs/applications/video/handbrake/default.nix
diff options
context:
space:
mode:
authorVladimír Čunát <v@cunat.cz>2019-09-16 08:28:04 +0200
committerVladimír Čunát <v@cunat.cz>2019-09-16 08:28:04 +0200
commit48af02a402e6f000a3cf1f1b46087e2d74638dc2 (patch)
tree3d242ce8cfa09e466ee98460df47e20616d8dcd7 /pkgs/applications/video/handbrake/default.nix
parentd88f4efd0b1172450cfd211ae659cc4f09ce6689 (diff)
parentaaf3881a80b4d41466d5e2cd8d36d36e89698186 (diff)
Merge #63643: handbrake: fix build on Darwin
Diffstat (limited to 'pkgs/applications/video/handbrake/default.nix')
-rw-r--r--pkgs/applications/video/handbrake/default.nix55
1 files changed, 39 insertions, 16 deletions
diff --git a/pkgs/applications/video/handbrake/default.nix b/pkgs/applications/video/handbrake/default.nix
index a15a4cd5999a9..2e216369de9ca 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;
@@ -59,13 +78,16 @@ stdenv.mkDerivation rec {
   # (default distribution bundles&builds 3rd party libs),
   # don't trigger cmake build
   dontUseCmakeConfigure = true;
-  enableParallelBuilding = true;
+  # cp: cannot create regular file './internal_defaults.json': File exists
+  enableParallelBuilding = false;
 
   preConfigure = ''
     patchShebangs scripts
 
     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 +97,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