On Fri, Aug 5, 2022 at 2:50 PM Sean Anderson <sean.anderson@...> wrote:
On 5/16/22 12:52 PM, Sean Anderson wrote:
If the source image's size is not aligned to the sparse image's block size, then conversion will fail with
img2simg: libsparse/sparse.cpp:133: int write_all_blocks(sparse_file*, output_file*): Assertion `pad >= 0' failed.
This is a bug in img2simg, but an easy way to work around it is to pad the source image ourselves. The default block size of 4096 matches img2simg's default block size.
Signed-off-by: Sean Anderson <sean.anderson@...> ---
+# This sets the granularity of the sparse image conversion. Chunk sizes will be +# specified in units of this value. Setting this value smaller than the +# underlying image's block size will not result in any further space saving. +# However, there is no loss in correctness if this value is larger or smaller +# than optimal. This value should be a power of two. +SPARSE_BLOCK_SIZE ??= "4096" + +convert_sparse() { + truncate --no-create --size=%${SPARSE_BLOCK_SIZE} "$1" + img2simg "$1" "$1.sparse" ${SPARSE_BLOCK_SIZE} +} + CONVERSIONTYPES += "sparse" -CONVERSION_CMD:sparse = " \ - img2simg "${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}" \ - "${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.sparse" \ -" +CONVERSION_CMD:sparse = "convert_sparse '${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}'" CONVERSION_DEPENDS_sparse = "android-tools-native"
ping?
Thanks for reminder, Can you rebase it on latest master-next and resend please ?