aboutsummaryrefslogtreecommitdiff
path: root/bbot/machine-manifest
diff options
context:
space:
mode:
Diffstat (limited to 'bbot/machine-manifest')
-rw-r--r--bbot/machine-manifest54
1 files changed, 53 insertions, 1 deletions
diff --git a/bbot/machine-manifest b/bbot/machine-manifest
index 77f1c78..3801ae7 100644
--- a/bbot/machine-manifest
+++ b/bbot/machine-manifest
@@ -9,10 +9,12 @@
#include <butl/manifest-forward>
+#include <bbot/manifest> // machine_header
+
#include <bbot/types>
#include <bbot/utility>
-#include <bbot/manifest> // machine_header
+#include <bbot/bootstrap-manifest>
namespace bbot
{
@@ -53,6 +55,56 @@ namespace bbot
void
serialize (butl::manifest_serializer&) const;
};
+
+ // Toolchain.
+ //
+ class toolchain_manifest
+ {
+ public:
+
+ // Toolchain id (SHAXXX).
+ //
+ string id;
+
+ explicit
+ toolchain_manifest (string i): id (i) {}
+
+ public:
+ toolchain_manifest () = default; // VC export.
+ toolchain_manifest (butl::manifest_parser&, bool ignore_unknown = false);
+ toolchain_manifest (butl::manifest_parser&,
+ butl::manifest_name_value start,
+ bool ignore_unknown = false);
+
+ void
+ serialize (butl::manifest_serializer&) const;
+ };
+
+ // The manifest stored in <name>-<toolchain>/ consists of the machine
+ // manifest (original), toolchain manifest, and bootstrap manifest.
+ //
+ class bootstrapped_machine_manifest
+ {
+ public:
+ machine_manifest machine;
+ toolchain_manifest toolchain;
+ bootstrap_manifest bootstrap;
+
+ bootstrapped_machine_manifest (machine_manifest m,
+ toolchain_manifest t,
+ bootstrap_manifest b)
+ : machine (move (m)), toolchain (move (t)), bootstrap (move (b)) {}
+
+ public:
+ bootstrapped_machine_manifest () = default; // VC export.
+ bootstrapped_machine_manifest (butl::manifest_parser&,
+ bool ignore_unknown = false);
+
+ void
+ serialize (butl::manifest_serializer&) const;
+ };
+
+ using bootstrapped_machine_manifests = vector<bootstrapped_machine_manifest>;
}
#endif // BBOT_MACHINE_MANIFEST