Use system-features from the Nix conf in the default machine file

Fix #936
This commit is contained in:
regnat 2021-04-28 11:43:04 +02:00
parent d58b3274f9
commit abff212d06
4 changed files with 42 additions and 1 deletions

View file

@ -156,7 +156,8 @@ void State::monitorMachinesFile()
if (machinesFiles.empty()) { if (machinesFiles.empty()) {
parseMachines("localhost " + parseMachines("localhost " +
(settings.thisSystem == "x86_64-linux" ? "x86_64-linux,i686-linux" : settings.thisSystem.get()) (settings.thisSystem == "x86_64-linux" ? "x86_64-linux,i686-linux" : settings.thisSystem.get())
+ " - " + std::to_string(settings.maxBuildJobs) + " 1"); + " - " + std::to_string(settings.maxBuildJobs) + " 1 "
+ concatStringsSep(",", settings.systemFeatures.get()));
return; return;
} }

30
t/default-machine-file.t Normal file
View file

@ -0,0 +1,30 @@
use feature 'unicode_strings';
use strict;
use Setup;
my %ctx = test_init();
require Hydra::Schema;
require Hydra::Model::DB;
use Test2::V0;
my $db = Hydra::Model::DB->new;
hydra_setup($db);
my $project = $db->resultset('Projects')->create({name => "tests", displayname => "", owner => "root"});
my $jobset = createBaseJobset("default-machine-file", "default-machine-file.nix", $ctx{jobsdir});
ok(evalSucceeds($jobset), "Evaluating jobs/default-machine-file.nix should exit with return code 0");
is(nrQueuedBuildsForJobset($jobset), 1, "Evaluating jobs/default-machine-file.nix should result in 1 build");
for my $build (queuedBuildsForJobset($jobset)) {
ok(runBuild($build), "Build '".$build->job."' from jobs/default-machine-file.nix should exit with code 0");
my $newbuild = $db->resultset('Builds')->find($build->id);
is($newbuild->finished, 1, "Build '".$build->job."' from jobs/default-machine-file.nix should be finished.");
my $expected = $build->job eq "fails" ? 1 : $build->job =~ /with_failed/ ? 6 : 0;
is($newbuild->buildstatus, $expected, "Build '".$build->job."' from jobs/default-machine-file.nix should have buildstatus $expected.");
}
done_testing;

View file

@ -0,0 +1,9 @@
with import ./config.nix;
{
requireExperimentalFeatures =
mkDerivation {
name = "empty-dir";
builder = ./empty-dir-builder.sh;
requiredSystemFeatures = [ "test-system-feature" ];
};
}

View file

@ -48,6 +48,7 @@ sub test_init {
my $nixconf = "$ENV{'NIX_CONF_DIR'}/nix.conf"; my $nixconf = "$ENV{'NIX_CONF_DIR'}/nix.conf";
open(my $fh, '>', $nixconf) or die "Could not open file '$nixconf' $!"; open(my $fh, '>', $nixconf) or die "Could not open file '$nixconf' $!";
print $fh "sandbox = false\n"; print $fh "sandbox = false\n";
print $fh "system-features = test-system-feature\n";
print $fh $opts{'nix_config'} || ""; print $fh $opts{'nix_config'} || "";
close $fh; close $fh;