handbrake: fix Darwin build by turning off GUI support

This involved several pieces:

- Always disable GTK GUI support under Darwin. The gtk3 package depends
  transitively on dbus, which depends transitively on systemd, which is
  not currently supported on Darwin. (I gather that it may be possible
  to work around this in the future.)
- Also disable the native GUI support under Darwin (using the
  --disable-xcode flag). Building this GUI would require using the Xcode
  build system, which I was not able to figure out how to do; for now,
  all builds on Darwin are command-line-only.
- Add the lzma package as a dependency on all platforms.
- Add dependencies on the AudioToolbox, Foundation, libobjc, and
  VideoToolbox packages on Darwin.
This commit is contained in:
Benjamin Esham 2019-07-19 13:16:11 -04:00
parent 663542ad04
commit 765cd8c2ed
2 changed files with 41 additions and 16 deletions

View file

@ -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

View file

@ -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;