xref: /aosp_15_r20/tools/treble/vf/merge.sh (revision 105f628577ac4ba0e277a494fbb614ed8c12a994)
1*105f6285SAndroid Build Coastguard Worker#!/bin/bash
2*105f6285SAndroid Build Coastguard Worker
3*105f6285SAndroid Build Coastguard Worker# Thin wrapper around merge_target_files for vendor-frozen targets to
4*105f6285SAndroid Build Coastguard Worker# allow flag changes to be made in a presubmit-guarded change.
5*105f6285SAndroid Build Coastguard Worker
6*105f6285SAndroid Build Coastguard Workerset -e
7*105f6285SAndroid Build Coastguard Worker
8*105f6285SAndroid Build Coastguard Workerwhile getopts ":t:d:v:b:m:r:s:p:" option ; do
9*105f6285SAndroid Build Coastguard Worker  case "${option}" in
10*105f6285SAndroid Build Coastguard Worker    t) TARGET=${OPTARG} ;;
11*105f6285SAndroid Build Coastguard Worker    d) DIST_DIR=${OPTARG} ;;
12*105f6285SAndroid Build Coastguard Worker    v) VENDOR_DIR=${OPTARG} ;;
13*105f6285SAndroid Build Coastguard Worker    b) BUILD_ID=${OPTARG} ;;
14*105f6285SAndroid Build Coastguard Worker    m) MERGE_CONFIG_DIR=${OPTARG} ;;
15*105f6285SAndroid Build Coastguard Worker    r) HAS_RADIO_IMG=${OPTARG} ;;
16*105f6285SAndroid Build Coastguard Worker    s) TRUNK_STAGING=${OPTARG} ;;
17*105f6285SAndroid Build Coastguard Worker    p) SUPER_IMG=${OPTARG} ;;
18*105f6285SAndroid Build Coastguard Worker    *) echo "Unexpected argument: -${OPTARG}" >&2 ;;
19*105f6285SAndroid Build Coastguard Worker  esac
20*105f6285SAndroid Build Coastguard Workerdone
21*105f6285SAndroid Build Coastguard Worker
22*105f6285SAndroid Build Coastguard Workerif [[ -z "${TARGET}" ]]; then
23*105f6285SAndroid Build Coastguard Worker  echo "error: -t target argument not set"
24*105f6285SAndroid Build Coastguard Worker  exit 1
25*105f6285SAndroid Build Coastguard Workerfi
26*105f6285SAndroid Build Coastguard Workerif [[ -z "${DIST_DIR}" ]]; then
27*105f6285SAndroid Build Coastguard Worker  echo "error: -d dist dir argument not set"
28*105f6285SAndroid Build Coastguard Worker  exit 1
29*105f6285SAndroid Build Coastguard Workerfi
30*105f6285SAndroid Build Coastguard Workerif [[ -z "${VENDOR_DIR}" ]]; then
31*105f6285SAndroid Build Coastguard Worker  echo "error: -v vendor dir argument not set"
32*105f6285SAndroid Build Coastguard Worker  exit 1
33*105f6285SAndroid Build Coastguard Workerfi
34*105f6285SAndroid Build Coastguard Workerif [[ -z "${BUILD_ID}" ]]; then
35*105f6285SAndroid Build Coastguard Worker  echo "error: -b build id argument not set"
36*105f6285SAndroid Build Coastguard Worker  exit 1
37*105f6285SAndroid Build Coastguard Workerfi
38*105f6285SAndroid Build Coastguard Workerif [[ -z "${HAS_RADIO_IMG}" ]]; then
39*105f6285SAndroid Build Coastguard Worker  HAS_RADIO_IMG="true"
40*105f6285SAndroid Build Coastguard Workerfi
41*105f6285SAndroid Build Coastguard Workerif [[ -z "${TRUNK_STAGING}" ]]; then
42*105f6285SAndroid Build Coastguard Worker  TARGET_RELEASE="${TARGET}"
43*105f6285SAndroid Build Coastguard Workerelse
44*105f6285SAndroid Build Coastguard Worker  TARGET_RELEASE="${TARGET}-${TRUNK_STAGING}"
45*105f6285SAndroid Build Coastguard Workerfi
46*105f6285SAndroid Build Coastguard Workerif [[ -n "${SUPER_IMG}" ]]; then
47*105f6285SAndroid Build Coastguard Worker  BUILD_SUPER_IMG="true"
48*105f6285SAndroid Build Coastguard Workerfi
49*105f6285SAndroid Build Coastguard Worker
50*105f6285SAndroid Build Coastguard Worker# Move the system-only build artifacts to a separate folder
51*105f6285SAndroid Build Coastguard Worker# so that the flashing tools use the merged files instead.
52*105f6285SAndroid Build Coastguard Workerreadonly SYSTEM_DIR=${DIST_DIR}/system_build
53*105f6285SAndroid Build Coastguard Workermkdir -p ${SYSTEM_DIR}
54*105f6285SAndroid Build Coastguard Workermv -f ${DIST_DIR}/android-info.txt ${SYSTEM_DIR}
55*105f6285SAndroid Build Coastguard Workermv -f ${DIST_DIR}/${TARGET}-*.zip ${SYSTEM_DIR}
56*105f6285SAndroid Build Coastguard Worker
57*105f6285SAndroid Build Coastguard Workersource build/envsetup.sh
58*105f6285SAndroid Build Coastguard Workerlunch ${TARGET_RELEASE}-userdebug
59*105f6285SAndroid Build Coastguard Worker
60*105f6285SAndroid Build Coastguard Worker
61*105f6285SAndroid Build Coastguard WorkerEXTRA_FLAGS=""
62*105f6285SAndroid Build Coastguard Workerif [[ "${MERGE_CONFIG_DIR}" ]]; then
63*105f6285SAndroid Build Coastguard Worker  EXTRA_FLAGS+=" --framework-item-list ${MERGE_CONFIG_DIR}/framework_item_list.txt \
64*105f6285SAndroid Build Coastguard Worker  --framework-misc-info-keys ${MERGE_CONFIG_DIR}/framework_misc_info_keys.txt \
65*105f6285SAndroid Build Coastguard Worker  --vendor-item-list ${MERGE_CONFIG_DIR}/vendor_item_list.txt"
66*105f6285SAndroid Build Coastguard Workerfi
67*105f6285SAndroid Build Coastguard Worker
68*105f6285SAndroid Build Coastguard Workerout/host/linux-x86/bin/merge_target_files \
69*105f6285SAndroid Build Coastguard Worker  --framework-target-files ${SYSTEM_DIR}/${TARGET}-target_files*.zip \
70*105f6285SAndroid Build Coastguard Worker  --vendor-target-files ${VENDOR_DIR}/*-target_files-*.zip \
71*105f6285SAndroid Build Coastguard Worker  --allow-duplicate-apkapex-keys \
72*105f6285SAndroid Build Coastguard Worker  --output-target-files ${DIST_DIR}/${TARGET}-target_files-${BUILD_ID}.zip \
73*105f6285SAndroid Build Coastguard Worker  --output-img  ${DIST_DIR}/${TARGET}-img-${BUILD_ID}.zip \
74*105f6285SAndroid Build Coastguard Worker  --output-ota  ${DIST_DIR}/${TARGET}-ota-${BUILD_ID}.zip \
75*105f6285SAndroid Build Coastguard Worker  ${EXTRA_FLAGS}
76*105f6285SAndroid Build Coastguard Worker
77*105f6285SAndroid Build Coastguard Worker# Copy bootloader.img, radio.img, and android-info.txt, needed for flashing.
78*105f6285SAndroid Build Coastguard Workercp ${VENDOR_DIR}/bootloader.img ${DIST_DIR}/bootloader.img
79*105f6285SAndroid Build Coastguard Worker# Copy radio.img unless arg is "false" (eg. Android TV targets)
80*105f6285SAndroid Build Coastguard Workerif [[ $HAS_RADIO_IMG = "true" ]]; then
81*105f6285SAndroid Build Coastguard Worker  cp ${VENDOR_DIR}/radio.img ${DIST_DIR}/radio.img
82*105f6285SAndroid Build Coastguard Workerfi
83*105f6285SAndroid Build Coastguard Worker
84*105f6285SAndroid Build Coastguard Worker# Copy vendor otatools.zip, needed by sign_target_files_apks
85*105f6285SAndroid Build Coastguard Workerif [[ -f "${VENDOR_DIR}/otatools.zip" ]]; then
86*105f6285SAndroid Build Coastguard Worker  cp ${VENDOR_DIR}/otatools.zip ${DIST_DIR}/otatools_vendor.zip
87*105f6285SAndroid Build Coastguard Workerfi
88*105f6285SAndroid Build Coastguard Worker
89*105f6285SAndroid Build Coastguard Worker#Build super image if required
90*105f6285SAndroid Build Coastguard Workerif [[ $BUILD_SUPER_IMG = "true" ]]; then
91*105f6285SAndroid Build Coastguard Worker  out/host/linux-x86/bin/build_super_image \
92*105f6285SAndroid Build Coastguard Worker  ${DIST_DIR}/${TARGET}-target_files-${BUILD_ID}.zip \
93*105f6285SAndroid Build Coastguard Worker  ${DIST_DIR}/super.img
94*105f6285SAndroid Build Coastguard Worker  unzip -j -o -d ${DIST_DIR} ${DIST_DIR}/${TARGET}-img-${BUILD_ID}.zip
95*105f6285SAndroid Build Coastguard Workerfi
96*105f6285SAndroid Build Coastguard Worker
97*105f6285SAndroid Build Coastguard Workerunzip -j -o -d ${DIST_DIR} \
98*105f6285SAndroid Build Coastguard Worker  ${VENDOR_DIR}/*-target_files-*.zip \
99*105f6285SAndroid Build Coastguard Worker  OTA/android-info.txt
100