From 54032316f90672da1e86b1df878d59c865a8f756 Mon Sep 17 00:00:00 2001 From: CrazyMax <1951866+crazy-max@users.noreply.github.com> Date: Tue, 28 Nov 2023 11:55:47 +0100 Subject: [PATCH] build: infer platform from first node if none set Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com> --- build/driver.go | 35 +++++++++++++++++------------------ build/driver_test.go | 4 ++-- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/build/driver.go b/build/driver.go index 0096459e..ef0a4e1e 100644 --- a/build/driver.go +++ b/build/driver.go @@ -166,35 +166,34 @@ func (r *nodeResolver) resolve(ctx context.Context, ps []specs.Platform, pw prog perfect := true nodeIdxs := make([]int, 0) - if len(ps) == 0 { - idx := r.get(platforms.DefaultSpec(), matcher, additional) + for _, p := range ps { + idx := r.get(p, matcher, additional) if idx == -1 { idx = 0 perfect = false } nodeIdxs = append(nodeIdxs, idx) - } else { - for _, p := range ps { - idx := r.get(p, matcher, additional) - if idx == -1 { - idx = 0 - perfect = false - } - nodeIdxs = append(nodeIdxs, idx) - } } var nodes []*resolvedNode - for i, idx := range nodeIdxs { - node := &resolvedNode{ + if len(nodeIdxs) == 0 { + nodes = append(nodes, &resolvedNode{ resolver: r, - driverIndex: idx, + driverIndex: 0, + }) + } else { + for i, idx := range nodeIdxs { + node := &resolvedNode{ + resolver: r, + driverIndex: idx, + } + if len(ps) > 0 { + node.platforms = []specs.Platform{ps[i]} + } + nodes = append(nodes, node) } - if len(ps) > 0 { - node.platforms = []specs.Platform{ps[i]} - } - nodes = append(nodes, node) } + nodes = recombineNodes(nodes) if _, err := r.boot(ctx, nodeIdxs, pw); err != nil { return nil, false, err diff --git a/build/driver_test.go b/build/driver_test.go index 63c79728..24f43411 100644 --- a/build/driver_test.go +++ b/build/driver_test.go @@ -217,7 +217,7 @@ func TestSelectNodePreferExact(t *testing.T) { require.Equal(t, "bbb", res[0].Node().Builder) } -func TestSelectNodeCurrentPlatform(t *testing.T) { +func TestSelectNodeNoPlatform(t *testing.T) { r := makeTestResolver(map[string][]specs.Platform{ "aaa": {platforms.MustParse("linux/foobar")}, "bbb": {platforms.DefaultSpec()}, @@ -227,7 +227,7 @@ func TestSelectNodeCurrentPlatform(t *testing.T) { require.NoError(t, err) require.True(t, perfect) require.Len(t, res, 1) - require.Equal(t, "bbb", res[0].Node().Builder) + require.Equal(t, "aaa", res[0].Node().Builder) require.Empty(t, res[0].platforms) }