aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShea Levy <shea@shealevy.com>2015-04-18 14:59:58 -0400
committerShea Levy <shea@shealevy.com>2015-04-18 14:59:58 -0400
commitfd6774e285760b384b0d8a0946b8ba8001b67b82 (patch)
treed756815cd9b71270639ad2e5f09dd43156f7428b /src
parent9b1866b721ba683ac9ec6b8b9a67da25e3183ebf (diff)
Revert "Add the pre-build hook."
Going to reimplement differently. This reverts commit 1e4a4a2e9fc382f47f58b448f3ee034cdd28218a.
Diffstat (limited to 'src')
-rw-r--r--src/libstore/build.cc107
-rw-r--r--src/libstore/globals.cc1
-rw-r--r--src/libstore/globals.hh4
3 files changed, 0 insertions, 112 deletions
diff --git a/src/libstore/build.cc b/src/libstore/build.cc
index de33e1154..1fc5d4181 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);
- }
- }
-}
-
-
//////////////////////////////////////////////////////////////////////
diff --git a/src/libstore/globals.cc b/src/libstore/globals.cc
index d5615d93c..052ca45cc 100644
--- a/src/libstore/globals.cc
+++ b/src/libstore/globals.cc
@@ -182,7 +182,6 @@ void Settings::update()
_get(logServers, "log-servers");
_get(enableImportNative, "allow-unsafe-native-code-during-evaluation");
_get(useCaseHack, "use-case-hack");
- _get(preBuildHook, "pre-build-hook");
string subs = getEnv("NIX_SUBSTITUTERS", "default");
if (subs == "default") {
diff --git a/src/libstore/globals.hh b/src/libstore/globals.hh
index 60b11afe6..195558dd3 100644
--- a/src/libstore/globals.hh
+++ b/src/libstore/globals.hh
@@ -206,10 +206,6 @@ struct Settings {
/* Whether the importNative primop should be enabled */
bool enableImportNative;
- /* The hook to run just before a build to set derivation-specific
- build settings */
- Path preBuildHook;
-
private:
SettingsMap settings, overrides;