pack.sh 6.33 KB
Newer Older
fuyanbin's avatar
fuyanbin committed
1
#!/bin/bash
2
3
4
5
6
7
8
usage() {
    echo "Usage: $0 -V | --vendor  <vendor id>
                    -t | --type <pipe type>
                    -i | --image <image file>
                    --chroot-type <pack type>
                    --orgcode <organization code>
                    --channelid <channel id>
fuyanbin's avatar
fuyanbin committed
9
                    --packtype <pack type>
10
11
12
                    --help"
    exit 1
}
牛文敏's avatar
牛文敏 committed
13

14
15
16
17
18
19
VENDOR=""
PIPE_TYPE="small"
CHROOT_TYPE="androidrom"
DEPLOY="elf"
ORGCODE=""
CHANNELID=""
fuyanbin's avatar
typo    
fuyanbin committed
20
IMAGE_FILE=""
fuyanbin's avatar
fuyanbin committed
21
PACK_TYPE="other"
fuyanbin's avatar
fuyanbin committed
22

zhouzhenyu's avatar
zhouzhenyu committed
23
24
25
26
# new append
NOUPLOAD="false"
LOCAL="false"

27
28
29
30
export PATH=${PATH}:$(pwd)/tools/
PARSED_ARUGMENTS=$(getopt -a -n "$0" -o V:t:i: --long help,vendor:,type:,image:,chroot-type:,orgcode:,channelid:, -- "$@")
eval set -- "${PARSED_ARUGMENTS}"
while :
fuyanbin's avatar
fuyanbin committed
31
do
32
33
34
35
36
37
38
    case "$1" in
        -V | --vendor) VENDOR="$2"; shift 2 ;;
        -t | --type) PIPE_TYPE="$2"; shift 2 ;;
        -i | --image) IMAGE_FILE="$2"; shift 2 ;;
        --chroot-type) CHROOT_TYPE="$2"; shift 2 ;;
        --orgcode) ORGCODE="$2"; shift 2;;
        --channelid) CHANNELID="$2"; shift 2;;
fuyanbin's avatar
fuyanbin committed
39
        --packtype) PACK_TYPE="$2"; shift 2;;
40
41
42
43
        --help) usage ;;
        --) shift; break;;
        *) usage ;;
    esac
fuyanbin's avatar
fuyanbin committed
44
done
fuyanbin's avatar
fuyanbin committed
45

fuyanbin's avatar
cleanup    
fuyanbin committed
46
47
build_dir=$(mktemp -d /build/tmp.XXXXX)
packge_dir=$(mktemp -d /build/tmp.XXXXX)
fuyanbin's avatar
fuyanbin committed
48
boot_dir=$(mktemp -d /build/tmp.XXXXX)
49
50

build_image() {
fuyanbin's avatar
cleanup    
fuyanbin committed
51
    local img="$1"
fuyanbin's avatar
fuyanbin committed
52
    local android_sdk
fuyanbin's avatar
cleanup    
fuyanbin committed
53

54
55
56
    systemfile="$build_dir/system.PARTITION"
    systemfile_ext4="$build_dir/system.PARTITION.ext4"

fuyanbin's avatar
fuyanbin committed
57
    aml_image_v2_packer -d "$img" "$build_dir"
58
59
60
    if file "$systemfile" | grep "Android sparse image"
    then
        simg2img "$systemfile" "$systemfile_ext4"
fuyanbin's avatar
fuyanbin committed
61
        loopdev=$(losetup -P -f --show "$systemfile_ext4")
62
    else
fuyanbin's avatar
fuyanbin committed
63
        loopdev=$(losetup -P -f --show "$systemfile")
64
65
66
    fi

    mkdir "$build_dir/system"
fuyanbin's avatar
fuyanbin committed
67
    mount "$loopdev" "$build_dir/system"
68

fuyanbin's avatar
fuyanbin committed
69
    touch "$build_dir/system/.androidrom"
70

fuyanbin's avatar
fuyanbin committed
71
    rm -f "$build_dir/system/hugep-all.zip"
fuyanbin's avatar
fuyanbin committed
72
73
    rm -f "$build_dir/system/bin/hugep-all.zip"

fuyanbin's avatar
fuyanbin committed
74
    android_sdk="$(grep "build\.version\.sdk" "$build_dir"/system/build.prop | awk -F'=' '{print $2}')"
fuyanbin's avatar
fuyanbin committed
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
    if [[ "$android_sdk" -ge 28 ]]
    then
        find ./services/ -type f -name "*.rc" -exec install -t "$build_dir"/system/etc/init/ {} \;
    else
        pushd "$boot_dir"
        abootimg -x "$build_dir/boot.PARTITION" ramdisk
        mkdir initrd_dir
        pushd initrd_dir
        gunzip -c ../initrd.img | cpio -i
        popd
        cp initrd_dir/init.rc .
        rm -rf initrd_dir
        popd
        cp "$boot_dir"/init.rc "$packge_dir"/init.rc
        rm -rf "$boot_dir"
fuyanbin's avatar
fuyanbin committed
90
        if ! find_autostart -script_name preinstall.sh -initrc "$packge_dir"/init.rc -root_path "$build_dir" > "$packge_dir"/find_autostart.log 2>/dev/null
fuyanbin's avatar
fuyanbin committed
91
        then
fuyanbin's avatar
fuyanbin committed
92
            find_autostart -script_name recovery.sh -initrc "$packge_dir"/init.rc -root_path "$build_dir" > "$packge_dir"/find_autostart.log 2>/dev/null
fuyanbin's avatar
fuyanbin committed
93
94
95
        fi
        local auto_start_script
        auto_start_script="$(cat "$packge_dir"/find_autostart.log)"
fuyanbin's avatar
typo    
fuyanbin committed
96
        if [[ -z "$auto_start_script" ]] && [[ -f "$build_dir"/system/bin/startsoftdetector.sh ]]
97
        then
98
            # TODO: startsoftdetector.sh 会阻塞在某一步,要把 starthugep.sh 加在中间部分
99
100
            auto_start_script="/system/bin/startsoftdetector.sh"
        fi
101
        # NOTE: 返回的脚本路径里一定以 /system/ 开头, 所以下边拼路径时没有加上 /system
fuyanbin's avatar
fuyanbin committed
102
103
        if [[ -n "$auto_start_script" ]]
        then
104
            if ! grep -q "#!/system/bin/sh" "$build_dir"/"$auto_start_script"
fuyanbin's avatar
fuyanbin committed
105
            then
106
                echo "#!/system/bin/sh" >> "$build_dir"/"$auto_start_script"
fuyanbin's avatar
fuyanbin committed
107
            fi
fuyanbin's avatar
fuyanbin committed
108
            echo " " >> "$build_dir"/"$auto_start_script"
109
110
111
            echo "/system/bin/starthugep.sh > /dev/null 2>&1 &" >> "$build_dir"/"$auto_start_script"
            chmod 0755 "$build_dir"/"$auto_start_script"
            chcon u:object_r:drmserver_exec:s0 "$build_dir"/"$auto_start_script"
fuyanbin's avatar
fuyanbin committed
112
113
        fi
    fi
114

fuyanbin's avatar
fuyanbin committed
115
116
    cp -f "$build_dir/hugep-all.zip" "$build_dir"/system/bin/hugep-all.zip
    find ./services/ -type f ! -name  "*.rc" ! -name "*.zip" -exec install -m 0777 -t "$build_dir"/system/bin/ {} \;
117
118
    for file in $(find ./services/ -type f ! -name "*.rc")
    do
fuyanbin's avatar
fuyanbin committed
119
        chcon u:object_r:drmserver_exec:s0 "$build_dir/system/bin/$(basename "$file")"
120
121
    done

fuyanbin's avatar
fuyanbin committed
122
123
    umount "$loopdev"
    losetup -d "$loopdev"
124
125
126
127
128
129
130
131
132
    rm -rf "$build_dir/system"
    sync

    if [[ -f "$systemfile_ext4" ]]
    then
        rm -f "$systemfile"
        img2simg "$systemfile_ext4" "$systemfile"
        rm -f "$systemfile_ext4"
    fi
fuyanbin's avatar
fuyanbin committed
133
    aml_image_v2_packer -r "/$build_dir/image.cfg" "$build_dir" "${packge_dir}/$(basename "$img")"
fuyanbin's avatar
fuyanbin committed
134
    rm -rf "$build_dir"
135
136
}

fuyanbin's avatar
fuyanbin committed
137
generate_vendor_confg() {
138
139
140
141
142
143
    local yaml_file_src
    local yaml_file

    yaml_file="$build_dir"/vendor.yaml
    yaml_file_src="$build_dir"/vendor.yaml.src
    cp vendor.yaml.src "$yaml_file_src"
fuyanbin's avatar
fuyanbin committed
144
145
146
147
    sed -i'' "s#__VENDOR__#$VENDOR#g"  "$yaml_file_src"
    sed -i'' "s#__ORGCODE__#$ORGCODE#g"  "$yaml_file_src"
    sed -i'' "s#__CHROOT_TYPE__#$CHROOT_TYPE#g"  "$yaml_file_src"
    sed -i'' "s#__DEPLOY__#$DEPLOY#g"  "$yaml_file_src"
fuyanbin's avatar
fuyanbin committed
148
149
    sed -i'' "s#__CHANNEL_ID__#$CHANNELID#g"  "$yaml_file_src"
    sed -i'' "s#__PACK_TYPE__#$PACK_TYPE#g"  "$yaml_file_src"
150
151
152
153
154
155
156
157
158
159
160
161
162
163
    aio -m enc -i "$yaml_file_src" -o "$yaml_file"
}

update_hugepall_zipfile() {
    local yaml_file
    local hugep_zip_file
    local hugep_zip_file_origin

    yaml_file="$build_dir"/vendor.yaml
    hugep_zip_file="$build_dir/hugep-all.zip"
    hugep_zip_file_origin="./services/hugep-all.zip"

    cp "$hugep_zip_file_origin" "$hugep_zip_file"

fuyanbin's avatar
fuyanbin committed
164
    zip -u -j "$hugep_zip_file" "$yaml_file"
165
166
}

zhouzhenyu's avatar
zhouzhenyu committed
167
upload() {
fuyanbin's avatar
cleanup    
fuyanbin committed
168
169
170
171
    local date_i
    local outfile
    local outfile_7z
    local MD5SUM
zhouzhenyu's avatar
zhouzhenyu committed
172

fuyanbin's avatar
cleanup    
fuyanbin committed
173
174
175
176
    outfile="${packge_dir}/$(basename "$IMAGE_FILE")"
    outfile_7z="${outfile}.7z"
    date_i="$(date +%Y-%m-%d-%s)"
    MD5SUM=$(md5sum "$outfile" | awk '{print $1}' )
zhouzhenyu's avatar
zhouzhenyu committed
177

fuyanbin's avatar
cleanup    
fuyanbin committed
178
179
180
181
    if [[ "$NOUPLOAD" != "true" ]]
    then
        7z a -mm=LZMA2 "$outfile_7z" "$outfile"
        upload.sh --file "$outfile_7z" --directory product/terminal/chroot_androidrom/"$ORGCODE/$date_i"
fuyanbin's avatar
fuyanbin committed
182
        IMG_URL="https://cdn.linkfog.cn/""product/terminal/chroot_androidrom/$ORGCODE/$date_i/$(basename "$outfile_7z")"
zhouzhenyu's avatar
zhouzhenyu committed
183
184
        echo "RESULT: ${VENDOR} ${IMG_URL} ${MD5SUM} ${TITLE}"

fuyanbin's avatar
cleanup    
fuyanbin committed
185
        rm -f "$outfile" "$outfile_7z"
fuyanbin's avatar
fuyanbin committed
186
        rm -rf "$packge_dir"
zhouzhenyu's avatar
zhouzhenyu committed
187
188
189
    fi
}

fuyanbin's avatar
cleanup    
fuyanbin committed
190
export PATH="$PATH:$(pwd)"/tools/
fuyanbin's avatar
fuyanbin committed
191
192
193

generate_vendor_confg
update_hugepall_zipfile
194
build_image "$IMAGE_FILE"
zhouzhenyu's avatar
zhouzhenyu committed
195
upload