From 997fef310ebf496205e101be0d95db5d0452e5ac Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Mon, 25 Mar 2024 17:31:59 +0300 Subject: Don't parse nor serialize toolchain and bootstrap manifests in bootstrapped machine manifest for auxiliary machine --- bbot/machine-manifest.cxx | 48 +++++++---- bbot/machine-manifest.hxx | 3 +- bbot/machine-manifest.test.testscript | 152 ++++++++++++++++++++++------------ 3 files changed, 133 insertions(+), 70 deletions(-) (limited to 'bbot') diff --git a/bbot/machine-manifest.cxx b/bbot/machine-manifest.cxx index 606baf0..bddf4d5 100644 --- a/bbot/machine-manifest.cxx +++ b/bbot/machine-manifest.cxx @@ -326,24 +326,36 @@ namespace bbot if (!machine.mac) bad_name ("mac address must be present in machine manifest"); - nv = p.next (); - if (nv.empty ()) - bad_value ("toolchain manifest expected"); + if (machine.effective_role () == machine_role::build) + { + nv = p.next (); + if (nv.empty ()) + bad_value ("toolchain manifest expected"); - toolchain = toolchain_manifest (p, nv, iu); + toolchain = toolchain_manifest (p, nv, iu); - nv = p.next (); - if (nv.empty ()) - bad_value ("bootstrap manifest expected"); + nv = p.next (); + if (nv.empty ()) + bad_value ("bootstrap manifest expected"); - bootstrap = bootstrap_manifest (p, nv, iu); + bootstrap = bootstrap_manifest (p, nv, iu); - // Make sure this is the end. - // - nv = p.next (); - if (!nv.empty ()) - throw parsing (p.name (), nv.name_line, nv.name_column, - "single bootstrapped machine manifest expected"); + // Make sure this is the end. + // + nv = p.next (); + if (!nv.empty ()) + throw parsing (p.name (), nv.name_line, nv.name_column, + "single bootstrapped machine manifest expected"); + } + else + { + // Make sure this is the end. + // + nv = p.next (); + if (!nv.empty ()) + throw parsing (p.name (), nv.name_line, nv.name_column, + "single machine manifest expected"); + } } void bootstrapped_machine_manifest:: @@ -359,8 +371,12 @@ namespace bbot "mac address must be present in machine manifest"); machine.serialize (s); - toolchain.serialize (s); - bootstrap.serialize (s); + + if (machine.effective_role () == machine_role::build) + { + toolchain.serialize (s); + bootstrap.serialize (s); + } s.next ("", ""); // End of stream. } diff --git a/bbot/machine-manifest.hxx b/bbot/machine-manifest.hxx index 5cc45f0..d500957 100644 --- a/bbot/machine-manifest.hxx +++ b/bbot/machine-manifest.hxx @@ -97,7 +97,8 @@ namespace bbot }; // The manifest stored in -/ consists of the machine - // manifest (original), toolchain manifest, and bootstrap manifest. + // manifest (original) and, if this a build machine, toolchain manifest and + // bootstrap manifest. // class bootstrapped_machine_manifest { diff --git a/bbot/machine-manifest.test.testscript b/bbot/machine-manifest.test.testscript index 6471473..e358ff3 100644 --- a/bbot/machine-manifest.test.testscript +++ b/bbot/machine-manifest.test.testscript @@ -238,27 +238,6 @@ { test.options += -bm - : valid - : - { - : all-values - : - $* <>EOF - : 1 - : - id: a2b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 - name: windows_10-msvc_14 - summary: Windows 10 build 1607 with VC 14 update 3 - type: kvm - mac: de:ad:be:ef:de:ad - : - id: a2b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 - : - bbot-version: 1.1.2 - libbbot-version: 1.1.1 - EOF - } - : unknown : $* <"stdin:2:1: error: unknown name 'x' in bootstrapped machine manifest" == 1 @@ -272,40 +251,107 @@ : 1 EOI - : no-machine-mac + : build-role : - $* <'stdin:2:1: error: mac address must be present in machine manifest' == 1 - : 1 - : - id: a2b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 - name: windows_10-msvc_14 - summary: Windows 10 build 1607 with VC 14 update 3 - type: kvm - EOI + { + : valid + : + { + : all-values + : + $* <>EOF + : 1 + : + id: a2b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 + name: windows_10-msvc_14 + summary: Windows 10 build 1607 with VC 14 update 3 + type: kvm + mac: de:ad:be:ef:de:ad + : + id: a2b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 + : + bbot-version: 1.1.2 + libbbot-version: 1.1.1 + EOF + } - : no-toolchain - : - $* <'stdin:8:1: error: toolchain manifest expected' == 1 - : 1 - : - id: a2b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 - name: windows_10-msvc_14 - summary: Windows 10 build 1607 with VC 14 update 3 - type: kvm - mac: de:ad:be:ef:de:ad - EOI + : no-machine-mac + : + $* <'stdin:2:1: error: mac address must be present in machine manifest' == 1 + : 1 + : + id: a2b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 + name: windows_10-msvc_14 + summary: Windows 10 build 1607 with VC 14 update 3 + type: kvm + EOI - : no-bootstrap - : - $* <'stdin:10:1: error: bootstrap manifest expected' == 1 - : 1 - : - id: a2b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 - name: windows_10-msvc_14 - summary: Windows 10 build 1607 with VC 14 update 3 - type: kvm - mac: de:ad:be:ef:de:ad + : no-toolchain + : + $* <'stdin:8:1: error: toolchain manifest expected' == 1 + : 1 + : + id: a2b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 + name: windows_10-msvc_14 + summary: Windows 10 build 1607 with VC 14 update 3 + type: kvm + mac: de:ad:be:ef:de:ad + EOI + + : no-bootstrap + : + $* <'stdin:10:1: error: bootstrap manifest expected' == 1 + : 1 + : + id: a2b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 + name: windows_10-msvc_14 + summary: Windows 10 build 1607 with VC 14 update 3 + type: kvm + mac: de:ad:be:ef:de:ad + : + id: a2b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 + EOI + } + + : auxiliary-role : - id: a2b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 - EOI + { + : valid + : + { + : all-values + : + $* <>EOF + : 1 + : + id: x86_64-linux_debian_12-postgresql_15-1.0 + name: x86_64-linux_debian_12-postgresql_15 + summary: Debian 12 "bookworm" with PostgreSQL 15.6.0 (auxiliary machine) + role: auxiliary + ram-minimum: 1048576 + type: kvm + mac: e6:38:72:53:61:ae + changes:\ + 1.0 + - clone off linux_debian_12-small-1.0 + - postgresql-15 15.6.0+deb12u1 + \ + EOF + } + + : unexpected-manifest + : + $* <'stdin:10:1: error: single machine manifest expected' == 1 + : 1 + : + id: x86_64-linux_debian_12-postgresql_15-1.0 + name: x86_64-linux_debian_12-postgresql_15 + summary: Debian 12 "bookworm" with PostgreSQL 15.6.0 (auxiliary machine) + role: auxiliary + ram-minimum: 1048576 + type: kvm + mac: e6:38:72:53:61:ae + : + EOI + } } -- cgit v1.1