Skip to content

Commit c78ea20

Browse files
committed
Download the signed image artifact, when the default build request is signed.
1 parent bfd0c52 commit c78ea20

3 files changed

Lines changed: 20 additions & 18 deletions

File tree

base/cvd/cuttlefish/host/commands/cvd/fetch/fetch_cvd.cc

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include <optional>
2626
#include <string>
2727
#include <utility>
28+
#include <variant>
2829
#include <vector>
2930

3031
#include <android-base/strings.h>
@@ -57,6 +58,14 @@
5758
namespace cuttlefish {
5859
namespace {
5960

61+
bool IsSignedBuild(const Build& build) {
62+
if (!std::holds_alternative<DeviceBuild>(build)) {
63+
return false;
64+
}
65+
const auto& device_build = std::get<DeviceBuild>(build);
66+
return device_build.is_signed;
67+
}
68+
6069
constexpr mode_t kRwxAllMode = S_IRWXU | S_IRWXG | S_IRWXO;
6170

6271
struct Target {
@@ -180,6 +189,7 @@ Result<void> FetchDefaultTarget(FetchBuildContext& context,
180189
bool keep_downloaded_archives,
181190
const DownloadFlags& flags,
182191
bool has_system_build) {
192+
constexpr char kSignedPrefix[] = "signed/signed-";
183193
// Some older builds might not have misc_info.txt, so permit errors on
184194
// fetching misc_info.txt
185195
if (!context.Artifact("misc_info.txt").Download().ok()) {
@@ -188,7 +198,13 @@ Result<void> FetchDefaultTarget(FetchBuildContext& context,
188198
if (flags.download_img_zip) {
189199
LOG(INFO) << "Downloading image zip for " << context;
190200
std::string img_zip_name = context.GetBuildZipName("img");
191-
FetchArtifact img_zip = context.Artifact(img_zip_name);
201+
std::string img_zip_artifact_name = img_zip_name;
202+
if (IsSignedBuild(context.Build())) {
203+
img_zip_artifact_name = kSignedPrefix + img_zip_artifact_name;
204+
LOG(INFO) << "Attempting to fetch SIGNED default image zip: "
205+
<< img_zip_artifact_name;
206+
}
207+
FetchArtifact img_zip = context.Artifact(img_zip_artifact_name);
192208
CF_EXPECT(img_zip.Download());
193209
CF_EXPECT(img_zip.ExtractAll());
194210
if (!keep_downloaded_archives) {

base/cvd/cuttlefish/host/libs/web/android_build_api.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
#include <android-base/logging.h>
3636
#include <json/value.h>
3737

38+
#include <android-base/file.h>
3839
#include "cuttlefish/common/libs/posix/symlink.h"
3940
#include "cuttlefish/common/libs/utils/contains.h"
4041
#include "cuttlefish/common/libs/utils/files.h"
@@ -423,6 +424,8 @@ Result<std::string> AndroidBuildApi::DownloadTargetFile(
423424
}
424425
// Fallback to download from AB.
425426
}
427+
CF_EXPECT(EnsureDirectoryExists(
428+
std::string(android::base::Dirname(target_filepath))));
426429
CF_EXPECT(ArtifactToFile(build, artifact_name, target_filepath),
427430
"Unable to download " << build << ":" << artifact_name << " to "
428431
<< target_filepath);

base/cvd/cuttlefish/host/libs/web/build_zip_name.cc

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,31 +18,14 @@
1818
#include <string>
1919
#include <variant>
2020

21-
#include "android-base/strings.h"
2221
#include "cuttlefish/host/libs/web/android_build.h"
2322

2423
namespace cuttlefish {
2524

2625
std::string GetBuildZipName(const Build& build, const std::string& name) {
2726
std::string product =
2827
std::visit([](auto&& arg) { return arg.product; }, build);
29-
const auto is_signed =
30-
std::visit([](auto&& arg) { return arg.is_signed; }, build);
31-
const auto& target = std::visit(
32-
[](const auto& arg) -> const std::string& { return arg.target; }, build);
3328
const auto id = std::visit([](auto&& arg) { return arg.id; }, build);
34-
std::string dir_prefix;
35-
if (is_signed && android::base::EndsWith(target, "-user") &&
36-
!android::base::EndsWith(target, "-userdebug")) {
37-
dir_prefix = "signed/";
38-
}
39-
40-
const auto filepath =
41-
std::visit([](auto&& arg) { return arg.filepath; }, build);
42-
if (filepath && !filepath->empty()) {
43-
return dir_prefix + *filepath;
44-
}
45-
4629
return product + "-" + name + "-" + id + ".zip";
4730
}
4831

0 commit comments

Comments
 (0)