Skip to content

Commit acf7464

Browse files
committed
Support failures in the GPT partition config generation
Right now the partition config generation produces references to image files, which are assumed will exist in the future. Reporting errors allows the partition config generation to possibly invoke the logic that actually generates the partitions being referred to. Bug: b/470170417
1 parent 91102db commit acf7464

File tree

9 files changed

+32
-19
lines changed

9 files changed

+32
-19
lines changed

base/cvd/cuttlefish/host/commands/assemble_cvd/assemble_cvd.cc

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -342,10 +342,14 @@ Result<const CuttlefishConfig*> InitFilesystemAndCreateConfig(
342342
Result<std::optional<ChromeOsStateImage>> chrome_os_state =
343343
CF_EXPECT(ChromeOsStateImage::Reuse(instance));
344344
if (chrome_os_state.ok() && metadata.ok() && misc.ok()) {
345-
DiskBuilder os_builder =
345+
Result<DiskBuilder> os_builder =
346346
OsCompositeDiskBuilder(config, instance, *chrome_os_state,
347347
*metadata, *misc, system_image_dir);
348-
creating_os_disk |= CF_EXPECT(os_builder.WillRebuildCompositeDisk());
348+
if (!os_builder.ok()) {
349+
creating_os_disk = true;
350+
} else {
351+
creating_os_disk |= CF_EXPECT(os_builder->WillRebuildCompositeDisk());
352+
}
349353
} else {
350354
creating_os_disk = true;
351355
break;

base/cvd/cuttlefish/host/commands/assemble_cvd/create_dynamic_disk_files.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,8 +161,8 @@ Result<void> CreateDynamicDiskFiles(
161161
MetadataImage metadata = CF_EXPECT(MetadataImage::ReuseOrCreate(instance));
162162
MiscImage misc = CF_EXPECT(MiscImage::ReuseOrCreate(instance));
163163

164-
DiskBuilder os_disk_builder = OsCompositeDiskBuilder(
165-
config, instance, chrome_os_state, metadata, misc, system_image_dirs);
164+
DiskBuilder os_disk_builder = CF_EXPECT(OsCompositeDiskBuilder(
165+
config, instance, chrome_os_state, metadata, misc, system_image_dirs));
166166
const auto os_built_composite =
167167
CF_EXPECT(os_disk_builder.BuildCompositeDiskIfNecessary());
168168

base/cvd/cuttlefish/host/commands/assemble_cvd/disk/BUILD.bazel

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ cf_cc_library(
2222
hdrs = ["android_composite_disk_config.h"],
2323
deps = [
2424
"//cuttlefish/common/libs/utils:files",
25+
"//cuttlefish/common/libs/utils:result",
2526
"//cuttlefish/host/commands/assemble_cvd/disk:metadata_image",
2627
"//cuttlefish/host/commands/assemble_cvd/disk:misc_image",
2728
"//cuttlefish/host/commands/assemble_cvd/flags:system_image_dir",
@@ -37,6 +38,7 @@ cf_cc_library(
3738
hdrs = ["android_efi_loader_composite_disk.h"],
3839
deps = [
3940
"//cuttlefish/common/libs/utils:files",
41+
"//cuttlefish/common/libs/utils:result",
4042
"//cuttlefish/host/commands/assemble_cvd/disk:android_composite_disk_config",
4143
"//cuttlefish/host/commands/assemble_cvd/disk:metadata_image",
4244
"//cuttlefish/host/commands/assemble_cvd/disk:misc_image",
@@ -263,6 +265,7 @@ cf_cc_library(
263265
srcs = ["os_composite_disk.cc"],
264266
hdrs = ["os_composite_disk.h"],
265267
deps = [
268+
"//cuttlefish/common/libs/utils:result",
266269
"//cuttlefish/host/commands/assemble_cvd:assemble_cvd_flags",
267270
"//cuttlefish/host/commands/assemble_cvd:disk_builder",
268271
"//cuttlefish/host/commands/assemble_cvd/disk:android_composite_disk_config",

base/cvd/cuttlefish/host/commands/assemble_cvd/disk/android_composite_disk_config.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include <android-base/strings.h>
2626

2727
#include "cuttlefish/common/libs/utils/files.h"
28+
#include "cuttlefish/common/libs/utils/result.h"
2829
#include "cuttlefish/host/commands/assemble_cvd/disk/metadata_image.h"
2930
#include "cuttlefish/host/commands/assemble_cvd/disk/misc_image.h"
3031
#include "cuttlefish/host/commands/assemble_cvd/flags/system_image_dir.h"
@@ -48,7 +49,7 @@ std::optional<ImagePartition> HibernationImage(
4849

4950
} // namespace
5051

51-
std::vector<ImagePartition> AndroidCompositeDiskConfig(
52+
Result<std::vector<ImagePartition>> AndroidCompositeDiskConfig(
5253
const CuttlefishConfig::InstanceSpecific& instance,
5354
const MetadataImage& metadata_image, const MiscImage& misc_image,
5455
const SystemImageDirFlag& system_image_dir) {

base/cvd/cuttlefish/host/commands/assemble_cvd/disk/android_composite_disk_config.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
#include <vector>
1919

20+
#include "cuttlefish/common/libs/utils/result.h"
2021
#include "cuttlefish/host/commands/assemble_cvd/disk/metadata_image.h"
2122
#include "cuttlefish/host/commands/assemble_cvd/disk/misc_image.h"
2223
#include "cuttlefish/host/commands/assemble_cvd/flags/system_image_dir.h"
@@ -25,7 +26,7 @@
2526

2627
namespace cuttlefish {
2728

28-
std::vector<ImagePartition> AndroidCompositeDiskConfig(
29+
Result<std::vector<ImagePartition>> AndroidCompositeDiskConfig(
2930
const CuttlefishConfig::InstanceSpecific& instance, const MetadataImage&,
3031
const MiscImage&, const SystemImageDirFlag&);
3132

base/cvd/cuttlefish/host/commands/assemble_cvd/disk/android_efi_loader_composite_disk.cc

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include <vector>
2020

2121
#include "cuttlefish/common/libs/utils/files.h"
22+
#include "cuttlefish/common/libs/utils/result.h"
2223
#include "cuttlefish/host/commands/assemble_cvd/disk/android_composite_disk_config.h"
2324
#include "cuttlefish/host/commands/assemble_cvd/disk/metadata_image.h"
2425
#include "cuttlefish/host/commands/assemble_cvd/disk/misc_image.h"
@@ -29,12 +30,12 @@
2930

3031
namespace cuttlefish {
3132

32-
std::vector<ImagePartition> AndroidEfiLoaderCompositeDiskConfig(
33+
Result<std::vector<ImagePartition>> AndroidEfiLoaderCompositeDiskConfig(
3334
const CuttlefishConfig::InstanceSpecific& instance,
3435
const MetadataImage& metadata, const MiscImage& misc,
3536
const SystemImageDirFlag& system_image_dir) {
36-
std::vector<ImagePartition> partitions =
37-
AndroidCompositeDiskConfig(instance, metadata, misc, system_image_dir);
37+
std::vector<ImagePartition> partitions = CF_EXPECT(
38+
AndroidCompositeDiskConfig(instance, metadata, misc, system_image_dir));
3839
// Cuttlefish uboot EFI bootflow by default looks at the first partition
3940
// for EFI application. Thus we put "android_esp" at the beginning.
4041
partitions.insert(

base/cvd/cuttlefish/host/commands/assemble_cvd/disk/android_efi_loader_composite_disk.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
#include <vector>
2020

21+
#include "cuttlefish/common/libs/utils/result.h"
2122
#include "cuttlefish/host/commands/assemble_cvd/disk/metadata_image.h"
2223
#include "cuttlefish/host/commands/assemble_cvd/disk/misc_image.h"
2324
#include "cuttlefish/host/commands/assemble_cvd/flags/system_image_dir.h"
@@ -26,7 +27,7 @@
2627

2728
namespace cuttlefish {
2829

29-
std::vector<ImagePartition> AndroidEfiLoaderCompositeDiskConfig(
30+
Result<std::vector<ImagePartition>> AndroidEfiLoaderCompositeDiskConfig(
3031
const CuttlefishConfig::InstanceSpecific& instance, const MetadataImage&,
3132
const MiscImage&, const SystemImageDirFlag&);
3233

base/cvd/cuttlefish/host/commands/assemble_cvd/disk/os_composite_disk.cc

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
#include <android-base/logging.h>
2323

24+
#include "cuttlefish/common/libs/utils/result.h"
2425
#include "cuttlefish/host/commands/assemble_cvd/assemble_cvd_flags.h"
2526
#include "cuttlefish/host/commands/assemble_cvd/disk/android_composite_disk_config.h"
2627
#include "cuttlefish/host/commands/assemble_cvd/disk/android_efi_loader_composite_disk.h"
@@ -39,18 +40,18 @@
3940
namespace cuttlefish {
4041
namespace {
4142

42-
std::vector<ImagePartition> GetOsCompositeDiskConfig(
43+
Result<std::vector<ImagePartition>> GetOsCompositeDiskConfig(
4344
const CuttlefishConfig::InstanceSpecific& instance,
4445
const std::optional<ChromeOsStateImage>& chrome_os_state,
4546
const MetadataImage& metadata, const MiscImage& misc,
4647
const SystemImageDirFlag& system_image_dir) {
4748
switch (instance.boot_flow()) {
4849
case BootFlow::Android:
49-
return AndroidCompositeDiskConfig(instance, metadata, misc,
50-
system_image_dir);
50+
return CF_EXPECT(AndroidCompositeDiskConfig(instance, metadata, misc,
51+
system_image_dir));
5152
case BootFlow::AndroidEfiLoader:
52-
return AndroidEfiLoaderCompositeDiskConfig(instance, metadata, misc,
53-
system_image_dir);
53+
return CF_EXPECT(AndroidEfiLoaderCompositeDiskConfig(
54+
instance, metadata, misc, system_image_dir));
5455
case BootFlow::ChromeOs:
5556
CHECK(chrome_os_state.has_value());
5657
return ChromeOsCompositeDiskConfig(instance, *chrome_os_state);
@@ -65,7 +66,7 @@ std::vector<ImagePartition> GetOsCompositeDiskConfig(
6566

6667
} // namespace
6768

68-
DiskBuilder OsCompositeDiskBuilder(
69+
Result<DiskBuilder> OsCompositeDiskBuilder(
6970
const CuttlefishConfig& config,
7071
const CuttlefishConfig::InstanceSpecific& instance,
7172
const std::optional<ChromeOsStateImage>& chrome_os_state,
@@ -83,8 +84,8 @@ DiskBuilder OsCompositeDiskBuilder(
8384
.CompositeDiskPath(instance.chromeos_disk());
8485
}
8586
return builder
86-
.Partitions(GetOsCompositeDiskConfig(instance, chrome_os_state, metadata,
87-
misc, system_image_dir))
87+
.Partitions(CF_EXPECT(GetOsCompositeDiskConfig(
88+
instance, chrome_os_state, metadata, misc, system_image_dir)))
8889
.HeaderPath(instance.PerInstancePath("os_composite_gpt_header.img"))
8990
.FooterPath(instance.PerInstancePath("os_composite_gpt_footer.img"))
9091
.CompositeDiskPath(instance.os_composite_disk_path());

base/cvd/cuttlefish/host/commands/assemble_cvd/disk/os_composite_disk.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
#include <optional>
2020

21+
#include "cuttlefish/common/libs/utils/result.h"
2122
#include "cuttlefish/host/commands/assemble_cvd/disk/chromeos_state.h"
2223
#include "cuttlefish/host/commands/assemble_cvd/disk/metadata_image.h"
2324
#include "cuttlefish/host/commands/assemble_cvd/disk/misc_image.h"
@@ -27,7 +28,7 @@
2728

2829
namespace cuttlefish {
2930

30-
DiskBuilder OsCompositeDiskBuilder(
31+
Result<DiskBuilder> OsCompositeDiskBuilder(
3132
const CuttlefishConfig& config,
3233
const CuttlefishConfig::InstanceSpecific& instance,
3334
const std::optional<ChromeOsStateImage>&, const MetadataImage&,

0 commit comments

Comments
 (0)