diff --git a/pkgs/applications/video/vdr/plugins.nix b/pkgs/applications/video/vdr/plugins.nix index 589c0144647..022f4382a49 100644 --- a/pkgs/applications/video/vdr/plugins.nix +++ b/pkgs/applications/video/vdr/plugins.nix @@ -1,7 +1,8 @@ { stdenv, fetchurl, fetchgit, vdr, alsaLib, fetchFromGitHub , libvdpau, libxcb, xcbutilwm, graphicsmagick, libav, pcre, xorgserver, ffmpeg -, libiconv, boost, libgcrypt, perl, utillinux, groff, libva, xorg, ncurses }: -let +, libiconv, boost, libgcrypt, perl, utillinux, groff, libva, xorg, ncurses +, callPackage +}: let mkPlugin = name: stdenv.mkDerivation { name = "vdr-${vdr.version}-${name}"; inherit (vdr) src; @@ -11,6 +12,8 @@ let }; in { + xineliboutput = callPackage ./xineliboutput {}; + skincurses = (mkPlugin "skincurses").overrideAttrs(oldAttr: { buildInputs = oldAttr.buildInputs ++ [ ncurses ]; }); diff --git a/pkgs/applications/video/vdr/wrapper.nix b/pkgs/applications/video/vdr/wrapper.nix index 2272d1605fd..497ad7c77a0 100644 --- a/pkgs/applications/video/vdr/wrapper.nix +++ b/pkgs/applications/video/vdr/wrapper.nix @@ -1,5 +1,12 @@ -{ symlinkJoin, lib, makeWrapper, vdr, plugins ? [] }: -symlinkJoin { +{ symlinkJoin, lib, makeWrapper, vdr +, plugins ? [] +}: let + + makeXinePluginPath = l: lib.concatStringsSep ":" (map (p: "${p}/lib/xine/plugins") l); + + requiredXinePlugins = lib.flatten (map (p: p.passthru.requiredXinePlugins or []) plugins); + +in symlinkJoin { name = "vdr-with-plugins-${(builtins.parseDrvName vdr.name).version}"; @@ -8,7 +15,9 @@ symlinkJoin { nativeBuildInputs = [ makeWrapper ]; postBuild = '' - wrapProgram $out/bin/vdr --add-flags "-L $out/lib/vdr --localedir=$out/share/locale" + wrapProgram $out/bin/vdr \ + --add-flags "-L $out/lib/vdr --localedir=$out/share/locale" \ + --prefix XINE_PLUGIN_PATH ":" ${makeXinePluginPath requiredXinePlugins} ''; meta = with vdr.meta; { diff --git a/pkgs/applications/video/vdr/xineliboutput/default.nix b/pkgs/applications/video/vdr/xineliboutput/default.nix new file mode 100644 index 00000000000..d2215b7e486 --- /dev/null +++ b/pkgs/applications/video/vdr/xineliboutput/default.nix @@ -0,0 +1,64 @@ +{ stdenv, fetchurl, lib, vdr +, libav, libcap, libvdpau +, xineLib, libjpeg, libextractor, mesa_noglu, libGLU +, libX11, libXext, libXrender, libXrandr +, makeWrapper +}: let + name = "vdr-xineliboutput-2.1.0"; + + makeXinePluginPath = l: lib.concatStringsSep ":" (map (p: "${p}/lib/xine/plugins") l); + + self = stdenv.mkDerivation { + inherit name; + + src = fetchurl { + url = "mirror://sourceforge/project/xineliboutput/xineliboutput/${name}/${name}.tgz"; + sha256 = "1phrxpaz8li7z0qy241spawalhcmwkv5hh3gdijbv4h7mm899yba"; + }; + + # configure don't accept argument --prefix + dontAddPrefix = true; + + postConfigure = '' + sed -i config.mak \ + -e 's,XINEPLUGINDIR=/[^/]*/[^/]*/[^/]*/,XINEPLUGINDIR=/,' + ''; + + makeFlags = [ "DESTDIR=$(out)" ]; + + postFixup = '' + for f in $out/bin/*; do + wrapProgram $f \ + --prefix XINE_PLUGIN_PATH ":" "${makeXinePluginPath [ "$out" xineLib ]}" + done + ''; + + nativeBuildInputs = [ makeWrapper ]; + + buildInputs = [ + libav + libcap + libextractor + libjpeg + libGLU + libvdpau + libXext + libXrandr + libXrender + libX11 + mesa_noglu + vdr + xineLib + ]; + + passthru.requiredXinePlugins = [ xineLib self ]; + + meta = with lib;{ + homepage = "https://sourceforge.net/projects/xineliboutput/"; + description = "Xine-lib based software output device for VDR"; + maintainers = [ maintainers.ck3d ]; + license = licenses.gpl2; + inherit (vdr.meta) platforms; + }; + }; +in self diff --git a/pkgs/development/libraries/xine-lib/default.nix b/pkgs/development/libraries/xine-lib/default.nix index d86dac05073..fd772a1ff9d 100644 --- a/pkgs/development/libraries/xine-lib/default.nix +++ b/pkgs/development/libraries/xine-lib/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, pkgconfig, xorg, alsaLib, libGLU_combined, aalib +{ stdenv, fetchurl, fetchpatch, pkgconfig, xorg, alsaLib, libGLU_combined, aalib , libvorbis, libtheora, speex, zlib, perl, ffmpeg , flac, libcaca, libpulseaudio, libmng, libcdio, libv4l, vcdimager , libmpcdec @@ -20,6 +20,14 @@ stdenv.mkDerivation rec { libcaca libpulseaudio libmng libcdio libv4l vcdimager libmpcdec ]; + patches = [ + (fetchpatch { + name = "0001-fix-XINE_PLUGIN_PATH-splitting.patch"; + url = "https://sourceforge.net/p/xine/mailman/attachment/32394053-5e27-6558-f0c9-49e0da0bc3cc%40gmx.de/1/"; + sha256 = "0nrsdn7myvjs8fl9rj6k4g1bnv0a84prsscg1q9n49gwn339v5rc"; + }) + ]; + NIX_LDFLAGS = "-lxcb-shm"; propagatedBuildInputs = [zlib];