From fd89f97be97d4f698efd208140062a3f701ef76e Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 24 Mar 2015 11:50:22 +0100 Subject: Add the closure of store paths to the chroot Thus, for example, to get /bin/sh in a chroot, you only need to specify /bin/sh=${pkgs.bash}/bin/sh in build-chroot-dirs. The dependencies of sh will be added automatically. --- src/libstore/build.cc | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/libstore/build.cc') diff --git a/src/libstore/build.cc b/src/libstore/build.cc index 88efb9a65d1a..1c510fa7d514 100644 --- a/src/libstore/build.cc +++ b/src/libstore/build.cc @@ -1799,6 +1799,14 @@ void DerivationGoal::startBuilder() } dirsInChroot[tmpDir] = tmpDir; + /* Add the closure of store paths to the chroot. */ + PathSet closure; + for (auto & i : dirsInChroot) + if (isInStore(i.second)) + computeFSClosure(worker.store, toStorePath(i.second), closure); + for (auto & i : closure) + dirsInChroot[i] = i; + string allowed = settings.get("allowed-impure-host-deps", string(DEFAULT_ALLOWED_IMPURE_PREFIXES)); PathSet allowedPaths = tokenizeString(allowed); -- cgit 1.4.1