diff options
author | Luigi Zevola <zevola@google.com> | 2022-03-09 09:47:35 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2022-03-09 09:47:35 +0000 |
commit | 2c347ed00b0d5acce79ded10da32808b532730cc (patch) | |
tree | dd9dde066cec2efa31aaaf505a147dd13916e665 | |
parent | fd8093f397259e22eedb3a71458b3c8e27ae6773 (diff) | |
parent | b226a3b8f3650aab3e53a170e8fab2d5ba1d34b2 (diff) | |
download | erofs-utils-2c347ed00b0d5acce79ded10da32808b532730cc.tar.gz |
Merge "Revert "Remove mkerofsimage.sh."" am: b226a3b8f3
Original change: https://android-review.googlesource.com/c/platform/external/erofs-utils/+/2017586
Change-Id: Id77c1b4fdeea0ebc8446a199925fadda8bf91c26
-rw-r--r-- | Android.bp | 15 | ||||
-rwxr-xr-x | mkerofsimage.sh | 146 |
2 files changed, 161 insertions, 0 deletions
@@ -183,3 +183,18 @@ cc_binary { }, }, } + +sh_binary_host { + name: "mkerofsimage.sh", + src: "mkerofsimage.sh", + required: [ + "img2simg", + "mkfs.erofs", + ], + + target: { + darwin: { + enabled: false, + }, + }, +} diff --git a/mkerofsimage.sh b/mkerofsimage.sh new file mode 100755 index 0000000..c449352 --- /dev/null +++ b/mkerofsimage.sh @@ -0,0 +1,146 @@ +#!/bin/bash +# +# To call this script, make sure mkfs.erofs is somewhere in PATH + +function usage() { +cat<<EOT +Usage: +${0##*/} SRC_DIR OUTPUT_FILE [-s] [-m MOUNT_POINT] [-d PRODUCT_OUT] [-C FS_CONFIG ] [-c FILE_CONTEXTS] [-z COMPRESSOR] [-T TIMESTAMP] [-U UUID] [-B BLOCK_MAP] [-P PCLUSTER_SIZE] [-k CHUNK_SIZE] +EOT +} + +echo "in mkerofsimage.sh PATH=$PATH" + +if [ $# -lt 2 ]; then + usage + exit 1 +fi + +SRC_DIR=$1 +if [ ! -d $SRC_DIR ]; then + echo "Can not find directory $SRC_DIR!" + exit 2 +fi +OUTPUT_FILE=$2 +shift; shift + +SPARSE=false +if [[ "$1" == "-s" ]]; then + SPARSE=true + shift; +fi + +MOUNT_POINT= +if [[ "$1" == "-m" ]]; then + MOUNT_POINT=$2 + shift; shift +fi + +PRODUCT_OUT= +if [[ "$1" == "-d" ]]; then + PRODUCT_OUT=$2 + shift; shift +fi + +FS_CONFIG= +if [[ "$1" == "-C" ]]; then + FS_CONFIG=$2 + shift; shift +fi + +FILE_CONTEXTS= +if [[ "$1" == "-c" ]]; then + FILE_CONTEXTS=$2 + shift; shift +fi + +COMPRESSOR="lz4hc" +if [[ "$1" == "-z" ]]; then + COMPRESSOR=$2 + shift; shift +fi + +if [[ "$COMPRESSOR" == "none" ]]; then + COMPRESS_ARGS= +else + COMPRESS_ARGS="-z ${COMPRESSOR}" +fi + +TIMESTAMP= +if [[ "$1" == "-T" ]]; then + TIMESTAMP=$2 + shift; shift +fi + +UUID= +if [[ "$1" == "-U" ]]; then + UUID=$2 + shift; shift +fi + +BLOCK_MAP= +if [[ "$1" == "-B" ]]; then + BLOCK_MAP=$2 + shift; shift; +fi + +PCLUSTER_SIZE= +if [[ "$1" == "-P" ]]; then + PCLUSTER_SIZE=$2 + shift; shift; +fi + +CHUNK_SIZE= +if [[ "$1" == "-k" ]]; then + CHUNK_SIZE=$2 + shift; shift; +fi + +OPT="" +if [ -n "$MOUNT_POINT" ]; then + OPT="$OPT --mount-point $MOUNT_POINT" +fi +if [ -n "$PRODUCT_OUT" ]; then + OPT="$OPT --product-out $PRODUCT_OUT" +fi +if [ -n "$FS_CONFIG" ]; then + OPT="$OPT --fs-config-file $FS_CONFIG" +fi +if [ -n "$FILE_CONTEXTS" ]; then + OPT="$OPT --file-contexts $FILE_CONTEXTS" +fi +if [ -n "$TIMESTAMP" ]; then + OPT="$OPT -T $TIMESTAMP" +fi +if [ -n "$UUID" ]; then + OPT="$OPT -U $UUID" +fi +if [ -n "$BLOCK_MAP" ]; then + OPT="$OPT --block-list-file=$BLOCK_MAP" +fi +if [ -n "$PCLUSTER_SIZE" ]; then + OPT="$OPT -C${PCLUSTER_SIZE}" +fi +if [ -n "$CHUNK_SIZE" ]; then + OPT="$OPT --chunksize=$CHUNK_SIZE" +fi + +MAKE_EROFS_CMD="mkfs.erofs $COMPRESS_ARGS $OPT $OUTPUT_FILE $SRC_DIR" +echo $MAKE_EROFS_CMD +$MAKE_EROFS_CMD + +if [ $? -ne 0 ]; then + exit 4 +fi + +fsck.erofs --extract $OUTPUT_FILE + +SPARSE_SUFFIX=".sparse" +if [ "$SPARSE" = true ]; then + img2simg $OUTPUT_FILE $OUTPUT_FILE$SPARSE_SUFFIX + if [ $? -ne 0 ]; then + exit 4 + fi + mv $OUTPUT_FILE$SPARSE_SUFFIX $OUTPUT_FILE +fi + |