update_engine: Deprecate major version 1
We have moved away from major version 1 in Chrome OS and already have a
stepping stone for it in M53. So this cleanup makes the code much easier
to understand.
BUG=chromium:1008553
TEST=FEATURES="test" sudo emerge update_engine update_payload
TEST=cros_generate_update_payload --image chromiumos_test_image.bin --check --output delta.bin
Change-Id: I01815dfa5fdf395f8214ef162e01ecca2d42f7fc
Reviewed-on: https://chromium-review.googlesource.com/c/aosp/platform/system/update_engine/+/1857459
Tested-by: Amin Hassani <ahassani@chromium.org>
Reviewed-by: Sen Jiang <senj@chromium.org>
Commit-Queue: Amin Hassani <ahassani@chromium.org>
diff --git a/payload_generator/ab_generator_unittest.cc b/payload_generator/ab_generator_unittest.cc
index 2f8c0c6..170e0e3 100644
--- a/payload_generator/ab_generator_unittest.cc
+++ b/payload_generator/ab_generator_unittest.cc
@@ -30,10 +30,10 @@
#include "update_engine/common/test_utils.h"
#include "update_engine/common/utils.h"
#include "update_engine/payload_generator/annotated_operation.h"
-#include "update_engine/payload_generator/bzip.h"
#include "update_engine/payload_generator/delta_diff_generator.h"
#include "update_engine/payload_generator/extent_ranges.h"
#include "update_engine/payload_generator/extent_utils.h"
+#include "update_engine/payload_generator/xz.h"
using std::string;
using std::vector;
@@ -48,8 +48,8 @@
return ext.start_block() == start_block && ext.num_blocks() == num_blocks;
}
-// Tests splitting of a REPLACE/REPLACE_BZ operation.
-void TestSplitReplaceOrReplaceBzOperation(InstallOperation_Type orig_type,
+// Tests splitting of a REPLACE/REPLACE_XZ operation.
+void TestSplitReplaceOrReplaceXzOperation(InstallOperation_Type orig_type,
bool compressible) {
const size_t op_ex1_start_block = 2;
const size_t op_ex1_num_blocks = 2;
@@ -71,7 +71,7 @@
}
ASSERT_EQ(part_size, part_data.size());
test_utils::ScopedTempFile part_file(
- "SplitReplaceOrReplaceBzTest_part.XXXXXX");
+ "SplitReplaceOrReplaceXzTest_part.XXXXXX");
ASSERT_TRUE(test_utils::WriteFileVector(part_file.path(), part_data));
// Create original operation and blob data.
@@ -97,7 +97,7 @@
if (orig_type == InstallOperation::REPLACE) {
op_blob = op_data;
} else {
- ASSERT_TRUE(BzipCompress(op_data, &op_blob));
+ ASSERT_TRUE(XzCompress(op_data, &op_blob));
}
op.set_data_offset(0);
op.set_data_length(op_blob.size());
@@ -108,7 +108,7 @@
// Create the data file.
test_utils::ScopedTempFile data_file(
- "SplitReplaceOrReplaceBzTest_data.XXXXXX");
+ "SplitReplaceOrReplaceXzTest_data.XXXXXX");
EXPECT_TRUE(test_utils::WriteFileVector(data_file.path(), op_blob));
int data_fd = open(data_file.path().c_str(), O_RDWR, 000);
EXPECT_GE(data_fd, 0);
@@ -118,14 +118,14 @@
// Split the operation.
vector<AnnotatedOperation> result_ops;
- PayloadVersion version(kChromeOSMajorPayloadVersion,
+ PayloadVersion version(kBrilloMajorPayloadVersion,
kSourceMinorPayloadVersion);
ASSERT_TRUE(ABGenerator::SplitAReplaceOp(
version, aop, part_file.path(), &result_ops, &blob_file));
// Check the result.
InstallOperation_Type expected_type =
- compressible ? InstallOperation::REPLACE_BZ : InstallOperation::REPLACE;
+ compressible ? InstallOperation::REPLACE_XZ : InstallOperation::REPLACE;
ASSERT_EQ(2U, result_ops.size());
@@ -143,7 +143,7 @@
part_data.begin() + op_ex1_offset + op_ex1_size);
brillo::Blob first_expected_blob;
if (compressible) {
- ASSERT_TRUE(BzipCompress(first_expected_data, &first_expected_blob));
+ ASSERT_TRUE(XzCompress(first_expected_data, &first_expected_blob));
} else {
first_expected_blob = first_expected_data;
}
@@ -173,7 +173,7 @@
part_data.begin() + op_ex2_offset + op_ex2_size);
brillo::Blob second_expected_blob;
if (compressible) {
- ASSERT_TRUE(BzipCompress(second_expected_data, &second_expected_blob));
+ ASSERT_TRUE(XzCompress(second_expected_data, &second_expected_blob));
} else {
second_expected_blob = second_expected_data;
}
@@ -199,8 +199,8 @@
}
}
-// Tests merging of REPLACE/REPLACE_BZ operations.
-void TestMergeReplaceOrReplaceBzOperations(InstallOperation_Type orig_type,
+// Tests merging of REPLACE/REPLACE_XZ operations.
+void TestMergeReplaceOrReplaceXzOperations(InstallOperation_Type orig_type,
bool compressible) {
const size_t first_op_num_blocks = 1;
const size_t second_op_num_blocks = 2;
@@ -221,7 +221,7 @@
}
ASSERT_EQ(part_size, part_data.size());
test_utils::ScopedTempFile part_file(
- "MergeReplaceOrReplaceBzTest_part.XXXXXX");
+ "MergeReplaceOrReplaceXzTest_part.XXXXXX");
ASSERT_TRUE(test_utils::WriteFileVector(part_file.path(), part_data));
// Create original operations and blob data.
@@ -239,7 +239,7 @@
if (orig_type == InstallOperation::REPLACE) {
first_op_blob = first_op_data;
} else {
- ASSERT_TRUE(BzipCompress(first_op_data, &first_op_blob));
+ ASSERT_TRUE(XzCompress(first_op_data, &first_op_blob));
}
first_op.set_data_offset(0);
first_op.set_data_length(first_op_blob.size());
@@ -259,7 +259,7 @@
if (orig_type == InstallOperation::REPLACE) {
second_op_blob = second_op_data;
} else {
- ASSERT_TRUE(BzipCompress(second_op_data, &second_op_blob));
+ ASSERT_TRUE(XzCompress(second_op_data, &second_op_blob));
}
second_op.set_data_offset(first_op_blob.size());
second_op.set_data_length(second_op_blob.size());
@@ -272,7 +272,7 @@
// Create the data file.
test_utils::ScopedTempFile data_file(
- "MergeReplaceOrReplaceBzTest_data.XXXXXX");
+ "MergeReplaceOrReplaceXzTest_data.XXXXXX");
EXPECT_TRUE(test_utils::WriteFileVector(data_file.path(), blob_data));
int data_fd = open(data_file.path().c_str(), O_RDWR, 000);
EXPECT_GE(data_fd, 0);
@@ -281,14 +281,14 @@
BlobFileWriter blob_file(data_fd, &data_file_size);
// Merge the operations.
- PayloadVersion version(kChromeOSMajorPayloadVersion,
+ PayloadVersion version(kBrilloMajorPayloadVersion,
kSourceMinorPayloadVersion);
EXPECT_TRUE(ABGenerator::MergeOperations(
&aops, version, 5, part_file.path(), &blob_file));
// Check the result.
InstallOperation_Type expected_op_type =
- compressible ? InstallOperation::REPLACE_BZ : InstallOperation::REPLACE;
+ compressible ? InstallOperation::REPLACE_XZ : InstallOperation::REPLACE;
EXPECT_EQ(1U, aops.size());
InstallOperation new_op = aops[0].op;
EXPECT_EQ(expected_op_type, new_op.type());
@@ -303,7 +303,7 @@
part_data.begin() + total_op_size);
brillo::Blob expected_blob;
if (compressible) {
- ASSERT_TRUE(BzipCompress(expected_data, &expected_blob));
+ ASSERT_TRUE(XzCompress(expected_data, &expected_blob));
} else {
expected_blob = expected_data;
}
@@ -384,19 +384,19 @@
}
TEST_F(ABGeneratorTest, SplitReplaceTest) {
- TestSplitReplaceOrReplaceBzOperation(InstallOperation::REPLACE, false);
+ TestSplitReplaceOrReplaceXzOperation(InstallOperation::REPLACE, false);
}
-TEST_F(ABGeneratorTest, SplitReplaceIntoReplaceBzTest) {
- TestSplitReplaceOrReplaceBzOperation(InstallOperation::REPLACE, true);
+TEST_F(ABGeneratorTest, SplitReplaceIntoReplaceXzTest) {
+ TestSplitReplaceOrReplaceXzOperation(InstallOperation::REPLACE, true);
}
-TEST_F(ABGeneratorTest, SplitReplaceBzTest) {
- TestSplitReplaceOrReplaceBzOperation(InstallOperation::REPLACE_BZ, true);
+TEST_F(ABGeneratorTest, SplitReplaceXzTest) {
+ TestSplitReplaceOrReplaceXzOperation(InstallOperation::REPLACE_XZ, true);
}
-TEST_F(ABGeneratorTest, SplitReplaceBzIntoReplaceTest) {
- TestSplitReplaceOrReplaceBzOperation(InstallOperation::REPLACE_BZ, false);
+TEST_F(ABGeneratorTest, SplitReplaceXzIntoReplaceTest) {
+ TestSplitReplaceOrReplaceXzOperation(InstallOperation::REPLACE_XZ, false);
}
TEST_F(ABGeneratorTest, SortOperationsByDestinationTest) {
@@ -464,7 +464,7 @@
aops.push_back(third_aop);
BlobFileWriter blob_file(0, nullptr);
- PayloadVersion version(kChromeOSMajorPayloadVersion,
+ PayloadVersion version(kBrilloMajorPayloadVersion,
kSourceMinorPayloadVersion);
EXPECT_TRUE(ABGenerator::MergeOperations(&aops, version, 5, "", &blob_file));
@@ -484,19 +484,19 @@
}
TEST_F(ABGeneratorTest, MergeReplaceOperationsTest) {
- TestMergeReplaceOrReplaceBzOperations(InstallOperation::REPLACE, false);
+ TestMergeReplaceOrReplaceXzOperations(InstallOperation::REPLACE, false);
}
-TEST_F(ABGeneratorTest, MergeReplaceOperationsToReplaceBzTest) {
- TestMergeReplaceOrReplaceBzOperations(InstallOperation::REPLACE, true);
+TEST_F(ABGeneratorTest, MergeReplaceOperationsToReplaceXzTest) {
+ TestMergeReplaceOrReplaceXzOperations(InstallOperation::REPLACE, true);
}
-TEST_F(ABGeneratorTest, MergeReplaceBzOperationsTest) {
- TestMergeReplaceOrReplaceBzOperations(InstallOperation::REPLACE_BZ, true);
+TEST_F(ABGeneratorTest, MergeReplaceXzOperationsTest) {
+ TestMergeReplaceOrReplaceXzOperations(InstallOperation::REPLACE_XZ, true);
}
-TEST_F(ABGeneratorTest, MergeReplaceBzOperationsToReplaceTest) {
- TestMergeReplaceOrReplaceBzOperations(InstallOperation::REPLACE_BZ, false);
+TEST_F(ABGeneratorTest, MergeReplaceXzOperationsToReplaceTest) {
+ TestMergeReplaceOrReplaceXzOperations(InstallOperation::REPLACE_XZ, false);
}
TEST_F(ABGeneratorTest, NoMergeOperationsTest) {
@@ -537,7 +537,7 @@
aops.push_back(fourth_aop);
BlobFileWriter blob_file(0, nullptr);
- PayloadVersion version(kChromeOSMajorPayloadVersion,
+ PayloadVersion version(kBrilloMajorPayloadVersion,
kSourceMinorPayloadVersion);
EXPECT_TRUE(ABGenerator::MergeOperations(&aops, version, 4, "", &blob_file));
diff --git a/payload_generator/delta_diff_utils_unittest.cc b/payload_generator/delta_diff_utils_unittest.cc
index e25c867..bc3dca5 100644
--- a/payload_generator/delta_diff_utils_unittest.cc
+++ b/payload_generator/delta_diff_utils_unittest.cc
@@ -136,7 +136,7 @@
bool RunDeltaMovedAndZeroBlocks(ssize_t chunk_blocks,
uint32_t minor_version) {
BlobFileWriter blob_file(blob_fd_, &blob_size_);
- PayloadVersion version(kChromeOSMajorPayloadVersion, minor_version);
+ PayloadVersion version(kBrilloMajorPayloadVersion, minor_version);
ExtentRanges old_zero_blocks;
return diff_utils::DeltaMovedAndZeroBlocks(&aops_,
old_part_.path,
@@ -225,8 +225,7 @@
new_extents,
{}, // old_deflates
{}, // new_deflates
- PayloadVersion(kChromeOSMajorPayloadVersion,
- kSourceMinorPayloadVersion),
+ PayloadVersion(kBrilloMajorPayloadVersion, kSourceMinorPayloadVersion),
&data,
&op));
EXPECT_FALSE(data.empty());
@@ -268,7 +267,7 @@
new_extents,
{}, // old_deflates
{}, // new_deflates
- PayloadVersion(kChromeOSMajorPayloadVersion, kSourceMinorPayloadVersion),
+ PayloadVersion(kBrilloMajorPayloadVersion, kSourceMinorPayloadVersion),
&data,
&op));
EXPECT_TRUE(data.empty());
@@ -302,7 +301,7 @@
new_extents,
{}, // old_deflates
{}, // new_deflates
- PayloadVersion(kChromeOSMajorPayloadVersion, kSourceMinorPayloadVersion),
+ PayloadVersion(kBrilloMajorPayloadVersion, kSourceMinorPayloadVersion),
&data,
&op));
diff --git a/payload_generator/full_update_generator_unittest.cc b/payload_generator/full_update_generator_unittest.cc
index e398125..5f39e8b 100644
--- a/payload_generator/full_update_generator_unittest.cc
+++ b/payload_generator/full_update_generator_unittest.cc
@@ -90,7 +90,7 @@
EXPECT_EQ(config_.hard_chunk_size / config_.block_size,
aops[i].op.dst_extents(0).num_blocks());
if (aops[i].op.type() != InstallOperation::REPLACE) {
- EXPECT_EQ(InstallOperation::REPLACE_BZ, aops[i].op.type());
+ EXPECT_EQ(InstallOperation::REPLACE_XZ, aops[i].op.type());
}
}
}
diff --git a/payload_generator/generate_delta_main.cc b/payload_generator/generate_delta_main.cc
index 16f360f..69ac8bb 100644
--- a/payload_generator/generate_delta_main.cc
+++ b/payload_generator/generate_delta_main.cc
@@ -509,16 +509,10 @@
partition_names = base::SplitString(
FLAGS_partition_names, ":", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
CHECK(!partition_names.empty());
- if (FLAGS_major_version == kChromeOSMajorPayloadVersion ||
- FLAGS_new_partitions.empty()) {
- LOG_IF(FATAL, partition_names.size() != 2)
- << "To support more than 2 partitions, please use the "
- << "--new_partitions flag and major version 2.";
- LOG_IF(FATAL,
- partition_names[0] != kPartitionNameRoot ||
- partition_names[1] != kPartitionNameKernel)
- << "To support non-default partition name, please use the "
- << "--new_partitions flag and major version 2.";
+ if (FLAGS_major_version < kMinSupportedMajorPayloadVersion ||
+ FLAGS_major_version > kMaxSupportedMajorPayloadVersion) {
+ LOG(FATAL) << "Unsupported major version " << FLAGS_major_version;
+ return 1;
}
if (!FLAGS_new_partitions.empty()) {
@@ -577,8 +571,6 @@
}
if (!FLAGS_new_postinstall_config_file.empty()) {
- LOG_IF(FATAL, FLAGS_major_version == kChromeOSMajorPayloadVersion)
- << "Postinstall config is only allowed in major version 2 or newer.";
brillo::KeyValueStore store;
CHECK(store.Load(base::FilePath(FLAGS_new_postinstall_config_file)));
CHECK(payload_config.target.LoadPostInstallConfig(store));
@@ -596,9 +588,6 @@
CHECK(payload_config.target.LoadImageSize());
if (!FLAGS_dynamic_partition_info_file.empty()) {
- LOG_IF(FATAL, FLAGS_major_version == kChromeOSMajorPayloadVersion)
- << "Dynamic partition info is only allowed in major version 2 or "
- "newer.";
brillo::KeyValueStore store;
CHECK(store.Load(base::FilePath(FLAGS_dynamic_partition_info_file)));
CHECK(payload_config.target.LoadDynamicPartitionMetadata(store));
diff --git a/payload_generator/payload_file.cc b/payload_generator/payload_file.cc
index 775a509..b55d03c 100644
--- a/payload_generator/payload_file.cc
+++ b/payload_generator/payload_file.cc
@@ -74,11 +74,9 @@
manifest_.set_block_size(config.block_size);
manifest_.set_max_timestamp(config.max_timestamp);
- if (major_version_ == kBrilloMajorPayloadVersion) {
- if (config.target.dynamic_partition_metadata != nullptr)
- *(manifest_.mutable_dynamic_partition_metadata()) =
- *(config.target.dynamic_partition_metadata);
- }
+ if (config.target.dynamic_partition_metadata != nullptr)
+ *(manifest_.mutable_dynamic_partition_metadata()) =
+ *(config.target.dynamic_partition_metadata);
return true;
}
@@ -86,13 +84,6 @@
bool PayloadFile::AddPartition(const PartitionConfig& old_conf,
const PartitionConfig& new_conf,
const vector<AnnotatedOperation>& aops) {
- // Check partitions order for Chrome OS
- if (major_version_ == kChromeOSMajorPayloadVersion) {
- const vector<const char*> part_order = {kPartitionNameRoot,
- kPartitionNameKernel};
- TEST_AND_RETURN_FALSE(part_vec_.size() < part_order.size());
- TEST_AND_RETURN_FALSE(new_conf.name == part_order[part_vec_.size()]);
- }
Partition part;
part.name = new_conf.name;
part.aops = aops;
@@ -134,66 +125,45 @@
}
// Copy the operations and partition info from the part_vec_ to the manifest.
- manifest_.clear_install_operations();
- manifest_.clear_kernel_install_operations();
manifest_.clear_partitions();
for (const auto& part : part_vec_) {
- if (major_version_ == kBrilloMajorPayloadVersion) {
- PartitionUpdate* partition = manifest_.add_partitions();
- partition->set_partition_name(part.name);
- if (part.postinstall.run) {
- partition->set_run_postinstall(true);
- if (!part.postinstall.path.empty())
- partition->set_postinstall_path(part.postinstall.path);
- if (!part.postinstall.filesystem_type.empty())
- partition->set_filesystem_type(part.postinstall.filesystem_type);
- partition->set_postinstall_optional(part.postinstall.optional);
+ PartitionUpdate* partition = manifest_.add_partitions();
+ partition->set_partition_name(part.name);
+ if (part.postinstall.run) {
+ partition->set_run_postinstall(true);
+ if (!part.postinstall.path.empty())
+ partition->set_postinstall_path(part.postinstall.path);
+ if (!part.postinstall.filesystem_type.empty())
+ partition->set_filesystem_type(part.postinstall.filesystem_type);
+ partition->set_postinstall_optional(part.postinstall.optional);
+ }
+ if (!part.verity.IsEmpty()) {
+ if (part.verity.hash_tree_extent.num_blocks() != 0) {
+ *partition->mutable_hash_tree_data_extent() =
+ part.verity.hash_tree_data_extent;
+ *partition->mutable_hash_tree_extent() = part.verity.hash_tree_extent;
+ partition->set_hash_tree_algorithm(part.verity.hash_tree_algorithm);
+ if (!part.verity.hash_tree_salt.empty())
+ partition->set_hash_tree_salt(part.verity.hash_tree_salt.data(),
+ part.verity.hash_tree_salt.size());
}
- if (!part.verity.IsEmpty()) {
- if (part.verity.hash_tree_extent.num_blocks() != 0) {
- *partition->mutable_hash_tree_data_extent() =
- part.verity.hash_tree_data_extent;
- *partition->mutable_hash_tree_extent() = part.verity.hash_tree_extent;
- partition->set_hash_tree_algorithm(part.verity.hash_tree_algorithm);
- if (!part.verity.hash_tree_salt.empty())
- partition->set_hash_tree_salt(part.verity.hash_tree_salt.data(),
- part.verity.hash_tree_salt.size());
- }
- if (part.verity.fec_extent.num_blocks() != 0) {
- *partition->mutable_fec_data_extent() = part.verity.fec_data_extent;
- *partition->mutable_fec_extent() = part.verity.fec_extent;
- partition->set_fec_roots(part.verity.fec_roots);
- }
- }
- for (const AnnotatedOperation& aop : part.aops) {
- *partition->add_operations() = aop.op;
- }
- if (part.old_info.has_size() || part.old_info.has_hash())
- *(partition->mutable_old_partition_info()) = part.old_info;
- if (part.new_info.has_size() || part.new_info.has_hash())
- *(partition->mutable_new_partition_info()) = part.new_info;
- } else {
- // major_version_ == kChromeOSMajorPayloadVersion
- if (part.name == kPartitionNameKernel) {
- for (const AnnotatedOperation& aop : part.aops)
- *manifest_.add_kernel_install_operations() = aop.op;
- if (part.old_info.has_size() || part.old_info.has_hash())
- *manifest_.mutable_old_kernel_info() = part.old_info;
- if (part.new_info.has_size() || part.new_info.has_hash())
- *manifest_.mutable_new_kernel_info() = part.new_info;
- } else {
- for (const AnnotatedOperation& aop : part.aops)
- *manifest_.add_install_operations() = aop.op;
- if (part.old_info.has_size() || part.old_info.has_hash())
- *manifest_.mutable_old_rootfs_info() = part.old_info;
- if (part.new_info.has_size() || part.new_info.has_hash())
- *manifest_.mutable_new_rootfs_info() = part.new_info;
+ if (part.verity.fec_extent.num_blocks() != 0) {
+ *partition->mutable_fec_data_extent() = part.verity.fec_data_extent;
+ *partition->mutable_fec_extent() = part.verity.fec_extent;
+ partition->set_fec_roots(part.verity.fec_roots);
}
}
+ for (const AnnotatedOperation& aop : part.aops) {
+ *partition->add_operations() = aop.op;
+ }
+ if (part.old_info.has_size() || part.old_info.has_hash())
+ *(partition->mutable_old_partition_info()) = part.old_info;
+ if (part.new_info.has_size() || part.new_info.has_hash())
+ *(partition->mutable_new_partition_info()) = part.new_info;
}
// Signatures appear at the end of the blobs. Note the offset in the
- // manifest_.
+ // |manifest_|.
uint64_t signature_blob_length = 0;
if (!private_key_path.empty()) {
TEST_AND_RETURN_FALSE(PayloadSigner::SignatureBlobLength(
@@ -201,7 +171,6 @@
PayloadSigner::AddSignatureToManifest(
next_blob_offset,
signature_blob_length,
- major_version_ == kChromeOSMajorPayloadVersion,
&manifest_);
}
@@ -229,18 +198,14 @@
TEST_AND_RETURN_FALSE(
WriteUint64AsBigEndian(&writer, serialized_manifest.size()));
- // Write metadata signature size.
- uint32_t metadata_signature_size = 0;
- if (major_version_ == kBrilloMajorPayloadVersion) {
- // Metadata signature has the same size as payload signature, because they
- // are both the same kind of signature for the same kind of hash.
- uint32_t metadata_signature_size = htobe32(signature_blob_length);
- TEST_AND_RETURN_FALSE_ERRNO(writer.Write(&metadata_signature_size,
- sizeof(metadata_signature_size)));
- metadata_size += sizeof(metadata_signature_size);
- // Set correct size instead of big endian size.
- metadata_signature_size = signature_blob_length;
- }
+ // Metadata signature has the same size as payload signature, because they
+ // are both the same kind of signature for the same kind of hash.
+ uint32_t metadata_signature_size = htobe32(signature_blob_length);
+ TEST_AND_RETURN_FALSE_ERRNO(
+ writer.Write(&metadata_signature_size, sizeof(metadata_signature_size)));
+ metadata_size += sizeof(metadata_signature_size);
+ // Set correct size instead of big endian size.
+ metadata_signature_size = signature_blob_length;
// Write protobuf
LOG(INFO) << "Writing final delta file protobuf... "
@@ -249,8 +214,7 @@
writer.Write(serialized_manifest.data(), serialized_manifest.size()));
// Write metadata signature blob.
- if (major_version_ == kBrilloMajorPayloadVersion &&
- !private_key_path.empty()) {
+ if (!private_key_path.empty()) {
brillo::Blob metadata_hash, metadata_signature;
TEST_AND_RETURN_FALSE(HashCalculator::RawHashOfFile(
payload_file, metadata_size, &metadata_hash));
@@ -262,7 +226,7 @@
writer.Write(metadata_signature.data(), metadata_signature.size()));
}
- // Append the data blobs
+ // Append the data blobs.
LOG(INFO) << "Writing final delta file data blobs...";
int blobs_fd = open(ordered_blobs_path.c_str(), O_RDONLY, 0);
ScopedFdCloser blobs_fd_closer(&blobs_fd);
diff --git a/payload_generator/payload_generation_config.cc b/payload_generator/payload_generation_config.cc
index 3b791c8..e1f700a 100644
--- a/payload_generator/payload_generation_config.cc
+++ b/payload_generator/payload_generation_config.cc
@@ -219,8 +219,7 @@
}
bool PayloadVersion::Validate() const {
- TEST_AND_RETURN_FALSE(major == kChromeOSMajorPayloadVersion ||
- major == kBrilloMajorPayloadVersion);
+ TEST_AND_RETURN_FALSE(major == kBrilloMajorPayloadVersion);
TEST_AND_RETURN_FALSE(minor == kFullPayloadMinorVersion ||
minor == kSourceMinorPayloadVersion ||
minor == kOpSrcHashMinorPayloadVersion ||
@@ -236,13 +235,10 @@
case InstallOperation::REPLACE:
case InstallOperation::REPLACE_BZ:
// These operations were included in the original payload format.
- return true;
-
case InstallOperation::REPLACE_XZ:
- // These operations are included in the major version used in Brillo, but
- // can also be used with minor version 3 or newer.
- return major == kBrilloMajorPayloadVersion ||
- minor >= kOpSrcHashMinorPayloadVersion;
+ // These operations are included minor version 3 or newer and full
+ // payloads.
+ return true;
case InstallOperation::ZERO:
case InstallOperation::DISCARD:
@@ -298,8 +294,6 @@
for (const PartitionConfig& part : target.partitions) {
TEST_AND_RETURN_FALSE(part.ValidateExists());
TEST_AND_RETURN_FALSE(part.size % block_size == 0);
- if (version.major == kChromeOSMajorPayloadVersion)
- TEST_AND_RETURN_FALSE(part.postinstall.IsEmpty());
if (version.minor < kVerityMinorPayloadVersion)
TEST_AND_RETURN_FALSE(part.verity.IsEmpty());
}
diff --git a/payload_generator/payload_properties.cc b/payload_generator/payload_properties.cc
index 53e69f3..bc82eb7 100644
--- a/payload_generator/payload_properties.cc
+++ b/payload_generator/payload_properties.cc
@@ -119,8 +119,7 @@
metadata_signatures_ = base::JoinString(base64_signatures, ":");
}
- is_delta_ = manifest.has_old_image_info() || manifest.has_old_kernel_info() ||
- manifest.has_old_rootfs_info() ||
+ is_delta_ = manifest.has_old_image_info() ||
std::any_of(manifest.partitions().begin(),
manifest.partitions().end(),
[](const PartitionUpdate& part) {
diff --git a/payload_generator/payload_signer.cc b/payload_generator/payload_signer.cc
index 2a7021f..420329f 100644
--- a/payload_generator/payload_signer.cc
+++ b/payload_generator/payload_signer.cc
@@ -98,23 +98,20 @@
uint64_t metadata_size = payload_metadata.GetMetadataSize();
uint32_t metadata_signature_size =
payload_metadata.GetMetadataSignatureSize();
- if (payload_metadata.GetMajorVersion() == kBrilloMajorPayloadVersion) {
- // Write metadata signature size in header.
- uint32_t metadata_signature_size_be =
- htobe32(metadata_signature_blob.size());
- memcpy(payload.data() + manifest_offset,
- &metadata_signature_size_be,
- sizeof(metadata_signature_size_be));
- manifest_offset += sizeof(metadata_signature_size_be);
- // Replace metadata signature.
- payload.erase(payload.begin() + metadata_size,
- payload.begin() + metadata_size + metadata_signature_size);
- payload.insert(payload.begin() + metadata_size,
- metadata_signature_blob.begin(),
- metadata_signature_blob.end());
- metadata_signature_size = metadata_signature_blob.size();
- LOG(INFO) << "Metadata signature size: " << metadata_signature_size;
- }
+ // Write metadata signature size in header.
+ uint32_t metadata_signature_size_be = htobe32(metadata_signature_blob.size());
+ memcpy(payload.data() + manifest_offset,
+ &metadata_signature_size_be,
+ sizeof(metadata_signature_size_be));
+ manifest_offset += sizeof(metadata_signature_size_be);
+ // Replace metadata signature.
+ payload.erase(payload.begin() + metadata_size,
+ payload.begin() + metadata_size + metadata_signature_size);
+ payload.insert(payload.begin() + metadata_size,
+ metadata_signature_blob.begin(),
+ metadata_signature_blob.end());
+ metadata_signature_size = metadata_signature_blob.size();
+ LOG(INFO) << "Metadata signature size: " << metadata_signature_size;
DeltaArchiveManifest manifest;
TEST_AND_RETURN_FALSE(payload_metadata.GetManifest(payload, &manifest));
@@ -138,7 +135,6 @@
PayloadSigner::AddSignatureToManifest(
payload.size() - metadata_size - metadata_signature_size,
signature_blob.size(),
- payload_metadata.GetMajorVersion() == kChromeOSMajorPayloadVersion,
&manifest);
// Updates the payload to include the new manifest.
@@ -209,25 +205,12 @@
void PayloadSigner::AddSignatureToManifest(uint64_t signature_blob_offset,
uint64_t signature_blob_length,
- bool add_dummy_op,
DeltaArchiveManifest* manifest) {
LOG(INFO) << "Making room for signature in file";
manifest->set_signatures_offset(signature_blob_offset);
LOG(INFO) << "set? " << manifest->has_signatures_offset();
manifest->set_signatures_offset(signature_blob_offset);
manifest->set_signatures_size(signature_blob_length);
- // Add a dummy op at the end to appease older clients
- if (add_dummy_op) {
- InstallOperation* dummy_op = manifest->add_kernel_install_operations();
- dummy_op->set_type(InstallOperation::REPLACE);
- dummy_op->set_data_offset(signature_blob_offset);
- dummy_op->set_data_length(signature_blob_length);
- Extent* dummy_extent = dummy_op->add_dst_extents();
- // Tell the dummy op to write this data to a big sparse hole
- dummy_extent->set_start_block(kSparseHole);
- dummy_extent->set_num_blocks(
- utils::DivRoundUp(signature_blob_length, kBlockSize));
- }
}
bool PayloadSigner::VerifySignedPayload(const string& payload_path,
diff --git a/payload_generator/payload_signer.h b/payload_generator/payload_signer.h
index 83ddadc..71f4983 100644
--- a/payload_generator/payload_signer.h
+++ b/payload_generator/payload_signer.h
@@ -39,12 +39,9 @@
static bool VerifySignedPayload(const std::string& payload_path,
const std::string& public_key_path);
- // Adds specified signature offset/length to given |manifest|, also adds a
- // dummy operation that points to a signature blob located at the specified
- // offset/length if |add_dummy_op| is true.
+ // Adds specified signature offset/length to given |manifest|.
static void AddSignatureToManifest(uint64_t signature_blob_offset,
uint64_t signature_blob_length,
- bool add_dummy_op,
DeltaArchiveManifest* manifest);
// Given a raw |hash| and a private key in |private_key_path| calculates the