M552HLIAP52D42AVXVC5SGROAYN2TBCEUZOXESWEMBBUX7G3U6TAC 7LKUAIGCURNGNBBOAGK4EYIUF6KNWHJNLA6ZJEXFLA5HUADAJP6QC UMBR3VG3KBKVDYYKXAARBG73GVY7IGLHNC22W5HPTRLD66VUUWQAC VCOSLZRPLRS3ITD2JIPKZPMTCEPHN4WEFKTE5TKH3RAZ7WJKMQ4AC IMY5UQE3I2UJRKEFJSW5OM4IY5QGQICDSAKCP7MGWGS7FO4ELXTQC J5UVLXOK6EDIL5I7VKWH4V2QDS4DPD7FHRK6XBWSXFRQS4JKXFZQC ELCI5T2ALF37VXYM5POHPO3CAMMPRB65BXGDRVUAZG53NKKLGIEAC PHX2HIVGHHKCAX6VNN2WXD4LRGSA74KQMJCCTMHK7HS6JPELVECAC GWCV3TQVFLUPBREUFRJV6ACJGQHD24NIUAVQQFURMXT3GL2SPPZAC WYN733STK5DUQSWHSS6EYZK32KPZII64HLX4NS7TYUSFZ6AAFLGAC X27GNHDV5KPZ5GSH6DCAJMNCEMZLCP7M43JWF2X3O5QWXMOX273AC UVMFS73TI6RARMAAGY2UVS5LCPZUKLQECXQQVER4F7S4BNUXQQ3AC N22GPKYTOLZLBGTGDATQDVZ4R5APZEAOIA7L32X4UXBH4XNI7MWAC 5QJP6JHSLKEQ5WBHAU62HJXU4PUGVRDVAIS3SHHFHTTVPEVCRYCAC # Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-05 23:48:14# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:wqjRb/WbGiyFTBcu8QId3Q
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-06 19:19:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:ZDtFSXPegKbVEAoM+svosg
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-05 23:48:14# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:lU3XutG22RG9DJdxziFlgg
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-06 19:19:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:YwyZF3sTsIWvkKAQ5fPtMQ
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-05 23:48:14# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:lfykD1HZfuy+uc7JM1sVCA
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-06 19:19:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:m2mxFOI2ZgjLoAzbNhiDlw
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-05 23:48:14# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:bneV9O2uXIrg3Wuencuj+Q
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-06 19:19:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:jcNXcVLLxMEddBCUkq5aYg
package HydraFrontend::Schema::Jobsetinputalts;use strict;use warnings;use base 'DBIx::Class';__PACKAGE__->load_components("Core");__PACKAGE__->table("jobSetInputAlts");__PACKAGE__->add_columns("project",{ data_type => "text", is_nullable => 0, size => undef },"jobset",{ data_type => "text", is_nullable => 0, size => undef },"input",{ data_type => "text", is_nullable => 0, size => undef },"altnr",{ data_type => "integer", is_nullable => 0, size => undef },"uri",{ data_type => "text", is_nullable => 0, size => undef },"revision",{ data_type => "integer", is_nullable => 0, size => undef },"tag",{ data_type => "text", is_nullable => 0, size => undef },"value",{ data_type => "text", is_nullable => 0, size => undef },);__PACKAGE__->set_primary_key("project", "jobset", "input", "altnr");__PACKAGE__->belongs_to("jobsetinput","HydraFrontend::Schema::Jobsetinputs",{ jobset => "jobset", name => "input", project => "project" },);# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-06 19:19:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:YK+TrYs5Zk+8q+66b3kOUw# You can replace this text with custom content, and it will be preserved on regeneration1;
{ name => "job", project => "project" },
{ name => "jobset", project => "project" },);__PACKAGE__->has_many("jobsetinputalts","HydraFrontend::Schema::Jobsetinputalts",{"foreign.input" => "self.name","foreign.jobset" => "self.jobset","foreign.project" => "self.project",},
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-05 23:48:14# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:fKqDK1YOZXl88jxNRwEvSA
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-06 19:19:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:H0KE/7kJ23s4RKFDVRIyUQ
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-05 23:48:14# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:R+xsUdoLpQ7JnbZagpMqJQ
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-06 19:19:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:7JksbkRjqTKzHQkOvUkt2g
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-05 23:48:14# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:PpPVJuiXpYbj8HN3sA05Gw
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-06 19:19:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:F3bS3Kbsxhp9G6klfVPRmg
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-05 23:48:14# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:m+4HRK3Cwlb1lbJ+twj8zw
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-06 19:19:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:DQCaurV1oArj0odoPHR+zw
type text not null, -- "svn", "cvs", "path", "file"
type text not null, -- "svn", "cvs", "path", "file", "string"primary key (project, jobset, name),foreign key (project, jobset) references jobSets(project, name) on delete cascade -- ignored by sqlite);create table jobSetInputAlts (project text not null,jobset text not null,input text not null,altnr integer,-- urgh
revision integer, -- for svntag text, -- for cvsprimary key (project, job, name),foreign key (project, job) references jobSets(project, name) on delete cascade -- ignored by sqlite
revision integer, -- for type == 'svn'tag text, -- for type == 'cvs'value text, -- for type == 'string'primary key (project, jobset, input, altnr),foreign key (project, jobset, input) references jobSetInputs(project, jobset, name) on delete cascade -- ignored by sqlite
if (defined $input->{orig}) {$db->resultset('Buildinputs')->create({ buildid => $build->id, name => $inputName, type => $input->{orig}->type, uri => $input->{orig}->uri, revision => $input->{orig}->revision, tag => $input->{orig}->tag, path => $input->{storePath}});} else {$db->resultset('Buildinputs')->create({ buildid => $build->id, name => $inputName, type => "build", inputid => $input->{id}, path => $input->{storePath}});}
$db->resultset('Buildinputs')->create({ buildid => $build->id, name => $inputName, type => $input->{type}, uri => $input->{uri}#, revision => $input->{orig}->revision#, tag => $input->{orig}->tag, value => $input->{value}, inputid => $input->{id}, path => ($input->{storePath} or "") # !!! temporary hack});
sub checkJobSet {my ($project, $jobset) = @_;my $inputInfo = {};foreach my $input ($jobset->jobsetinputs) {print " INPUT ", $input->name, " (", $input->type, " ", $input->uri, ")\n";fetchInput($input, $inputInfo);}
sub checkJobSetInstance {my ($project, $jobset, $inputInfo) = @_;
if (defined $inputInfo->{$argName}->{storePath}) {# !!! escaping$extraArgs .= " --arg $argName '{path = builtins.toPath " . $inputInfo->{$argName}->{storePath} . ";}'";} elsif (defined $inputInfo->{$argName}->{value}) {$extraArgs .= " --argstr $argName '" . $inputInfo->{$argName}->{value} . "'";}
if (defined $prevBuild) {# The argument name matches a previously built# job in this jobset. Pick the most recent# build. !!! refine the selection criteria:# e.g., most recent successful build.if (!isValidPath($prevBuild->outpath)) {die "input path " . $prevBuild->outpath . " has been garbage-collected";}$storePath = $prevBuild->outpath;} else {
if (!defined $prevBuild) {
}# The argument name matches a previously built# job in this jobset. Pick the most recent# build. !!! refine the selection criteria:# e.g., most recent successful build.if (!isValidPath($prevBuild->outpath)) {die "input path " . $prevBuild->outpath . " has been garbage-collected";
buildJob($project, $jobset, $jobName, $drvPath, $outPath, $usedInputs);
my $input = @{$inputs}[$n];foreach my $alt ($input->jobsetinputalts) {print " INPUT ", $input->name, " (type ", $input->type, ") alt ", $alt->altnr, "\n";fetchInput($input, $alt, $inputInfo); # !!! cachingcheckJobSetAlts($project, $jobset, $inputs, $n + 1, $inputInfo);
insert into jobSetInputs(project, job, name, type, uri) values('patchelf', 'trunk', 'patchelfSrc', 'path', '/home/eelco/Dev/patchelf-wc');insert into jobSetInputs(project, job, name, type, uri) values('patchelf', 'trunk', 'nixpkgs', 'path', '/home/eelco/Dev/nixpkgs-wc');insert into jobSetInputs(project, job, name, type, uri) values('patchelf', 'trunk', 'release', 'path', '/home/eelco/Dev/release');
insert into jobSetInputs(project, jobset, name, type) values('patchelf', 'trunk', 'patchelfSrc', 'path');insert into jobSetInputAlts(project, jobset, input, altnr, uri) values('patchelf', 'trunk', 'patchelfSrc', 0, '/home/eelco/Dev/patchelf-wc');insert into jobSetInputs(project, jobset, name, type) values('patchelf', 'trunk', 'nixpkgs', 'path');insert into jobSetInputAlts(project, jobset, input, altnr, uri) values('patchelf', 'trunk', 'nixpkgs', 0, '/home/eelco/Dev/nixpkgs-wc');insert into jobSetInputs(project, jobset, name, type) values('patchelf', 'trunk', 'release', 'path');insert into jobSetInputAlts(project, jobset, input, altnr, uri) values('patchelf', 'trunk', 'release', 0, '/home/eelco/Dev/release');insert into jobSetInputs(project, jobset, name, type) values('patchelf', 'trunk', 'system', 'string');insert into jobSetInputAlts(project, jobset, input, altnr, value) values('patchelf', 'trunk', 'system', 0, 'i686-linux');insert into jobSetInputAlts(project, jobset, input, altnr, value) values('patchelf', 'trunk', 'system', 1, 'x86_64-linux');