Skip to content

Commit

Permalink
[backend] implement 'genmetaalgo' build flag support
Browse files Browse the repository at this point in the history
This makes it possible to set the meta algorithm for a project
via the project config.
  • Loading branch information
mlschroe committed Jun 4, 2018
1 parent 918c361 commit 6f20063
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 7 deletions.
6 changes: 6 additions & 0 deletions src/backend/BSSched/Checker.pm
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,12 @@ sub setup {
$gctx->{'lastcheck'}->{$prp} = $oldlastcheck;
}
$ctx->{'lastcheck'} = $gctx->{'lastcheck'}->{$prp};

my $genmetaalgo = $bconf->{'buildflags:genmetaalgo'};
$genmetaalgo = $gctx->{'genmetaalgo'} unless defined $genmetaalgo;
return ('broken', 'unsupported genmetaalgo') if $genmetaalgo < 0 || $genmetaalgo > $gctx->{'maxgenmetaalgo'};
BSBuild::setgenmetaalgo($genmetaalgo);
BSSolv::setgenmetaalgo($genmetaalgo) if $gctx->{'maxgenmetaalgo'};
return ('scheduling', undef);
}

Expand Down
24 changes: 17 additions & 7 deletions src/backend/bs_sched
Original file line number Diff line number Diff line change
Expand Up @@ -467,21 +467,31 @@ my $gctx = {
'prplastcheck' => {}, # XXX: currently not used
};

# configure gen_meta algorithm
# find max gen_meta algorithm
my $maxgenmetaalgo = 0;
if (defined(&BSSolv::setgenmetaalgo)) {
$maxgenmetaalgo = BSBuild::setgenmetaalgo(-1);
my $solvgenmetaalgo = BSSolv::setgenmetaalgo(-1);
$maxgenmetaalgo = $solvgenmetaalgo if $solvgenmetaalgo < $maxgenmetaalgo;
}

# find gen_meta algorithm to use
if (defined($BSConfig::genmetaalgo)) {
$genmetaalgo = $BSConfig::genmetaalgo;
} else {
$genmetaalgo = BSBuild::setgenmetaalgo($genmetaalgo);
my $solvgenmetaalgo = 0;
$solvgenmetaalgo = BSSolv::setgenmetaalgo(-1) if defined &BSSolv::setgenmetaalgo;
if ($solvgenmetaalgo < $genmetaalgo) {
warn("downgraded genmetaalgo from $genmetaalgo to $solvgenmetaalgo because of old perl-BSSolv\n");
$genmetaalgo = $solvgenmetaalgo;
if ($genmetaalgo > $maxgenmetaalgo) {
warn("downgraded genmeta algorithm from $genmetaalgo to $maxgenmetaalgo because of old perl-BSSolv\n");
$genmetaalgo = $maxgenmetaalgo;
}
}
BSSolv::setgenmetaalgo($genmetaalgo) if defined &BSSolv::setgenmetaalgo;
die("perl-BSSolv is too old for meta algo $genmetaalgo\n") if $genmetaalgo && !defined(&BSSolv::setgenmetaalgo);

# configure gen_meta algorithm
BSBuild::setgenmetaalgo($genmetaalgo);
BSSolv::setgenmetaalgo($genmetaalgo) if defined(&BSSolv::setgenmetaalgo);
$gctx->{'genmetaalgo'} = $genmetaalgo;
$gctx->{'maxgenmetaalgo'} = $maxgenmetaalgo;

# create rpc context
my $rctx = BSSched::RPC->new(
Expand Down

0 comments on commit 6f20063

Please sign in to comment.