aboutsummaryrefslogtreecommitdiff
path: root/pkgs/applications/video
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
parentd88f4efd0b1172450cfd211ae659cc4f09ce6689 (diff)
parentaaf3881a80b4d41466d5e2cd8d36d36e89698186 (diff)
Merge #63643: handbrake: fix build on Darwin
Diffstat (limited to 'pkgs/applications/video')
-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 a15a4cd5999..2e216369de9 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