From 612c77a399011782af4d84e55fafa728dfeba4cb Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Thu, 17 Nov 2016 08:06:00 -0500 Subject: [PATCH] Update darwin build for optional sandbox paths Fixes #1132 (cherry picked from commit 8bf378e9998cfbeb4303fade33fe514a4c18bf81) --- src/libstore/build.cc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/libstore/build.cc b/src/libstore/build.cc index 4996a71c..3236bfdb 100644 --- a/src/libstore/build.cc +++ b/src/libstore/build.cc @@ -2540,15 +2540,18 @@ void DerivationGoal::runChild() */ sandboxProfile += "(allow file-read* file-write* process-exec\n"; for (auto & i : dirsInChroot) { - if (i.first != i.second) + if (i.first != i.second.source) throw Error(format( "can't map '%1%' to '%2%': mismatched impure paths not supported on Darwin") - % i.first % i.second); + % i.first % i.second.source); string path = i.first; struct stat st; - if (lstat(path.c_str(), &st)) + if (lstat(path.c_str(), &st)) { + if (i.second.optional && errno == ENOENT) + continue; throw SysError(format("getting attributes of path ‘%1%’") % path); + } if (S_ISDIR(st.st_mode)) sandboxProfile += (format("\t(subpath \"%1%\")\n") % path).str(); else