From c86929e403559a6f9bc4cd76bbdd9fe9edd9686f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@gnu.org>
Date: Sat, 2 Mar 2013 15:25:04 +0100
Subject: [PATCH] release.nix: Unchroot recursively.

* release.nix (unchroot): Operate recursively on build inputs.
---
 release.nix | 21 +++++++++++++++++----
 1 file changed, 17 insertions(+), 4 deletions(-)

diff --git a/release.nix b/release.nix
index aed99717df8..91eb372c601 100644
--- a/release.nix
+++ b/release.nix
@@ -30,10 +30,23 @@ let
   # hydra.gnu.org where we want Guix derivations to run in a chroot that lacks
   # /bin, whereas Nixpkgs relies on /bin/sh.
   unchroot =
-    let pkgs = import nixpkgs {}; in
-      drv: pkgs.lib.overrideDerivation drv (args: {
-        __noChroot = true;
-      });
+    let
+      pkgs = import nixpkgs {};
+
+      # XXX: The `python' derivation contains a `modules' attribute that makes
+      # `overrideDerivation' fail with "cannot coerce an attribute set (except
+      # a derivation) to a string", so just remove it.
+      pythonKludge = drv: removeAttrs drv [ "modules" ];
+    in
+      drv:
+        if builtins.isAttrs drv
+        then pkgs.lib.overrideDerivation (pythonKludge drv) (args: {
+          __noChroot = true;
+          buildNativeInputs = map unchroot args.buildNativeInputs;
+          propagatedBuildNativeInputs =
+            map unchroot args.propagatedBuildNativeInputs;
+        })
+        else drv;
 
   # The Guile used to bootstrap the whole thing.  It's normally
   # downloaded by the build system, but here we download it via a
-- 
GitLab