treewide: add product info to OCI OS images
Add the product info to the OCI OS image config.
Change-Id: I70c572f2698c8d8bb0edc0ba969d8c6b37ae4c00
Reviewed-on: https://review.monogon.dev/c/monogon/+/4193
Reviewed-by: Tim Windelschmidt <tim@monogon.tech>
Tested-by: Jenkins CI
diff --git a/osbase/build/genproductinfo/test.bzl b/osbase/build/genproductinfo/test.bzl
new file mode 100644
index 0000000..e639867
--- /dev/null
+++ b/osbase/build/genproductinfo/test.bzl
@@ -0,0 +1,39 @@
+# Copyright The Monogon Project Authors.
+# SPDX-License-Identifier: Apache-2.0
+
+def _test_product_info_impl(ctx):
+ raw_product_info = json.encode({
+ "id": ctx.attr.os_id,
+ "name": ctx.attr.os_name,
+ "version": "0.0.0",
+ "variant": ctx.attr.architecture,
+ "architecture": ctx.attr.architecture,
+ })
+ product_info_file = ctx.actions.declare_file(ctx.label.name + ".json")
+ ctx.actions.write(product_info_file, raw_product_info)
+ return [DefaultInfo(files = depset([product_info_file]))]
+
+_test_product_info = rule(
+ implementation = _test_product_info_impl,
+ attrs = {
+ "os_name": attr.string(mandatory = True),
+ "os_id": attr.string(mandatory = True),
+ "architecture": attr.string(mandatory = True),
+ },
+)
+
+def _test_product_info_macro_impl(**kwargs):
+ _test_product_info(
+ architecture = select({
+ "@platforms//cpu:x86_64": "x86_64",
+ "@platforms//cpu:aarch64": "aarch64",
+ }),
+ **kwargs
+ )
+
+test_product_info = macro(
+ inherit_attrs = _test_product_info,
+ attrs = {"architecture": None},
+ implementation = _test_product_info_macro_impl,
+ doc = "This is a simplified variant of product_info for use in tests.",
+)