From 88c505c9e0e63d2247c4407763fcd4b2430f25b5 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Sun, 16 Aug 2009 13:14:33 +0000 Subject: [PATCH] * make-etc.sh: fixed the duplicate entry check. * Inlined make-etc.nix since it's a trivial function. svn path=/nixos/trunk/; revision=16728 --- modules/system/etc/etc.nix | 14 ++++++++++---- modules/system/etc/make-etc.nix | 12 ------------ modules/system/etc/make-etc.sh | 12 ++++++------ 3 files changed, 16 insertions(+), 22 deletions(-) delete mode 100644 modules/system/etc/make-etc.nix diff --git a/modules/system/etc/etc.nix b/modules/system/etc/etc.nix index da60108d7c9..4ae420017a5 100644 --- a/modules/system/etc/etc.nix +++ b/modules/system/etc/etc.nix @@ -36,11 +36,17 @@ let chmod ${mode} "$target" ''; - makeEtc = import ./make-etc.nix { - inherit (pkgs) stdenv; - configFiles = config.environment.etc; + makeEtc = pkgs.stdenv.mkDerivation { + name = "etc"; + + builder = ./make-etc.sh; + + /* !!! Use toXML. */ + sources = map (x: x.source) config.environment.etc; + targets = map (x: x.target) config.environment.etc; + modes = map (x: if x ? mode then x.mode else "symlink") config.environment.etc; }; - + in { diff --git a/modules/system/etc/make-etc.nix b/modules/system/etc/make-etc.nix deleted file mode 100644 index 94ea248f669..00000000000 --- a/modules/system/etc/make-etc.nix +++ /dev/null @@ -1,12 +0,0 @@ -{stdenv, configFiles}: - -stdenv.mkDerivation { - name = "etc"; - - builder = ./make-etc.sh; - - /* !!! Use toXML. */ - sources = map (x: x.source) configFiles; - targets = map (x: x.target) configFiles; - modes = map (x: if x ? mode then x.mode else "symlink") configFiles; -} diff --git a/modules/system/etc/make-etc.sh b/modules/system/etc/make-etc.sh index 4b7bb68be4b..f05d74b55fc 100644 --- a/modules/system/etc/make-etc.sh +++ b/modules/system/etc/make-etc.sh @@ -8,13 +8,13 @@ modes_=($modes) for ((i = 0; i < ${#targets_[@]}; i++)); do ensureDir $out/etc/$(dirname ${targets_[$i]}) if ! test -e $out/etc/${targets_[$i]}; then - ln -s ${sources_[$i]} $out/etc/${targets_[$i]}; + ln -s ${sources_[$i]} $out/etc/${targets_[$i]}; else - echo Duplicate entry "${targets_[$i]} -> ${sources_[$i]}" - if test "$(readlink "$targets_[$i]")" -ne "$sources_[$i]"; then - echo Mismatched duplicate entry "$(readlink "$targets_[$i]") "'<>'" $sources_[$i]" - exit 1 - fi + echo "Duplicate entry ${targets_[$i]} -> ${sources_[$i]}" + if test "$(readlink $out/etc/${targets_[$i]})" != "${sources_[$i]}"; then + echo "Mismatched duplicate entry $(readlink $out/etc/${targets_[$i]}) <-> ${sources_[$i]}" + exit 1 + fi fi; if test "${modes_[$i]}" != symlink; then echo "${modes_[$i]}" > $out/etc/${targets_[$i]}.mode