* Create missing log and temproots directories automatically (reported
by Rob).
This commit is contained in:
parent
d1487d9015
commit
c6178f0b03
4 changed files with 25 additions and 13 deletions
|
@ -1211,10 +1211,16 @@ void DerivationGoal::computeClosure()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static string drvsLogDir = "drvs";
|
||||||
|
|
||||||
|
|
||||||
void DerivationGoal::openLogFile()
|
void DerivationGoal::openLogFile()
|
||||||
{
|
{
|
||||||
/* Create a log file. */
|
/* Create a log file. */
|
||||||
Path logFileName = nixLogDir + "/drvs/" + baseNameOf(drvPath);
|
Path dir = (format("%1%/%2%") % nixLogDir % drvsLogDir).str();
|
||||||
|
createDirs(dir);
|
||||||
|
|
||||||
|
Path logFileName = (format("%1%/%2%") % dir % baseNameOf(drvPath)).str();
|
||||||
fdLogFile = open(logFileName.c_str(),
|
fdLogFile = open(logFileName.c_str(),
|
||||||
O_CREAT | O_WRONLY | O_TRUNC, 0666);
|
O_CREAT | O_WRONLY | O_TRUNC, 0666);
|
||||||
if (fdLogFile == -1)
|
if (fdLogFile == -1)
|
||||||
|
|
|
@ -43,16 +43,6 @@ static int openGCLock(LockType lockType)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void createDirs(const Path & path)
|
|
||||||
{
|
|
||||||
if (path == "") return;
|
|
||||||
createDirs(dirOf(path));
|
|
||||||
if (!pathExists(path))
|
|
||||||
if (mkdir(path.c_str(), 0777) == -1)
|
|
||||||
throw SysError(format("creating directory `%1%'") % path);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void createSymlink(const Path & link, const Path & target, bool careful)
|
void createSymlink(const Path & link, const Path & target, bool careful)
|
||||||
{
|
{
|
||||||
/* Create directories up to `gcRoot'. */
|
/* Create directories up to `gcRoot'. */
|
||||||
|
@ -122,8 +112,11 @@ void addTempRoot(const Path & path)
|
||||||
if (fdTempRoots == -1) {
|
if (fdTempRoots == -1) {
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
fnTempRoots = (format("%1%/%2%/%3%")
|
Path dir = (format("%1%/%2%") % nixStateDir % tempRootsDir).str();
|
||||||
% nixStateDir % tempRootsDir % getpid()).str();
|
createDirs(dir);
|
||||||
|
|
||||||
|
fnTempRoots = (format("%1%/%2%")
|
||||||
|
% dir % getpid()).str();
|
||||||
|
|
||||||
AutoCloseFD fdGCLock = openGCLock(ltRead);
|
AutoCloseFD fdGCLock = openGCLock(ltRead);
|
||||||
|
|
||||||
|
|
|
@ -271,6 +271,16 @@ Path createTempDir()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void createDirs(const Path & path)
|
||||||
|
{
|
||||||
|
if (path == "") return;
|
||||||
|
createDirs(dirOf(path));
|
||||||
|
if (!pathExists(path))
|
||||||
|
if (mkdir(path.c_str(), 0777) == -1)
|
||||||
|
throw SysError(format("creating directory `%1%'") % path);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void writeStringToFile(const Path & path, const string & s)
|
void writeStringToFile(const Path & path, const string & s)
|
||||||
{
|
{
|
||||||
AutoCloseFD fd(open(path.c_str(),
|
AutoCloseFD fd(open(path.c_str(),
|
||||||
|
|
|
@ -107,6 +107,9 @@ void makePathReadOnly(const Path & path);
|
||||||
/* Create a temporary directory. */
|
/* Create a temporary directory. */
|
||||||
Path createTempDir();
|
Path createTempDir();
|
||||||
|
|
||||||
|
/* Create a directory and all its parents, if necessary. */
|
||||||
|
void createDirs(const Path & path);
|
||||||
|
|
||||||
/* Create a file and write the given text to it. The file is written
|
/* Create a file and write the given text to it. The file is written
|
||||||
in binary mode (i.e., no end-of-line conversions). The path should
|
in binary mode (i.e., no end-of-line conversions). The path should
|
||||||
not already exist. */
|
not already exist. */
|
||||||
|
|
Loading…
Reference in a new issue