about summary refs log tree commit diff
path: root/pkgs/applications/video/mkvtoolnix
diff options
context:
space:
mode:
authorcodyopel <codyopel@gmail.com>2015-05-11 06:20:12 -0400
committercodyopel <codyopel@gmail.com>2015-05-11 06:20:12 -0400
commit46d30ae22f741e58c24d14755c76a337c88c9404 (patch)
tree2aff5aaecad454428b9d98f22324ba2209e19ca1 /pkgs/applications/video/mkvtoolnix
parent19dbe42aeb762ec6ddae9e6af20959424857703a (diff)
downloadnixlib-46d30ae22f741e58c24d14755c76a337c88c9404.tar
nixlib-46d30ae22f741e58c24d14755c76a337c88c9404.tar.gz
nixlib-46d30ae22f741e58c24d14755c76a337c88c9404.tar.bz2
nixlib-46d30ae22f741e58c24d14755c76a337c88c9404.tar.lz
nixlib-46d30ae22f741e58c24d14755c76a337c88c9404.tar.xz
nixlib-46d30ae22f741e58c24d14755c76a337c88c9404.tar.zst
nixlib-46d30ae22f741e58c24d14755c76a337c88c9404.zip
mkvtoolnix: 7.8.0 -> 7.9.0
Diffstat (limited to 'pkgs/applications/video/mkvtoolnix')
-rw-r--r--pkgs/applications/video/mkvtoolnix/default.nix79
1 files changed, 52 insertions, 27 deletions
diff --git a/pkgs/applications/video/mkvtoolnix/default.nix b/pkgs/applications/video/mkvtoolnix/default.nix
index 01d96542c2e7..0dbf42713831 100644
--- a/pkgs/applications/video/mkvtoolnix/default.nix
+++ b/pkgs/applications/video/mkvtoolnix/default.nix
@@ -1,49 +1,74 @@
-{ stdenv, fetchurl
-, libmatroska
-, flac
-, libvorbis
-, file
-, boost
-, xdg_utils
-, expat
-, withGUI ? true
-, wxGTK
-, zlib
-, ruby
-, gettext
-, pkgconfig
-, curl
+{ stdenv, fetchurl, gettext, pkgconfig, ruby
+, boost, expat, file, flac, libebml, libmatroska, libogg, libvorbis, xdg_utils, zlib
+# pugixml (not packaged)
+, buildConfig ? "all"
+, withGUI ? false, qt5 ? null # Disabled for now until upstream issues are resolved
+, legacyGUI ? true, wxGTK ? null
+# For now both qt5 and wxwidgets gui's are enabled, if wxwidgets is disabled the
+# build system doesn't install desktop entries, icons, etc...
 }:
 
-assert withGUI -> wxGTK != null;
+let
+  inherit (stdenv.lib) enableFeature optional;
+in
+
+assert withGUI -> qt5 != null;
+assert legacyGUI -> wxGTK != null;
 
 stdenv.mkDerivation rec {
-  version = "7.8.0";
   name = "mkvtoolnix-${version}";
+  version = "7.9.0";
 
   src = fetchurl {
     url = "http://www.bunkus.org/videotools/mkvtoolnix/sources/${name}.tar.xz";
-    sha256 = "0m7y9115bkfsm95hv2nq0hnd9w73jymsm071jm798w11vdskm8af";
+    sha256 = "0jmsgfkxrnplpmwlzynqdb4xf3x1z3dminz97gmddswwgnjqyy1r";
   };
 
+  patchPhase = ''
+    patchShebangs ./rake.d/
+    patchShebangs ./Rakefile
+    # Force ruby encoding to use UTF-8 or else when enabling qt5 the Rakefile may
+    # fail with `invalid byte sequence in US-ASCII' due to UTF-8 characters
+    # This workaround replaces an arbitrary comment in the drake file
+    sed -e 's,#--,Encoding.default_external = Encoding::UTF_8,' -i ./drake
+  '';
+
+  configureFlags = [
+    "--with-boost-libdir=${boost.lib}/lib"
+    "--without-curl"
+  ] ++ (
+    if (withGUI || legacyGUI) then [
+      "--with-mkvtoolnix-gui"
+      "--enable-gui"
+      (enableFeature withGUI "qt")
+      (enableFeature legacyGUI "wxwidgets")
+    ] else [
+      "--disable-gui"
+    ]
+  );
+
+  nativeBuildInputs = [ gettext pkgconfig ruby ];
+
   buildInputs = [
-    libmatroska flac libvorbis file boost xdg_utils
-    expat zlib ruby gettext pkgconfig curl
-    ] ++ stdenv.lib.optional withGUI wxGTK;
+    boost expat file flac libebml libmatroska libogg libvorbis xdg_utils zlib
+  ] ++ optional withGUI qt5
+    ++ optional legacyGUI wxGTK;
+
+  enableParallelBuilding = true;
 
-  configureFlags = "--with-boost-libdir=${boost.lib}/lib";
   buildPhase = ''
-    ruby ./drake
+    ./drake
   '';
 
   installPhase = ''
-    ruby ./drake install
+    ./drake install
   '';
 
-  meta = {
+  meta = with stdenv.lib; {
     description = "Cross-platform tools for Matroska";
     homepage = http://www.bunkus.org/videotools/mkvtoolnix/;
-    license = stdenv.lib.licenses.gpl2;
-    maintainers = with stdenv.lib.maintainers; [ fuuzetsu ];
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ codyopel fuuzetsu ];
+    platforms = platforms.unix;
   };
 }