Specify initrd image contents as a list of files
The init RAM disk is just a container for various files, and
should be agnostic about their contents (e.g., primary manifest,
kernel, etc...).
Change the build so that a list of files is specified instead of
having the image creator handle different types differently.
This facilitates adding other types of files later, e.g., an FDT
for secondary VMs.
Change-Id: I5ca79dcc5c8810fce0c248201c24f00dd439e392
diff --git a/test/linux/BUILD.gn b/test/linux/BUILD.gn
index 282d6c0..8ef7381 100644
--- a/test/linux/BUILD.gn
+++ b/test/linux/BUILD.gn
@@ -37,28 +37,49 @@
# Always use the aarch64_linux_clang toolchain to build test_binary
test_binary_target = ":test_binary(//build/toolchain:aarch64_linux_clang)"
- sources = [
- get_label_info(test_binary_target, "root_out_dir") + "/test_binary",
- get_label_info("//driver/linux", "target_out_dir") + "/hafnium.ko",
+
+ files = [
+ [
+ get_label_info(test_binary_target, "root_out_dir") + "/test_binary",
+ test_binary_target,
+ ],
+ [
+ get_label_info("//driver/linux", "target_out_dir") + "/hafnium.ko",
+ "//driver/linux",
+ ],
]
- deps = [
- "//driver/linux",
- test_binary_target,
- ]
+}
+
+manifest("linux_test_manifest") {
+ source = "manifest.dts"
+ overlay = hftest_manifest_overlay
}
initrd("linux_test") {
testonly = true
- manifest = "manifest.dts"
- manifest_overlay = hftest_manifest_overlay
- primary_name = "vmlinuz"
- primary_vm = "//third_party/linux:linux__prebuilt"
- primary_initrd = ":linux_test_initrd"
- secondary_vms = [ [
- "socket0",
- ":socket_vm1",
- ] ]
+ files = [
+ [
+ "manifest.dtb",
+ ":linux_test_manifest",
+ "manifest.dtb",
+ ],
+ [
+ "vmlinuz",
+ "//third_party/linux:linux__prebuilt",
+ "linux__prebuilt.bin",
+ ],
+ [
+ "initrd.img",
+ ":linux_test_initrd",
+ "linux_test_initrd/initrd.img",
+ ],
+ [
+ "socket0",
+ ":socket_vm1",
+ "socket_vm1.bin",
+ ],
+ ]
}
group("linux") {
diff --git a/test/vmapi/arch/aarch64/BUILD.gn b/test/vmapi/arch/aarch64/BUILD.gn
index 2b41162..3ddbb2b 100644
--- a/test/vmapi/arch/aarch64/BUILD.gn
+++ b/test/vmapi/arch/aarch64/BUILD.gn
@@ -32,11 +32,24 @@
]
}
+manifest("aarch64_test_manifest") {
+ source = "manifest.dts"
+ overlay = hftest_manifest_overlay
+}
+
initrd("aarch64_test") {
testonly = true
- manifest = "manifest.dts"
- manifest_overlay = hftest_manifest_overlay
- primary_name = "aarch64_test"
- primary_vm = ":aarch64_test_vm"
+ files = [
+ [
+ "manifest.dtb",
+ ":aarch64_test_manifest",
+ "manifest.dtb",
+ ],
+ [
+ "aarch64_test",
+ ":aarch64_test_vm",
+ "aarch64_test_vm.bin",
+ ],
+ ]
}
diff --git a/test/vmapi/arch/aarch64/gicv3/BUILD.gn b/test/vmapi/arch/aarch64/gicv3/BUILD.gn
index bc8b72a..965a70f 100644
--- a/test/vmapi/arch/aarch64/gicv3/BUILD.gn
+++ b/test/vmapi/arch/aarch64/gicv3/BUILD.gn
@@ -32,15 +32,29 @@
]
}
+manifest("gicv3_test_manifest") {
+ source = "manifest.dts"
+ overlay = hftest_manifest_overlay
+}
+
initrd("gicv3_test") {
testonly = true
- manifest = "manifest.dts"
- manifest_overlay = hftest_manifest_overlay
- primary_name = "gicv3_test"
- primary_vm = ":gicv3_test_vm"
- secondary_vms = [ [
- "services1",
- "services:gicv3_service_vm1",
- ] ]
+ files = [
+ [
+ "manifest.dtb",
+ ":gicv3_test_manifest",
+ "manifest.dtb",
+ ],
+ [
+ "gicv3_test",
+ ":gicv3_test_vm",
+ "gicv3_test_vm.bin",
+ ],
+ [
+ "services1",
+ "services:gicv3_service_vm1",
+ "gicv3_service_vm1.bin",
+ ],
+ ]
}
diff --git a/test/vmapi/primary_only/BUILD.gn b/test/vmapi/primary_only/BUILD.gn
index a8e366c..bd50f7e 100644
--- a/test/vmapi/primary_only/BUILD.gn
+++ b/test/vmapi/primary_only/BUILD.gn
@@ -21,10 +21,23 @@
]
}
+manifest("primary_only_test_manifest") {
+ source = "manifest.dts"
+ overlay = hftest_manifest_overlay
+}
+
initrd("primary_only_test") {
testonly = true
- manifest = "manifest.dts"
- manifest_overlay = hftest_manifest_overlay
- primary_name = "primary_only_test"
- primary_vm = ":primary_only_test_vm"
+ files = [
+ [
+ "manifest.dtb",
+ ":primary_only_test_manifest",
+ "manifest.dtb",
+ ],
+ [
+ "primary_only_test",
+ ":primary_only_test_vm",
+ "primary_only_test_vm.bin",
+ ],
+ ]
}
diff --git a/test/vmapi/primary_with_secondaries/BUILD.gn b/test/vmapi/primary_with_secondaries/BUILD.gn
index e36169f..18c5cf1 100644
--- a/test/vmapi/primary_with_secondaries/BUILD.gn
+++ b/test/vmapi/primary_with_secondaries/BUILD.gn
@@ -43,26 +43,39 @@
]
}
+manifest("primary_with_secondaries_test_manifest") {
+ source = "manifest.dts"
+ overlay = hftest_manifest_overlay
+}
+
initrd("primary_with_secondaries_test") {
testonly = true
- manifest = "manifest.dts"
- manifest_overlay = hftest_manifest_overlay
-
- primary_name = "primary_with_secondaries_test"
- primary_vm = ":primary_with_secondaries_test_vm"
- secondary_vms = [
+ files = [
+ [
+ "manifest.dtb",
+ ":primary_with_secondaries_test_manifest",
+ "manifest.dtb",
+ ],
+ [
+ "primary_with_secondaries_test",
+ ":primary_with_secondaries_test_vm",
+ "primary_with_secondaries_test_vm.bin",
+ ],
[
"services1",
"services:service_vm1",
+ "service_vm1.bin",
],
[
"services2",
"services:service_vm2",
+ "service_vm2.bin",
],
[
"services3",
"services:service_vm3",
+ "service_vm3.bin",
],
]
}