From 75060fab7625f07d59434d3fa3b52d5cd419f2fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20K=C3=B6gler?= Date: Sun, 7 Apr 2019 15:09:38 +0200 Subject: [PATCH] vdr: fix overrideAttrs (#59083) The current vdr derivation can not be overritten. The attribute plugins gets lost while overriding and that leads to problems when evaluating vdrPlugins. Moved vdr own plugins outside vdr derivation. --- pkgs/applications/video/vdr/default.nix | 93 ++++++++++--------------- pkgs/applications/video/vdr/plugins.nix | 21 +++++- pkgs/top-level/all-packages.nix | 2 +- 3 files changed, 55 insertions(+), 61 deletions(-) diff --git a/pkgs/applications/video/vdr/default.nix b/pkgs/applications/video/vdr/default.nix index 0ad0b04e7e4b..21c2404f4ee7 100644 --- a/pkgs/applications/video/vdr/default.nix +++ b/pkgs/applications/video/vdr/default.nix @@ -1,78 +1,55 @@ { stdenv, fetchurl, fontconfig, libjpeg, libcap, freetype, fribidi, pkgconfig -, gettext, ncurses, systemd, perl +, gettext, systemd, perl, lib , enableSystemd ? true , enableBidi ? true -}: -let - - version = "2.4.0"; +}: stdenv.mkDerivation rec { name = "vdr-${version}"; + version = "2.4.0"; - mkPlugin = name: stdenv.mkDerivation { - name = "vdr-${name}-${version}"; - inherit (vdr) src; - buildInputs = [ vdr ]; - preConfigure = "cd PLUGINS/src/${name}"; - installFlags = [ "DESTDIR=$(out)" ]; + src = fetchurl { + url = "ftp://ftp.tvdr.de/vdr/${name}.tar.bz2"; + sha256 = "1klcgy9kr7n6z8d2c77j63bl8hvhx5qnqppg73f77004hzz4kbwk"; }; - vdr = stdenv.mkDerivation { + enableParallelBuilding = true; - inherit name; + postPatch = "substituteInPlace Makefile --replace libsystemd-daemon libsystemd"; - src = fetchurl { - url = "ftp://ftp.tvdr.de/vdr/${name}.tar.bz2"; - sha256 = "1klcgy9kr7n6z8d2c77j63bl8hvhx5qnqppg73f77004hzz4kbwk"; - }; + buildInputs = [ fontconfig libjpeg libcap freetype ] + ++ lib.optional enableSystemd systemd + ++ lib.optional enableBidi fribidi; - enableParallelBuilding = true; + buildFlags = [ "vdr" "i18n" ] + ++ lib.optional enableSystemd "SDNOTIFY=1" + ++ lib.optional enableBidi "BIDI=1"; - postPatch = "substituteInPlace Makefile --replace libsystemd-daemon libsystemd"; + nativeBuildInputs = [ perl ]; - buildInputs = [ fontconfig libjpeg libcap freetype ] - ++ stdenv.lib.optional enableSystemd systemd - ++ stdenv.lib.optional enableBidi fribidi; + # plugins uses the same build environment as vdr + propagatedNativeBuildInputs = [ pkgconfig gettext ]; - buildFlags = [ "vdr" "i18n" ] - ++ stdenv.lib.optional enableSystemd "SDNOTIFY=1" - ++ stdenv.lib.optional enableBidi "BIDI=1"; + installFlags = [ + "DESTDIR=$(out)" + "PREFIX=" # needs to be empty, otherwise plugins try to install at same prefix + ]; - nativeBuildInputs = [ perl ]; + installTargets = [ "install-pc" "install-bin" "install-doc" "install-i18n" + "install-includes" ]; - # plugins uses the same build environment as vdr - propagatedNativeBuildInputs = [ pkgconfig gettext ]; + postInstall = '' + mkdir -p $out/lib/vdr # only needed if vdr is started without any plugin + mkdir -p $out/share/vdr/conf + cp *.conf $out/share/vdr/conf + ''; - installFlags = [ - "DESTDIR=$(out)" - "PREFIX=" # needs to be empty, otherwise plugins try to install at same prefix - ]; - - installTargets = [ "install-pc" "install-bin" "install-doc" "install-i18n" - "install-includes" ]; - - postInstall = '' - mkdir -p $out/lib/vdr # only needed if vdr is started without any plugin - mkdir -p $out/share/vdr/conf - cp *.conf $out/share/vdr/conf - ''; - - outputs = [ "out" "dev" "man" ]; - - meta = with stdenv.lib; { - homepage = http://www.tvdr.de/; - description = "Video Disc Recorder"; - maintainers = [ maintainers.ck3d ]; - platforms = [ "i686-linux" "x86_64-linux" ]; - license = licenses.gpl2; - }; + outputs = [ "out" "dev" "man" ]; + meta = with lib; { + homepage = http://www.tvdr.de/; + description = "Video Disc Recorder"; + maintainers = [ maintainers.ck3d ]; + platforms = [ "i686-linux" "x86_64-linux" ]; + license = licenses.gpl2; }; -in vdr // { - plugins = { - skincurses = (mkPlugin "skincurses").overrideAttrs( - oldAttr: { buildInputs = oldAttr.buildInputs ++ [ ncurses ]; }); - } // (stdenv.lib.genAttrs [ - "epgtableid0" "hello" "osddemo" "pictures" "servicedemo" "status" "svdrpdemo" - ] mkPlugin); } diff --git a/pkgs/applications/video/vdr/plugins.nix b/pkgs/applications/video/vdr/plugins.nix index 0e543390c4bb..4fc3783ba510 100644 --- a/pkgs/applications/video/vdr/plugins.nix +++ b/pkgs/applications/video/vdr/plugins.nix @@ -1,7 +1,24 @@ { stdenv, fetchurl, fetchgit, vdr, ffmpeg_2, alsaLib, fetchFromGitHub , libvdpau, libxcb, xcbutilwm, graphicsmagick, libav, pcre, xorgserver, ffmpeg -, libiconv, boost, libgcrypt, perl, utillinux, groff, libva, xorg }: -{ +, libiconv, boost, libgcrypt, perl, utillinux, groff, libva, xorg, ncurses }: +let + mkPlugin = name: stdenv.mkDerivation { + name = "vdr-${vdr.version}-${name}"; + inherit (vdr) src; + buildInputs = [ vdr ]; + preConfigure = "cd PLUGINS/src/${name}"; + installFlags = [ "DESTDIR=$(out)" ]; + }; +in { + + skincurses = (mkPlugin "skincurses").overrideAttrs(oldAttr: { + buildInputs = oldAttr.buildInputs ++ [ ncurses ]; + }); + + inherit (stdenv.lib.genAttrs [ + "epgtableid0" "hello" "osddemo" "pictures" "servicedemo" "status" "svdrpdemo" + ] mkPlugin); + femon = stdenv.mkDerivation rec { name = "vdr-femon-2.4.0"; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 35eb3777ab9d..10bb5104352f 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -23547,7 +23547,7 @@ in ghc-standalone-archive = callPackage ../os-specific/darwin/ghc-standalone-archive { inherit (darwin) cctools; }; vdr = callPackage ../applications/video/vdr { }; - vdrPlugins = vdr.plugins // (recurseIntoAttrs (callPackages ../applications/video/vdr/plugins.nix { })); + vdrPlugins = recurseIntoAttrs (callPackages ../applications/video/vdr/plugins.nix { }); wrapVdr = callPackage ../applications/video/vdr/wrapper.nix {}; chrome-gnome-shell = callPackage ../desktops/gnome-3/extensions/chrome-gnome-shell {};