OSDN Git Service

build_verity_metadata: Support --signer_args argument.
[android-x86/system-extras.git] / squashfs_utils / mksquashfsimage.sh
1 #!/bin/bash
2 #
3 # To call this script, make sure mksquashfs is somewhere in PATH
4
5 function usage() {
6 cat<<EOT
7 Usage:
8 ${0##*/} SRC_DIR OUTPUT_FILE [-s] [-m MOUNT_POINT] [-d PRODUCT_OUT] [-C FS_CONFIG ] [-c FILE_CONTEXTS] [-B BLOCK_MAP_FILE] [-b BLOCK_SIZE] [-z COMPRESSOR] [-zo COMPRESSOR_OPT] [-t COMPRESS_THRESHOLD] [-a]
9 EOT
10 }
11
12 echo "in mksquashfsimage.sh PATH=$PATH"
13
14 if [ $# -lt 2 ]; then
15     usage
16     exit 1
17 fi
18
19 SRC_DIR=$1
20 if [ ! -d $SRC_DIR ]; then
21   echo "Can not find directory $SRC_DIR!"
22   exit 2
23 fi
24 OUTPUT_FILE=$2
25 shift; shift
26
27 SPARSE=false
28 if [[ "$1" == "-s" ]]; then
29     SPARSE=true
30     shift;
31 fi
32
33 MOUNT_POINT=
34 if [[ "$1" == "-m" ]]; then
35     MOUNT_POINT=$2
36     shift; shift
37 fi
38
39 PRODUCT_OUT=
40 if [[ "$1" == "-d" ]]; then
41     PRODUCT_OUT=$2
42     shift; shift
43 fi
44
45 FS_CONFIG=
46 if [[ "$1" == "-C" ]]; then
47     FS_CONFIG=$2
48     shift; shift
49 fi
50
51 FILE_CONTEXTS=
52 if [[ "$1" == "-c" ]]; then
53     FILE_CONTEXTS=$2
54     shift; shift
55 fi
56
57 BLOCK_MAP_FILE=
58 if [[ "$1" == "-B" ]]; then
59     BLOCK_MAP_FILE=$2
60     shift; shift
61 fi
62
63 BLOCK_SIZE=131072
64 if [[ "$1" == "-b" ]]; then
65     BLOCK_SIZE=$2
66     shift; shift
67 fi
68
69 COMPRESSOR="lz4"
70 COMPRESSOR_OPT="-Xhc"
71 if [[ "$1" == "-z" ]]; then
72     COMPRESSOR=$2
73     COMPRESSOR_OPT=
74     shift; shift
75 fi
76
77 if [[ "$1" == "-zo" ]]; then
78     COMPRESSOR_OPT=$2
79     shift; shift
80 fi
81
82 COMPRESS_THRESHOLD=0
83 if [[ "$1" == "-t" ]]; then
84     COMPRESS_THRESHOLD=$2
85     shift; shift
86 fi
87
88
89 DISABLE_4K_ALIGN=false
90 if [[ "$1" == "-a" ]]; then
91     DISABLE_4K_ALIGN=true
92     shift;
93 fi
94
95 OPT=""
96 if [ -n "$MOUNT_POINT" ]; then
97   OPT="$OPT -mount-point $MOUNT_POINT"
98 fi
99 if [ -n "$PRODUCT_OUT" ]; then
100   OPT="$OPT -product-out $PRODUCT_OUT"
101 fi
102 if [ -n "$FS_CONFIG" ]; then
103   OPT="$OPT -fs-config-file $FS_CONFIG"
104 fi
105 if [ -n "$FILE_CONTEXTS" ]; then
106   OPT="$OPT -context-file $FILE_CONTEXTS"
107 fi
108 if [ -n "$BLOCK_MAP_FILE" ]; then
109   OPT="$OPT -block-map $BLOCK_MAP_FILE"
110 fi
111 if [ -n "$BLOCK_SIZE" ]; then
112   OPT="$OPT -b $BLOCK_SIZE"
113 fi
114 if [ -n "$COMPRESS_THRESHOLD" ]; then
115   OPT="$OPT -t $COMPRESS_THRESHOLD"
116 fi
117 if [ "$DISABLE_4K_ALIGN" = true ]; then
118   OPT="$OPT -disable-4k-align"
119 fi
120
121 MAKE_SQUASHFS_CMD="mksquashfs $SRC_DIR/ $OUTPUT_FILE -no-progress -comp $COMPRESSOR $COMPRESSOR_OPT -no-exports -noappend -no-recovery -no-fragments -no-duplicates -android-fs-config $OPT"
122 echo $MAKE_SQUASHFS_CMD
123 $MAKE_SQUASHFS_CMD
124
125 if [ $? -ne 0 ]; then
126     exit 4
127 fi
128
129 SPARSE_SUFFIX=".sparse"
130 if [ "$SPARSE" = true ]; then
131     img2simg $OUTPUT_FILE $OUTPUT_FILE$SPARSE_SUFFIX
132     if [ $? -ne 0 ]; then
133         exit 4
134     fi
135     mv $OUTPUT_FILE$SPARSE_SUFFIX $OUTPUT_FILE
136 fi
137