* Negative caching: don't perform a build if a dependency already

failed in a previous build.  This is essential for Nixpkgs: we don't
  want to keep doing the same failed dependency (say, Glibc) over and
  over again for a few hundred jobs.
This commit is contained in:
Eelco Dolstra
2009-03-09 17:21:10 +00:00
parent 8725dc03ec
commit fca7fb20c4
21 changed files with 99 additions and 44 deletions

View File

@ -62,6 +62,7 @@ create table BuildResultInfo (
-- 2 = build of some dependency failed
-- 3 = other failure (see errorMsg)
-- 4 = build cancelled (removed from queue; never built)
-- 5 = build not done because a dependency failed previously
buildStatus integer,
errorMsg text, -- error message in case of a Nix failure
@ -74,18 +75,22 @@ create table BuildResultInfo (
releaseName text, -- e.g. "patchelf-0.5pre1234"
keep integer not null default 0, -- true means never garbage-collect the build output
-- If buildStatus == 5, the primary key of the failed build step.
failedDepBuild integer,
failedDepStepNr integer,
foreign key (id) references Builds(id) on delete cascade -- ignored by sqlite
);
create table BuildSteps (
id integer not null,
id integer not null, -- !!! rename to "build"
stepnr integer not null,
type integer not null, -- 0 = build, 1 = substitution
drvPath text,
drvPath text,
outPath text,
logfile text,