diff options
author | Shea Levy <shea@shealevy.com> | 2015-04-18T18·59-0400 |
---|---|---|
committer | Shea Levy <shea@shealevy.com> | 2015-04-18T18·59-0400 |
commit | fd6774e285760b384b0d8a0946b8ba8001b67b82 (patch) | |
tree | d756815cd9b71270639ad2e5f09dd43156f7428b /src/libstore/build.cc | |
parent | 9b1866b721ba683ac9ec6b8b9a67da25e3183ebf (diff) |
Revert "Add the pre-build hook."
Going to reimplement differently. This reverts commit 1e4a4a2e9fc382f47f58b448f3ee034cdd28218a.
Diffstat (limited to 'src/libstore/build.cc')
-rw-r--r-- | src/libstore/build.cc | 107 |
1 files changed, 0 insertions, 107 deletions
diff --git a/src/libstore/build.cc b/src/libstore/build.cc index de33e115412a..1fc5d4181d57 100644 --- a/src/libstore/build.cc +++ b/src/libstore/build.cc @@ -89,7 +89,6 @@ static string pathNullDevice = "/dev/null"; /* Forward definition. */ class Worker; struct HookInstance; -struct PreBuildHookInstance; /* A pointer to a goal. */ @@ -270,8 +269,6 @@ public: std::shared_ptr<HookInstance> hook; - std::shared_ptr<PreBuildHookInstance> preBuildHook; - Worker(LocalStore & store); ~Worker(); @@ -652,72 +649,6 @@ HookInstance::~HookInstance() ////////////////////////////////////////////////////////////////////// -struct PreBuildHookInstance -{ - /* Pipes for talking to the build hook. */ - Pipe toHook; - - /* Pipe for the hook's standard output/error. */ - Pipe fromHook; - - /* The process ID of the hook. */ - Pid pid; - - PreBuildHookInstance(); - - ~PreBuildHookInstance(); -}; - - -PreBuildHookInstance::PreBuildHookInstance() -{ - debug("starting pre-build hook"); - - /* Create a pipe to get the output of the child. */ - fromHook.create(); - - /* Create the communication pipes. */ - toHook.create(); - - /* Fork the hook. */ - pid = startProcess([&]() { - - commonChildInit(fromHook); - - if (chdir("/") == -1) throw SysError("changing into /"); - - /* Dup the communication pipes. */ - if (dup2(toHook.readSide, STDIN_FILENO) == -1) - throw SysError("dupping to-hook read side"); - - setenv("_NIX_OPTIONS", settings.pack().c_str(), 1); - - execl(settings.preBuildHook.c_str(), settings.preBuildHook.c_str(), - NULL); - - throw SysError(format("executing ‘%1%’") % settings.preBuildHook); - }); - - pid.setSeparatePG(true); - fromHook.writeSide.close(); - toHook.readSide.close(); -} - - -PreBuildHookInstance::~PreBuildHookInstance() -{ - try { - toHook.writeSide.close(); - pid.kill(true); - } catch (...) { - ignoreException(); - } -} - - -////////////////////////////////////////////////////////////////////// - - typedef map<string, string> HashRewrites; @@ -882,13 +813,6 @@ private: /* Is the build hook willing to perform the build? */ HookReply tryBuildHook(); - /* Run the pre-build hook, which can set system-specific - per-derivation settings too complex/volatile to hard-code - in nix itself */ - void runPreBuildHook(); - - PathSet extraChrootDirs; - /* Start building a derivation. */ void startBuilder(); @@ -1254,9 +1178,6 @@ void DerivationGoal::inputsRealised() foreach (DerivationOutputs::iterator, i, drv.outputs) if (i->second.hash == "") fixedOutput = false; - /* Ask the pre-build hook for any required settings */ - runPreBuildHook(); - /* Okay, try to build. Note that here we don't wait for a build slot to become available, since we don't need one if there is a build hook. */ @@ -1873,7 +1794,6 @@ void DerivationGoal::startBuilder() PathSet dirs = tokenizeString<StringSet>(settings.get("build-chroot-dirs", defaultChrootDirs)); PathSet dirs2 = tokenizeString<StringSet>(settings.get("build-extra-chroot-dirs", string(""))); dirs.insert(dirs2.begin(), dirs2.end()); - dirs.insert(extraChrootDirs.begin(), extraChrootDirs.end()); for (auto & i : dirs) { size_t p = i.find('='); @@ -2874,33 +2794,6 @@ Path DerivationGoal::addHashRewrite(const Path & path) } -void DerivationGoal::runPreBuildHook() -{ - if (settings.preBuildHook == "") - return; - - if (!worker.preBuildHook) - worker.preBuildHook = std::make_shared<PreBuildHookInstance>(); - - writeLine(worker.preBuildHook->toHook.writeSide, drvPath); - while (true) { - string s = readLine(worker.preBuildHook->fromHook.readSide); - if (s == "extra-chroot-dirs") { - while (true) { - string s = readLine(worker.preBuildHook->fromHook.readSide); - if (s == "") - break; - extraChrootDirs.emplace(std::move(s)); - } - } else if (s == "") { - break; - } else { - throw Error(format("unknown pre-build hook command ‘%1%’") % s); - } - } -} - - ////////////////////////////////////////////////////////////////////// |