aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2024-03-25 17:31:59 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2024-03-25 17:31:59 +0300
commit997fef310ebf496205e101be0d95db5d0452e5ac (patch)
tree2b3aa4eb9eb142f285ba8ad99011fcb278667ae8
parentb476cc01c98885bb40c6b118dfda57dea08d5a4b (diff)
Don't parse nor serialize toolchain and bootstrap manifests in bootstrapped machine manifest for auxiliary machine
-rw-r--r--bbot/machine-manifest.cxx48
-rw-r--r--bbot/machine-manifest.hxx3
-rw-r--r--bbot/machine-manifest.test.testscript152
3 files changed, 133 insertions, 70 deletions
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 <name>-<toolchain>/ 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 >>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
:
$* <<EOI 2>"stdin:2:1: error: unknown name 'x' in bootstrapped machine manifest" == 1
@@ -272,40 +251,107 @@
: 1
EOI
- : no-machine-mac
+ : build-role
:
- $* <<EOI 2>'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 >>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
- :
- $* <<EOI 2>'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
+ :
+ $* <<EOI 2>'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
- :
- $* <<EOI 2>'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
+ :
+ $* <<EOI 2>'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
+ :
+ $* <<EOI 2>'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 >>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
+ :
+ $* <<EOI 2>'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
+ }
}