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