* Don't keep the derivation symlink when creating profile generations.

This commit is contained in:
Eelco Dolstra 2005-02-14 10:44:57 +00:00
parent 32429142cd
commit b0aba6ec2a

View file

@ -61,12 +61,11 @@ Generations findGenerations(Path profile, int & curGen)
}
static void makeNames(const Path & profile, unsigned int num,
Path & outLink, Path & drvLink)
static void makeName(const Path & profile, unsigned int num,
Path & outLink)
{
Path prefix = (format("%1%-%2%") % profile % num).str();
outLink = prefix + "-link";
drvLink = prefix + "-drv";
}
@ -79,10 +78,10 @@ Path createGeneration(Path profile, Path outPath, Path drvPath)
unsigned int num = gens.size() > 0 ? gens.front().number : 0;
/* Create the new generation. */
Path outLink, drvLink;
Path outLink;
while (1) {
makeNames(profile, num, outLink, drvLink);
makeName(profile, num, outLink);
if (symlink(outPath.c_str(), outLink.c_str()) == 0) break;
if (errno != EEXIST)
throw SysError(format("creating symlink `%1%'") % outLink);
@ -90,9 +89,6 @@ Path createGeneration(Path profile, Path outPath, Path drvPath)
num++;
}
if (symlink(drvPath.c_str(), drvLink.c_str()) != 0)
throw SysError(format("creating symlink `%1%'") % drvLink);
return outLink;
}
@ -106,10 +102,9 @@ static void removeFile(const Path & path)
void deleteGeneration(const Path & profile, unsigned int gen)
{
Path generation, gcrootDrv;
makeNames(profile, gen, generation, gcrootDrv);
Path generation;
makeName(profile, gen, generation);
removeFile(generation);
if (pathExists(gcrootDrv)) removeFile(gcrootDrv);
}