diff --git a/src/backend/bs_dispatch b/src/backend/bs_dispatch index 0910c4430e2..69693a3a83d 100755 --- a/src/backend/bs_dispatch +++ b/src/backend/bs_dispatch @@ -124,9 +124,15 @@ my $port = 5252; #'RR' $port = $1 if $BSConfig::reposerver =~ /:(\d+)$/; # strip helpers from cando -my %cando = %BSCando::cando; -for my $hostarch (values %cando) { - s/:.*// for @{$hostarch || []}; +my %cando; # = %BSCando::cando; +for my $hostarch (keys %BSCando::cando) { + $cando{$hostarch} = []; + for (@{$BSCando::cando{$hostarch} || []}) { + # do a deep copy, we need unmodified BSCando::cando also + my $targetarch = $_; + $targetarch =~ s/:.*//; + push ( @{$cando{$hostarch}}, $targetarch ); + } } # 4h build will add .5 to the load @@ -1357,7 +1363,7 @@ while (1) { # a helper is needed for personality change? my $helper; /^\Q$arch\E:(.*)$/ && ($helper = $1) for @{$BSCando::cando{$harch}}; - if ($helper && $workerinfo{$idle} && $workerinfo{$idle}->{hardware} && $workerinfo{$idle}->{hardware}->{nativeonly}) { + if ($helper && $workerinfo{$idle} && $workerinfo{$idle}->{hardware} && defined($workerinfo{$idle}->{hardware}->{nativeonly})) { next; # worker is not supporting the needed personality change } if ($constraints) { diff --git a/src/backend/bs_worker b/src/backend/bs_worker index b0c80895229..38625e6d4ee 100755 --- a/src/backend/bs_worker +++ b/src/backend/bs_worker @@ -676,7 +676,7 @@ if (open(FILE, "<", "/proc/cpuinfo")) { $hw->{'cpu'}->{'flag'} = \@cpuflags; } elsif (/^CPU implementer\s*:\s0x43/) { # aarch64 special case: does not support armvXl instruction set - $hw->{'nativeonly'} = undef; + $hw->{'nativeonly'} = "true"; } elsif (/^cpu\s*:\sPOWER8/) { # PowerPC kernel does not provide any flags, but we need to be able # to distinguish between power7 and 8 at least