mirror of
https://github.com/NixOS/nix.git
synced 2024-11-22 06:42:28 +00:00
* Don't keep the derivation symlink when creating profile generations.
This commit is contained in:
parent
32429142cd
commit
b0aba6ec2a
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user