summary refs log tree commit diff
path: root/pkgs/applications/video/mpv
diff options
context:
space:
mode:
authorrnhmjoj <micheleguerinirocco@me.com>2016-08-27 06:36:40 +0200
committerrnhmjoj <micheleguerinirocco@me.com>2016-09-04 22:27:10 +0200
commit6fabc515d01a5644a027a7d12f845979fce023a3 (patch)
treeea0e64bb83f547795f6d1b40c209b9a9312d40cd /pkgs/applications/video/mpv
parentd7e5fbfb573e14e9492865883030e520d2febc55 (diff)
downloadnixlib-6fabc515d01a5644a027a7d12f845979fce023a3.tar
nixlib-6fabc515d01a5644a027a7d12f845979fce023a3.tar.gz
nixlib-6fabc515d01a5644a027a7d12f845979fce023a3.tar.bz2
nixlib-6fabc515d01a5644a027a7d12f845979fce023a3.tar.lz
nixlib-6fabc515d01a5644a027a7d12f845979fce023a3.tar.xz
nixlib-6fabc515d01a5644a027a7d12f845979fce023a3.tar.zst
nixlib-6fabc515d01a5644a027a7d12f845979fce023a3.zip
mpv: add vapoursynth support
Diffstat (limited to 'pkgs/applications/video/mpv')
-rw-r--r--pkgs/applications/video/mpv/default.nix181
1 files changed, 99 insertions, 82 deletions
diff --git a/pkgs/applications/video/mpv/default.nix b/pkgs/applications/video/mpv/default.nix
index 7eea4dc2d697..507e99665e01 100644
--- a/pkgs/applications/video/mpv/default.nix
+++ b/pkgs/applications/video/mpv/default.nix
@@ -1,56 +1,70 @@
-{ stdenv, fetchurl, fetchFromGitHub, docutils, makeWrapper, perl, pkgconfig
-, python, which, ffmpeg, freefont_ttf, freetype, libass, libpthreadstubs
-, lua, lua5_sockets
-, libuchardet, rubberband
-, x11Support ? true, libX11 ? null, libXext ? null, mesa ? null, libXxf86vm ? null
-, xineramaSupport ? true, libXinerama ? null
-, xvSupport ? true, libXv ? null
-, sdl2Support? true, SDL2 ? null
-, alsaSupport ? true, alsaLib ? null
-, screenSaverSupport ? true, libXScrnSaver ? null
-, vdpauSupport ? true, libvdpau ? null
-, dvdreadSupport? true, libdvdread ? null
-, dvdnavSupport ? true, libdvdnav ? null
-, bluraySupport ? true, libbluray ? null
-, speexSupport ? true, speex ? null
-, theoraSupport ? true, libtheora ? null
-, jackaudioSupport ? false, libjack2 ? null
-, pulseSupport ? true, libpulseaudio ? null
-, bs2bSupport ? true, libbs2b ? null
-# For screenshots
-, libpngSupport ? true, libpng ? null
-# for Youtube support
-, youtubeSupport ? true, youtube-dl ? null
-, cacaSupport ? true, libcaca ? null
-, vaapiSupport ? false, libva ? null
-, waylandSupport ? false, wayland ? null, libxkbcommon ? null
+{ stdenv, fetchurl, fetchFromGitHub, makeWrapper
+, docutils, perl, pkgconfig, python3, which, ffmpeg
+, freefont_ttf, freetype, libass, libpthreadstubs
+, lua, lua5_sockets, libuchardet, rubberband
+
+, x11Support ? true,
+    mesa       ? null,
+    libX11     ? null,
+    libXext    ? null,
+    libXxf86vm ? null
+
+, waylandSupport ? false,
+    wayland      ? null,
+    libxkbcommon ? null
+
+, xineramaSupport    ? true,  libXinerama   ? null
+, xvSupport          ? true,  libXv         ? null
+, sdl2Support        ? true,  SDL2          ? null
+, alsaSupport        ? true,  alsaLib       ? null
+, screenSaverSupport ? true,  libXScrnSaver ? null
+, vdpauSupport       ? true,  libvdpau      ? null
+, dvdreadSupport     ? true,  libdvdread    ? null
+, dvdnavSupport      ? true,  libdvdnav     ? null
+, bluraySupport      ? true,  libbluray     ? null
+, speexSupport       ? true,  speex         ? null
+, theoraSupport      ? true,  libtheora     ? null
+, pulseSupport       ? true,  libpulseaudio ? null
+, bs2bSupport        ? true,  libbs2b       ? null
+, cacaSupport        ? true,  libcaca       ? null
+, libpngSupport      ? true,  libpng        ? null
+, youtubeSupport     ? true,  youtube-dl    ? null
+, vapoursynthSupport ? false, vapoursynth   ? null
+, jackaudioSupport   ? false, libjack2      ? null
+, vaapiSupport       ? false, libva         ? null
+
 # scripts you want to be loaded by default
 , scripts ? []
 }:
 
-assert x11Support -> (libX11 != null && libXext != null && mesa != null && libXxf86vm != null);
-assert xineramaSupport -> (libXinerama != null && x11Support);
-assert xvSupport -> (libXv != null && x11Support);
-assert sdl2Support -> SDL2 != null;
-assert alsaSupport -> alsaLib != null;
-assert screenSaverSupport -> libXScrnSaver != null;
-assert vdpauSupport -> libvdpau != null;
-assert dvdreadSupport -> libdvdread != null;
-assert dvdnavSupport -> libdvdnav != null;
-assert bluraySupport -> libbluray != null;
-assert speexSupport -> speex != null;
-assert theoraSupport -> libtheora != null;
-assert jackaudioSupport -> libjack2 != null;
-assert pulseSupport -> libpulseaudio != null;
-assert bs2bSupport -> libbs2b != null;
-assert libpngSupport -> libpng != null;
-assert youtubeSupport -> youtube-dl != null;
-assert cacaSupport -> libcaca != null;
-assert waylandSupport -> (wayland != null && libxkbcommon != null);
+with stdenv.lib;
 
-let
-  inherit (stdenv.lib) optional optionals optionalString concatStringsSep;
+let 
+  available = x: x != null;
+in
+assert x11Support         -> all available [mesa libX11 libXext libXxf86vm];
+assert waylandSupport     -> all available [wayland libxkbcommon];
+assert xineramaSupport    -> x11Support && available libXinerama;
+assert xvSupport          -> x11Support && available libXv;
+assert sdl2Support        -> available SDL2;
+assert alsaSupport        -> available alsaLib;
+assert screenSaverSupport -> available libXScrnSaver;
+assert vdpauSupport       -> available libvdpau;
+assert dvdreadSupport     -> available libdvdread;
+assert dvdnavSupport      -> available libdvdnav;
+assert bluraySupport      -> available libbluray;
+assert speexSupport       -> available speex;
+assert theoraSupport      -> available libtheora;
+assert pulseSupport       -> available libpulseaudio;
+assert bs2bSupport        -> available libbs2b;
+assert cacaSupport        -> available libcaca;
+assert libpngSupport      -> available libpng;
+assert youtubeSupport     -> available youtube-dl;
+assert vapoursynthSupport -> available vapoursynth;
+assert jackaudioSupport   -> available libjack2;
+assert vaapiSupport       -> available libva;
 
+let
   # Purity: Waf is normally downloaded by bootstrap.py, but
   # for purity reasons this behavior should be avoided.
   wafVersion = "1.8.12";
@@ -59,16 +73,14 @@ let
              "http://www.freehackers.org/~tnagy/release/waf-${wafVersion}" ];
     sha256 = "12y9c352zwliw0zk9jm2lhynsjcf5jy0k1qch1c1av8hnbm2pgq1";
   };
-in
-
-stdenv.mkDerivation rec {
+in stdenv.mkDerivation rec {
   name = "mpv-${version}";
   version = "0.19.0";
 
   src = fetchFromGitHub {
     owner = "mpv-player";
-    repo = "mpv";
-    rev = "v${version}";
+    repo  = "mpv";
+    rev    = "v${version}";
     sha256 = "14rbglrcplhkf16ik4fbcv7k27lz6h4glfayr12ylh98srmsscqa";
   };
 
@@ -80,60 +92,65 @@ stdenv.mkDerivation rec {
 
   configureFlags = [
     "--enable-libmpv-shared"
+    "--enable-manpage-build"
+    "--enable-zsh-comp"
     "--disable-libmpv-static"
     "--disable-static-build"
-    "--enable-manpage-build"
     "--disable-build-date" # Purity
-    "--enable-zsh-comp"
-  ] ++ optional vaapiSupport "--enable-vaapi"
-  ++ optional waylandSupport "--enable-wayland";
+    (enableFeature vaapiSupport "vaapi")
+    (enableFeature waylandSupport "wayland")
+  ];
 
   configurePhase = ''
-    python ${waf} configure --prefix=$out $configureFlags
+    python3 ${waf} configure --prefix=$out $configureFlags
   '';
 
-  nativeBuildInputs = [ docutils makeWrapper perl pkgconfig python which ];
+  nativeBuildInputs = [ docutils makeWrapper perl pkgconfig python3 which ];
 
   buildInputs = [
-    ffmpeg freetype libass libpthreadstubs lua lua5_sockets libuchardet rubberband
-  ] ++ optionals x11Support [ libX11 libXext mesa libXxf86vm ]
-    ++ optional alsaSupport alsaLib
-    ++ optional xvSupport libXv
-    ++ optional theoraSupport libtheora
-    ++ optional xineramaSupport libXinerama
-    ++ optional dvdreadSupport libdvdread
-    ++ optionals dvdnavSupport [ libdvdnav libdvdnav.libdvdread ]
-    ++ optional bluraySupport libbluray
-    ++ optional jackaudioSupport libjack2
-    ++ optional pulseSupport libpulseaudio
+    ffmpeg freetype libass libpthreadstubs
+    lua lua5_sockets libuchardet rubberband
+  ] ++ optional alsaSupport        alsaLib
+    ++ optional xvSupport          libXv
+    ++ optional theoraSupport      libtheora
+    ++ optional xineramaSupport    libXinerama
+    ++ optional dvdreadSupport     libdvdread
+    ++ optional bluraySupport      libbluray
+    ++ optional jackaudioSupport   libjack2
+    ++ optional pulseSupport       libpulseaudio
     ++ optional screenSaverSupport libXScrnSaver
-    ++ optional vdpauSupport libvdpau
-    ++ optional speexSupport speex
-    ++ optional bs2bSupport libbs2b
-    ++ optional libpngSupport libpng
-    ++ optional youtubeSupport youtube-dl
-    ++ optional sdl2Support SDL2
-    ++ optional cacaSupport libcaca
-    ++ optional vaapiSupport libva
-    ++ optionals waylandSupport [ wayland libxkbcommon ];
+    ++ optional vdpauSupport       libvdpau
+    ++ optional speexSupport       speex
+    ++ optional bs2bSupport        libbs2b
+    ++ optional libpngSupport      libpng
+    ++ optional youtubeSupport     youtube-dl
+    ++ optional sdl2Support        SDL2
+    ++ optional cacaSupport        libcaca
+    ++ optional vaapiSupport       libva
+    ++ optional vapoursynthSupport vapoursynth
+    ++ optionals dvdnavSupport     [ libdvdnav libdvdnav.libdvdread ]
+    ++ optionals x11Support        [ libX11 libXext mesa libXxf86vm ]
+    ++ optionals waylandSupport    [ wayland libxkbcommon ];
 
   enableParallelBuilding = true;
 
   buildPhase = ''
-    python ${waf} build
+    python3 ${waf} build
   '';
 
   installPhase = ''
-    python ${waf} install
+    python3 ${waf} install
 
     # Use a standard font
     mkdir -p $out/share/mpv
     ln -s ${freefont_ttf}/share/fonts/truetype/FreeSans.ttf $out/share/mpv/subfont.ttf
-  '' + optionalString youtubeSupport ''
     # Ensure youtube-dl is available in $PATH for MPV
     wrapProgram $out/bin/mpv \
+      --add-flags "--script=${concatStringsSep "," scripts}" \
+  '' + optionalString youtubeSupport ''
       --prefix PATH : "${youtube-dl}/bin" \
-      --add-flags "--script=${concatStringsSep "," scripts}"
+  '' + optionalString vapoursynthSupport ''
+      --prefix PYTHONPATH : "$(toPythonPath ${vapoursynth}):$PYTHONPATH"
   '';
 
   meta = with stdenv.lib; {