update_engine: Change imgdiff/imgpatch to a dummy puffdiff/puffpatch
Currently we never create imgdiff operation as it was never
activated. In near future we will be adding puffdiff and puffpatch
operations which replaces the imgdiff. This CL does not actually adds
puffdiff, but adds a placeholder for it.
BUG=none
TEST=cros_workon_make --board=amd64-generic --test update_engine
Change-Id: I6453048acb65c052354a1658f0c6fd41ad33e242
Reviewed-on: https://chromium-review.googlesource.com/602733
Commit-Ready: Amin Hassani <ahassani@chromium.org>
Tested-by: Amin Hassani <ahassani@chromium.org>
Reviewed-by: Ben Chan <benchan@chromium.org>
Reviewed-by: Sen Jiang <senj@chromium.org>
diff --git a/Android.mk b/Android.mk
index e5379f3..bf9b678 100644
--- a/Android.mk
+++ b/Android.mk
@@ -705,8 +705,7 @@
include $(CLEAR_VARS)
LOCAL_MODULE := delta_generator
LOCAL_REQUIRED_MODULES := \
- bsdiff \
- imgdiff
+ bsdiff
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_CPP_EXTENSION := .cc
LOCAL_CLANG := true
diff --git a/payload_consumer/delta_performer.cc b/payload_consumer/delta_performer.cc
index a21a9b0..5377ee3 100644
--- a/payload_consumer/delta_performer.cc
+++ b/payload_consumer/delta_performer.cc
@@ -603,7 +603,6 @@
// and stores an action exit code in |error|.
bool DeltaPerformer::Write(const void* bytes, size_t count, ErrorCode *error) {
*error = ErrorCode::kSuccess;
-
const char* c_bytes = reinterpret_cast<const char*>(bytes);
// Update the total byte downloaded count and the progress logs.
@@ -758,8 +757,8 @@
op_result = PerformSourceBsdiffOperation(op, error);
OP_DURATION_HISTOGRAM("SOURCE_BSDIFF", op_start_time);
break;
- case InstallOperation::IMGDIFF:
- // TODO(deymo): Replace with PUFFIN operation.
+ case InstallOperation::PUFFDIFF:
+ // TODO(ahassani): Later add PerformPuffdiffOperation(op, error);
op_result = false;
break;
default:
diff --git a/payload_consumer/payload_constants.cc b/payload_consumer/payload_constants.cc
index 4c11d7a..7d396b6 100644
--- a/payload_consumer/payload_constants.cc
+++ b/payload_consumer/payload_constants.cc
@@ -25,7 +25,7 @@
const uint32_t kInPlaceMinorPayloadVersion = 1;
const uint32_t kSourceMinorPayloadVersion = 2;
const uint32_t kOpSrcHashMinorPayloadVersion = 3;
-const uint32_t kImgdiffMinorPayloadVersion = 4;
+const uint32_t kPuffdiffMinorPayloadVersion = 4;
const char kLegacyPartitionNameKernel[] = "boot";
const char kLegacyPartitionNameRoot[] = "system";
@@ -52,8 +52,8 @@
return "DISCARD";
case InstallOperation::REPLACE_XZ:
return "REPLACE_XZ";
- case InstallOperation::IMGDIFF:
- return "IMGDIFF";
+ case InstallOperation::PUFFDIFF:
+ return "PUFFDIFF";
}
return "<unknown_op>";
}
diff --git a/payload_consumer/payload_constants.h b/payload_consumer/payload_constants.h
index 76d740f..1e2e810 100644
--- a/payload_consumer/payload_constants.h
+++ b/payload_consumer/payload_constants.h
@@ -43,9 +43,8 @@
// The minor version that allows per-operation source hash.
extern const uint32_t kOpSrcHashMinorPayloadVersion;
-// The minor version that allows IMGDIFF operation.
-extern const uint32_t kImgdiffMinorPayloadVersion;
-
+// The minor version that allows PUFFDIFF operation.
+extern const uint32_t kPuffdiffMinorPayloadVersion;
// The kernel and rootfs partition names used by the BootControlInterface when
// handling update payloads with a major version 1. The names of the updated
diff --git a/payload_generator/delta_diff_utils.cc b/payload_generator/delta_diff_utils.cc
index 4e70005..856fecf 100644
--- a/payload_generator/delta_diff_utils.cc
+++ b/payload_generator/delta_diff_utils.cc
@@ -53,7 +53,6 @@
namespace {
const char* const kBsdiffPath = "bsdiff";
-const char* const kImgdiffPath = "imgdiff";
// The maximum destination size allowed for bsdiff. In general, bsdiff should
// work for arbitrary big files, but the payload generation and payload
@@ -62,10 +61,10 @@
// Chrome binary in ASan builders.
const uint64_t kMaxBsdiffDestinationSize = 200 * 1024 * 1024; // bytes
-// The maximum destination size allowed for imgdiff. In general, imgdiff should
-// work for arbitrary big files, but the payload application is quite memory
-// intensive, so we limit these operations to 50 MiB.
-const uint64_t kMaxImgdiffDestinationSize = 50 * 1024 * 1024; // bytes
+// The maximum destination size allowed for puffdiff. In general, puffdiff
+// should work for arbitrary big files, but the payload application is quite
+// memory intensive, so we limit these operations to 50 MiB.
+const uint64_t kMaxPuffdiffDestinationSize = 50 * 1024 * 1024; // bytes
// Process a range of blocks from |range_start| to |range_end| in the extent at
// position |*idx_p| of |extents|. If |do_remove| is true, this range will be
@@ -162,15 +161,6 @@
return removed_bytes;
}
-// Returns true if the given blob |data| contains gzip header magic.
-bool ContainsGZip(const brillo::Blob& data) {
- const uint8_t kGZipMagic[] = {0x1f, 0x8b, 0x08, 0x00};
- return std::search(data.begin(),
- data.end(),
- std::begin(kGZipMagic),
- std::end(kGZipMagic)) != data.end();
-}
-
} // namespace
namespace diff_utils {
@@ -569,7 +559,7 @@
uint64_t blocks_to_read = BlocksInExtents(old_extents);
uint64_t blocks_to_write = BlocksInExtents(new_extents);
- // Disable bsdiff and imgdiff when the data is too big.
+ // Disable bsdiff, and puffdiff when the data is too big.
bool bsdiff_allowed =
version.OperationAllowed(InstallOperation::SOURCE_BSDIFF) ||
version.OperationAllowed(InstallOperation::BSDIFF);
@@ -580,12 +570,12 @@
bsdiff_allowed = false;
}
- bool imgdiff_allowed = version.OperationAllowed(InstallOperation::IMGDIFF);
- if (imgdiff_allowed &&
- blocks_to_read * kBlockSize > kMaxImgdiffDestinationSize) {
- LOG(INFO) << "imgdiff blacklisted, data too big: "
+ bool puffdiff_allowed = version.OperationAllowed(InstallOperation::PUFFDIFF);
+ if (puffdiff_allowed &&
+ blocks_to_read * kBlockSize > kMaxPuffdiffDestinationSize) {
+ LOG(INFO) << "puffdiff blacklisted, data too big: "
<< blocks_to_read * kBlockSize << " bytes";
- imgdiff_allowed = false;
+ puffdiff_allowed = false;
}
// Make copies of the extents so we can modify them.
@@ -623,7 +613,7 @@
? InstallOperation::SOURCE_COPY
: InstallOperation::MOVE);
data_blob = brillo::Blob();
- } else if (bsdiff_allowed || imgdiff_allowed) {
+ } else if (bsdiff_allowed || puffdiff_allowed) {
// If the source file is considered bsdiff safe (no bsdiff bugs
// triggered), see if BSDIFF encoding is smaller.
base::FilePath old_chunk;
@@ -650,25 +640,9 @@
data_blob = std::move(bsdiff_delta);
}
}
- if (imgdiff_allowed && ContainsGZip(old_data) && ContainsGZip(new_data)) {
- brillo::Blob imgdiff_delta;
- // Imgdiff might fail in some cases, only use the result if it succeed,
- // otherwise print the extents to analyze.
- if (DiffFiles(kImgdiffPath,
- old_chunk.value(),
- new_chunk.value(),
- &imgdiff_delta) &&
- imgdiff_delta.size() > 0) {
- if (imgdiff_delta.size() < data_blob.size()) {
- operation.set_type(InstallOperation::IMGDIFF);
- data_blob = std::move(imgdiff_delta);
- }
- } else {
- LOG(ERROR) << "Imgdiff failed with source extents: "
- << ExtentsToString(src_extents)
- << ", destination extents: "
- << ExtentsToString(dst_extents);
- }
+ if (puffdiff_allowed) {
+ LOG(ERROR) << "puffdiff is not supported yet!";
+ return false;
}
}
}
@@ -695,11 +669,10 @@
*out_data = std::move(data_blob);
*out_op = operation;
-
return true;
}
-// Runs the bsdiff or imgdiff tool in |diff_path| on two files and returns the
+// Runs the bsdiff tool in |diff_path| on two files and returns the
// resulting delta in |out|. Returns true on success.
bool DiffFiles(const string& diff_path,
const string& old_file,
diff --git a/payload_generator/delta_diff_utils.h b/payload_generator/delta_diff_utils.h
index 7254bca..9c7481b 100644
--- a/payload_generator/delta_diff_utils.h
+++ b/payload_generator/delta_diff_utils.h
@@ -93,7 +93,7 @@
// fills in |out_op|. If there's no change in old and new files, it creates a
// MOVE or SOURCE_COPY operation. If there is a change, the smallest of the
// operations allowed in the given |version| (REPLACE, REPLACE_BZ, BSDIFF,
-// SOURCE_BSDIFF or IMGDIFF) wins.
+// SOURCE_BSDIFF, or PUFFDIFF) wins.
// |new_extents| must not be empty. Returns true on success.
bool ReadExtentsToDiff(const std::string& old_part,
const std::string& new_part,
@@ -103,7 +103,7 @@
brillo::Blob* out_data,
InstallOperation* out_op);
-// Runs the bsdiff or imgdiff tool in |diff_path| on two files and returns the
+// Runs the bsdiff tool in |diff_path| on two files and returns the
// resulting delta in |out|. Returns true on success.
bool DiffFiles(const std::string& diff_path,
const std::string& old_file,
diff --git a/payload_generator/delta_diff_utils_unittest.cc b/payload_generator/delta_diff_utils_unittest.cc
index 232eab7..bb83942 100644
--- a/payload_generator/delta_diff_utils_unittest.cc
+++ b/payload_generator/delta_diff_utils_unittest.cc
@@ -131,7 +131,6 @@
uint32_t minor_version) {
BlobFileWriter blob_file(blob_fd_, &blob_size_);
PayloadVersion version(kChromeOSMajorPayloadVersion, minor_version);
- version.imgdiff_allowed = true; // Assume no fingerprint mismatch.
return diff_utils::DeltaMovedAndZeroBlocks(&aops_,
old_part_.path,
new_part_.path,
diff --git a/payload_generator/payload_generation_config.cc b/payload_generator/payload_generation_config.cc
index e85d693..e2fec21 100644
--- a/payload_generator/payload_generation_config.cc
+++ b/payload_generator/payload_generation_config.cc
@@ -128,7 +128,7 @@
minor == kInPlaceMinorPayloadVersion ||
minor == kSourceMinorPayloadVersion ||
minor == kOpSrcHashMinorPayloadVersion ||
- minor == kImgdiffMinorPayloadVersion);
+ minor == kPuffdiffMinorPayloadVersion);
return true;
}
@@ -151,7 +151,7 @@
// The implementation of these operations had a bug in earlier versions
// that prevents them from being used in any payload. We will enable
// them for delta payloads for now.
- return minor >= kImgdiffMinorPayloadVersion;
+ return minor >= kPuffdiffMinorPayloadVersion;
// Delta operations:
case InstallOperation::MOVE:
@@ -165,8 +165,8 @@
case InstallOperation::SOURCE_BSDIFF:
return minor >= kSourceMinorPayloadVersion;
- case InstallOperation::IMGDIFF:
- return minor >= kImgdiffMinorPayloadVersion && imgdiff_allowed;
+ case InstallOperation::PUFFDIFF:
+ return minor >= kPuffdiffMinorPayloadVersion;
}
return false;
}
diff --git a/payload_generator/payload_generation_config.h b/payload_generator/payload_generation_config.h
index 8617d14..ca6fb04 100644
--- a/payload_generator/payload_generation_config.h
+++ b/payload_generator/payload_generation_config.h
@@ -137,10 +137,6 @@
// The minor version of the payload.
uint32_t minor;
-
- // Wheter the IMGDIFF operation is allowed based on the available compressor
- // in the delta_generator and the one supported by the target.
- bool imgdiff_allowed = false;
};
// The PayloadGenerationConfig struct encapsulates all the configuration to
diff --git a/scripts/update_payload/applier.py b/scripts/update_payload/applier.py
index e3708c7..fa419bd 100644
--- a/scripts/update_payload/applier.py
+++ b/scripts/update_payload/applier.py
@@ -195,14 +195,14 @@
"""
def __init__(self, payload, bsdiff_in_place=True, bspatch_path=None,
- imgpatch_path=None, truncate_to_expected_size=True):
+ puffpatch_path=None, truncate_to_expected_size=True):
"""Initialize the applier.
Args:
payload: the payload object to check
bsdiff_in_place: whether to perform BSDIFF operation in-place (optional)
bspatch_path: path to the bspatch binary (optional)
- imgpatch_path: path to the imgpatch binary (optional)
+ puffpatch_path: path to the puffpatch binary (optional)
truncate_to_expected_size: whether to truncate the resulting partitions
to their expected sizes, as specified in the
payload (optional)
@@ -213,7 +213,7 @@
self.minor_version = payload.manifest.minor_version
self.bsdiff_in_place = bsdiff_in_place
self.bspatch_path = bspatch_path or 'bspatch'
- self.imgpatch_path = imgpatch_path or 'imgpatch'
+ self.puffpatch_path = puffpatch_path or 'imgpatch'
self.truncate_to_expected_size = truncate_to_expected_size
def _ApplyReplaceOperation(self, op, op_name, out_data, part_file, part_size):
@@ -347,7 +347,7 @@
def _ApplyDiffOperation(self, op, op_name, patch_data, old_part_file,
new_part_file):
- """Applies a SOURCE_BSDIFF or IMGDIFF operation.
+ """Applies a SOURCE_BSDIFF or PUFFDIFF operation.
Args:
op: the operation object
@@ -373,7 +373,7 @@
if (hasattr(new_part_file, 'fileno') and
((not old_part_file) or hasattr(old_part_file, 'fileno')) and
- op.type != common.OpType.IMGDIFF):
+ op.type != common.OpType.PUFFDIFF):
# Construct input and output extents argument for bspatch.
in_extents_arg, _, _ = _ExtentsToBspatchArg(
op.src_extents, block_size, '%s.src_extents' % op_name,
@@ -411,8 +411,8 @@
# Invoke bspatch.
patch_cmd = [self.bspatch_path, in_file_name, out_file_name,
patch_file_name]
- if op.type == common.OpType.IMGDIFF:
- patch_cmd[0] = self.imgpatch_path
+ if op.type == common.OpType.PUFFDIFF:
+ patch_cmd[0] = self.puffpatch_path
subprocess.check_call(patch_cmd)
# Read output.
@@ -468,7 +468,7 @@
elif op.type == common.OpType.SOURCE_COPY:
self._ApplySourceCopyOperation(op, op_name, old_part_file,
new_part_file)
- elif op.type in (common.OpType.SOURCE_BSDIFF, common.OpType.IMGDIFF):
+ elif op.type in (common.OpType.SOURCE_BSDIFF, common.OpType.PUFFDIFF):
self._ApplyDiffOperation(op, op_name, data, old_part_file,
new_part_file)
else:
@@ -504,7 +504,7 @@
shutil.copyfile(old_part_file_name, new_part_file_name)
elif (self.minor_version == common.SOURCE_MINOR_PAYLOAD_VERSION or
self.minor_version == common.OPSRCHASH_MINOR_PAYLOAD_VERSION or
- self.minor_version == common.IMGDIFF_MINOR_PAYLOAD_VERSION):
+ self.minor_version == common.PUFFDIFF_MINOR_PAYLOAD_VERSION):
# In minor version >= 2, we don't want to copy the partitions, so
# instead just make the new partition file.
open(new_part_file_name, 'w').close()
diff --git a/scripts/update_payload/checker.py b/scripts/update_payload/checker.py
index e13ea13..3144395 100644
--- a/scripts/update_payload/checker.py
+++ b/scripts/update_payload/checker.py
@@ -816,7 +816,7 @@
raise error.PayloadError('%s: excess dst blocks.' % op_name)
def _CheckAnyDiffOperation(self, data_length, total_dst_blocks, op_name):
- """Specific checks for BSDIFF, SOURCE_BSDIFF and IMGDIFF operations.
+ """Specific checks for BSDIFF, SOURCE_BSDIFF and PUFFDIFF operations.
Args:
data_length: The length of the data blob associated with the operation.
@@ -981,7 +981,7 @@
elif op.type == common.OpType.SOURCE_BSDIFF and self.minor_version >= 2:
self._CheckAnyDiffOperation(data_length, total_dst_blocks, op_name)
self._CheckAnySourceOperation(op, total_src_blocks, op_name)
- elif op.type == common.OpType.IMGDIFF and self.minor_version >= 4:
+ elif op.type == common.OpType.PUFFDIFF and self.minor_version >= 4:
self._CheckAnyDiffOperation(data_length, total_dst_blocks, op_name)
self._CheckAnySourceOperation(op, total_src_blocks, op_name)
else:
@@ -1041,7 +1041,7 @@
common.OpType.BSDIFF: 0,
common.OpType.SOURCE_COPY: 0,
common.OpType.SOURCE_BSDIFF: 0,
- common.OpType.IMGDIFF: 0,
+ common.OpType.PUFFDIFF: 0,
}
# Total blob sizes for each operation type.
op_blob_totals = {
@@ -1051,7 +1051,7 @@
common.OpType.BSDIFF: 0,
# SOURCE_COPY operations don't have blobs.
common.OpType.SOURCE_BSDIFF: 0,
- common.OpType.IMGDIFF: 0,
+ common.OpType.PUFFDIFF: 0,
}
# Counts of hashed vs unhashed operations.
blob_hash_counts = {
diff --git a/scripts/update_payload/checker_unittest.py b/scripts/update_payload/checker_unittest.py
index 56b1a30..a0a5056 100755
--- a/scripts/update_payload/checker_unittest.py
+++ b/scripts/update_payload/checker_unittest.py
@@ -38,7 +38,7 @@
'ZERO': common.OpType.ZERO,
'DISCARD': common.OpType.DISCARD,
'REPLACE_XZ': common.OpType.REPLACE_XZ,
- 'IMGDIFF': common.OpType.IMGDIFF,
+ 'PUFFDIFF': common.OpType.PUFFDIFF,
}
return op_name_to_type[op_name]
diff --git a/scripts/update_payload/common.py b/scripts/update_payload/common.py
index 678fc5d..bab8a4f 100644
--- a/scripts/update_payload/common.py
+++ b/scripts/update_payload/common.py
@@ -27,7 +27,7 @@
INPLACE_MINOR_PAYLOAD_VERSION = 1
SOURCE_MINOR_PAYLOAD_VERSION = 2
OPSRCHASH_MINOR_PAYLOAD_VERSION = 3
-IMGDIFF_MINOR_PAYLOAD_VERSION = 4
+PUFFDIFF_MINOR_PAYLOAD_VERSION = 4
#
# Payload operation types.
@@ -45,9 +45,9 @@
ZERO = _CLASS.ZERO
DISCARD = _CLASS.DISCARD
REPLACE_XZ = _CLASS.REPLACE_XZ
- IMGDIFF = _CLASS.IMGDIFF
+ PUFFDIFF = _CLASS.PUFFDIFF
ALL = (REPLACE, REPLACE_BZ, MOVE, BSDIFF, SOURCE_COPY, SOURCE_BSDIFF, ZERO,
- DISCARD, REPLACE_XZ, IMGDIFF)
+ DISCARD, REPLACE_XZ, PUFFDIFF)
NAMES = {
REPLACE: 'REPLACE',
REPLACE_BZ: 'REPLACE_BZ',
@@ -58,7 +58,7 @@
ZERO: 'ZERO',
DISCARD: 'DISCARD',
REPLACE_XZ: 'REPLACE_XZ',
- IMGDIFF: 'IMGDIFF',
+ PUFFDIFF: 'PUFFDIFF',
}
def __init__(self):
diff --git a/scripts/update_payload/update_metadata_pb2.py b/scripts/update_payload/update_metadata_pb2.py
index 46c475e..8cf87e3 100644
--- a/scripts/update_payload/update_metadata_pb2.py
+++ b/scripts/update_payload/update_metadata_pb2.py
@@ -13,7 +13,7 @@
DESCRIPTOR = _descriptor.FileDescriptor(
name='update_metadata.proto',
package='chromeos_update_engine',
- serialized_pb='\n\x15update_metadata.proto\x12\x16\x63hromeos_update_engine\"1\n\x06\x45xtent\x12\x13\n\x0bstart_block\x18\x01 \x01(\x04\x12\x12\n\nnum_blocks\x18\x02 \x01(\x04\"z\n\nSignatures\x12@\n\nsignatures\x18\x01 \x03(\x0b\x32,.chromeos_update_engine.Signatures.Signature\x1a*\n\tSignature\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\"+\n\rPartitionInfo\x12\x0c\n\x04size\x18\x01 \x01(\x04\x12\x0c\n\x04hash\x18\x02 \x01(\x0c\"w\n\tImageInfo\x12\r\n\x05\x62oard\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\x0f\n\x07\x63hannel\x18\x03 \x01(\t\x12\x0f\n\x07version\x18\x04 \x01(\t\x12\x15\n\rbuild_channel\x18\x05 \x01(\t\x12\x15\n\rbuild_version\x18\x06 \x01(\t\"\xd2\x03\n\x10InstallOperation\x12;\n\x04type\x18\x01 \x02(\x0e\x32-.chromeos_update_engine.InstallOperation.Type\x12\x13\n\x0b\x64\x61ta_offset\x18\x02 \x01(\r\x12\x13\n\x0b\x64\x61ta_length\x18\x03 \x01(\r\x12\x33\n\x0bsrc_extents\x18\x04 \x03(\x0b\x32\x1e.chromeos_update_engine.Extent\x12\x12\n\nsrc_length\x18\x05 \x01(\x04\x12\x33\n\x0b\x64st_extents\x18\x06 \x03(\x0b\x32\x1e.chromeos_update_engine.Extent\x12\x12\n\ndst_length\x18\x07 \x01(\x04\x12\x18\n\x10\x64\x61ta_sha256_hash\x18\x08 \x01(\x0c\x12\x17\n\x0fsrc_sha256_hash\x18\t \x01(\x0c\"\x91\x01\n\x04Type\x12\x0b\n\x07REPLACE\x10\x00\x12\x0e\n\nREPLACE_BZ\x10\x01\x12\x08\n\x04MOVE\x10\x02\x12\n\n\x06\x42SDIFF\x10\x03\x12\x0f\n\x0bSOURCE_COPY\x10\x04\x12\x11\n\rSOURCE_BSDIFF\x10\x05\x12\x08\n\x04ZERO\x10\x06\x12\x0b\n\x07\x44ISCARD\x10\x07\x12\x0e\n\nREPLACE_XZ\x10\x08\x12\x0b\n\x07IMGDIFF\x10\t\"\x88\x03\n\x0fPartitionUpdate\x12\x16\n\x0epartition_name\x18\x01 \x02(\t\x12\x17\n\x0frun_postinstall\x18\x02 \x01(\x08\x12\x18\n\x10postinstall_path\x18\x03 \x01(\t\x12\x17\n\x0f\x66ilesystem_type\x18\x04 \x01(\t\x12M\n\x17new_partition_signature\x18\x05 \x03(\x0b\x32,.chromeos_update_engine.Signatures.Signature\x12\x41\n\x12old_partition_info\x18\x06 \x01(\x0b\x32%.chromeos_update_engine.PartitionInfo\x12\x41\n\x12new_partition_info\x18\x07 \x01(\x0b\x32%.chromeos_update_engine.PartitionInfo\x12<\n\noperations\x18\x08 \x03(\x0b\x32(.chromeos_update_engine.InstallOperation\"\xc4\x05\n\x14\x44\x65ltaArchiveManifest\x12\x44\n\x12install_operations\x18\x01 \x03(\x0b\x32(.chromeos_update_engine.InstallOperation\x12K\n\x19kernel_install_operations\x18\x02 \x03(\x0b\x32(.chromeos_update_engine.InstallOperation\x12\x18\n\nblock_size\x18\x03 \x01(\r:\x04\x34\x30\x39\x36\x12\x19\n\x11signatures_offset\x18\x04 \x01(\x04\x12\x17\n\x0fsignatures_size\x18\x05 \x01(\x04\x12>\n\x0fold_kernel_info\x18\x06 \x01(\x0b\x32%.chromeos_update_engine.PartitionInfo\x12>\n\x0fnew_kernel_info\x18\x07 \x01(\x0b\x32%.chromeos_update_engine.PartitionInfo\x12>\n\x0fold_rootfs_info\x18\x08 \x01(\x0b\x32%.chromeos_update_engine.PartitionInfo\x12>\n\x0fnew_rootfs_info\x18\t \x01(\x0b\x32%.chromeos_update_engine.PartitionInfo\x12\x39\n\x0eold_image_info\x18\n \x01(\x0b\x32!.chromeos_update_engine.ImageInfo\x12\x39\n\x0enew_image_info\x18\x0b \x01(\x0b\x32!.chromeos_update_engine.ImageInfo\x12\x18\n\rminor_version\x18\x0c \x01(\r:\x01\x30\x12;\n\npartitions\x18\r \x03(\x0b\x32\'.chromeos_update_engine.PartitionUpdateB\x02H\x03')
+ serialized_pb='\n\x15update_metadata.proto\x12\x16\x63hromeos_update_engine\"1\n\x06\x45xtent\x12\x13\n\x0bstart_block\x18\x01 \x01(\x04\x12\x12\n\nnum_blocks\x18\x02 \x01(\x04\"z\n\nSignatures\x12@\n\nsignatures\x18\x01 \x03(\x0b\x32,.chromeos_update_engine.Signatures.Signature\x1a*\n\tSignature\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\"+\n\rPartitionInfo\x12\x0c\n\x04size\x18\x01 \x01(\x04\x12\x0c\n\x04hash\x18\x02 \x01(\x0c\"w\n\tImageInfo\x12\r\n\x05\x62oard\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\x0f\n\x07\x63hannel\x18\x03 \x01(\t\x12\x0f\n\x07version\x18\x04 \x01(\t\x12\x15\n\rbuild_channel\x18\x05 \x01(\t\x12\x15\n\rbuild_version\x18\x06 \x01(\t\"\xd3\x03\n\x10InstallOperation\x12;\n\x04type\x18\x01 \x02(\x0e\x32-.chromeos_update_engine.InstallOperation.Type\x12\x13\n\x0b\x64\x61ta_offset\x18\x02 \x01(\r\x12\x13\n\x0b\x64\x61ta_length\x18\x03 \x01(\r\x12\x33\n\x0bsrc_extents\x18\x04 \x03(\x0b\x32\x1e.chromeos_update_engine.Extent\x12\x12\n\nsrc_length\x18\x05 \x01(\x04\x12\x33\n\x0b\x64st_extents\x18\x06 \x03(\x0b\x32\x1e.chromeos_update_engine.Extent\x12\x12\n\ndst_length\x18\x07 \x01(\x04\x12\x18\n\x10\x64\x61ta_sha256_hash\x18\x08 \x01(\x0c\x12\x17\n\x0fsrc_sha256_hash\x18\t \x01(\x0c\"\x92\x01\n\x04Type\x12\x0b\n\x07REPLACE\x10\x00\x12\x0e\n\nREPLACE_BZ\x10\x01\x12\x08\n\x04MOVE\x10\x02\x12\n\n\x06\x42SDIFF\x10\x03\x12\x0f\n\x0bSOURCE_COPY\x10\x04\x12\x11\n\rSOURCE_BSDIFF\x10\x05\x12\x08\n\x04ZERO\x10\x06\x12\x0b\n\x07\x44ISCARD\x10\x07\x12\x0e\n\nREPLACE_XZ\x10\x08\x12\x0c\n\x08PUFFDIFF\x10\t\"\xa6\x03\n\x0fPartitionUpdate\x12\x16\n\x0epartition_name\x18\x01 \x02(\t\x12\x17\n\x0frun_postinstall\x18\x02 \x01(\x08\x12\x18\n\x10postinstall_path\x18\x03 \x01(\t\x12\x17\n\x0f\x66ilesystem_type\x18\x04 \x01(\t\x12M\n\x17new_partition_signature\x18\x05 \x03(\x0b\x32,.chromeos_update_engine.Signatures.Signature\x12\x41\n\x12old_partition_info\x18\x06 \x01(\x0b\x32%.chromeos_update_engine.PartitionInfo\x12\x41\n\x12new_partition_info\x18\x07 \x01(\x0b\x32%.chromeos_update_engine.PartitionInfo\x12<\n\noperations\x18\x08 \x03(\x0b\x32(.chromeos_update_engine.InstallOperation\x12\x1c\n\x14postinstall_optional\x18\t \x01(\x08\"\xc4\x05\n\x14\x44\x65ltaArchiveManifest\x12\x44\n\x12install_operations\x18\x01 \x03(\x0b\x32(.chromeos_update_engine.InstallOperation\x12K\n\x19kernel_install_operations\x18\x02 \x03(\x0b\x32(.chromeos_update_engine.InstallOperation\x12\x18\n\nblock_size\x18\x03 \x01(\r:\x04\x34\x30\x39\x36\x12\x19\n\x11signatures_offset\x18\x04 \x01(\x04\x12\x17\n\x0fsignatures_size\x18\x05 \x01(\x04\x12>\n\x0fold_kernel_info\x18\x06 \x01(\x0b\x32%.chromeos_update_engine.PartitionInfo\x12>\n\x0fnew_kernel_info\x18\x07 \x01(\x0b\x32%.chromeos_update_engine.PartitionInfo\x12>\n\x0fold_rootfs_info\x18\x08 \x01(\x0b\x32%.chromeos_update_engine.PartitionInfo\x12>\n\x0fnew_rootfs_info\x18\t \x01(\x0b\x32%.chromeos_update_engine.PartitionInfo\x12\x39\n\x0eold_image_info\x18\n \x01(\x0b\x32!.chromeos_update_engine.ImageInfo\x12\x39\n\x0enew_image_info\x18\x0b \x01(\x0b\x32!.chromeos_update_engine.ImageInfo\x12\x18\n\rminor_version\x18\x0c \x01(\r:\x01\x30\x12;\n\npartitions\x18\r \x03(\x0b\x32\'.chromeos_update_engine.PartitionUpdateB\x02H\x03')
@@ -60,14 +60,14 @@
options=None,
type=None),
_descriptor.EnumValueDescriptor(
- name='IMGDIFF', index=9, number=9,
+ name='PUFFDIFF', index=9, number=9,
options=None,
type=None),
],
containing_type=None,
options=None,
serialized_start=712,
- serialized_end=857,
+ serialized_end=858,
)
@@ -347,7 +347,7 @@
is_extendable=False,
extension_ranges=[],
serialized_start=391,
- serialized_end=857,
+ serialized_end=858,
)
@@ -414,6 +414,13 @@
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
+ _descriptor.FieldDescriptor(
+ name='postinstall_optional', full_name='chromeos_update_engine.PartitionUpdate.postinstall_optional', index=8,
+ number=9, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ options=None),
],
extensions=[
],
@@ -423,8 +430,8 @@
options=None,
is_extendable=False,
extension_ranges=[],
- serialized_start=860,
- serialized_end=1252,
+ serialized_start=861,
+ serialized_end=1283,
)
@@ -535,8 +542,8 @@
options=None,
is_extendable=False,
extension_ranges=[],
- serialized_start=1255,
- serialized_end=1963,
+ serialized_start=1286,
+ serialized_end=1994,
)
_SIGNATURES_SIGNATURE.containing_type = _SIGNATURES;
diff --git a/update_metadata.proto b/update_metadata.proto
index f86cd8d..1120bd1 100644
--- a/update_metadata.proto
+++ b/update_metadata.proto
@@ -166,7 +166,7 @@
REPLACE_XZ = 8; // Replace destination extents w/ attached xz data.
// On minor version 4 or newer, these operations are supported:
- IMGDIFF = 9; // The data is in imgdiff format.
+ PUFFDIFF = 9; // The data is in puffdiff format.
}
required Type type = 1;
// The offset into the delta file (after the protobuf)