Skip to content

Commit

Permalink
local-derivation-goal: Move builder preparation to non-builtin code path
Browse files Browse the repository at this point in the history
  • Loading branch information
roberth committed Oct 22, 2024
1 parent db6bcf3 commit 55be7de
Showing 1 changed file with 10 additions and 15 deletions.
25 changes: 10 additions & 15 deletions src/libstore/build/local-derivation-goal.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2022,11 +2022,6 @@ void LocalDerivationGoal::runChild()
throw SysError("setuid failed");
}

/* Fill in the arguments. */
Strings args;

std::string builder = "invalid";

#if __APPLE__
/* This has to appear before import statements. */
std::string sandboxProfile = "(version 1)\n";
Expand Down Expand Up @@ -2150,14 +2145,6 @@ void LocalDerivationGoal::runChild()
}
#endif

if (!drv->isBuiltin()) {
builder = drv->builder;
args.push_back(std::string(baseNameOf(drv->builder)));
}

for (auto & i : drv->args)
args.push_back(rewriteStrings(i, inputRewrites));

/* Indicate that we managed to set up the build environment. */
writeFull(STDERR_FILENO, std::string("\2\n"));

Expand Down Expand Up @@ -2187,6 +2174,14 @@ void LocalDerivationGoal::runChild()
}
}

// Now builder is not builtin

Strings args;
args.push_back(std::string(baseNameOf(drv->builder)));

for (auto & i : drv->args)
args.push_back(rewriteStrings(i, inputRewrites));

#if __APPLE__
posix_spawnattr_t attrp;

Expand All @@ -2208,9 +2203,9 @@ void LocalDerivationGoal::runChild()
posix_spawnattr_setbinpref_np(&attrp, 1, &cpu, NULL);
}

posix_spawn(NULL, builder.c_str(), NULL, &attrp, stringsToCharPtrs(args).data(), stringsToCharPtrs(envStrs).data());
posix_spawn(NULL, drv->builder.c_str(), NULL, &attrp, stringsToCharPtrs(args).data(), stringsToCharPtrs(envStrs).data());
#else
execve(builder.c_str(), stringsToCharPtrs(args).data(), stringsToCharPtrs(envStrs).data());
execve(drv->builder.c_str(), stringsToCharPtrs(args).data(), stringsToCharPtrs(envStrs).data());
#endif

throw SysError("executing '%1%'", drv->builder);
Expand Down

0 comments on commit 55be7de

Please sign in to comment.