1*8222fbe1SAndroid Build Coastguard Worker#!/bin/bash 2*8222fbe1SAndroid Build Coastguard Worker 3*8222fbe1SAndroid Build Coastguard Workermydir="$(dirname $0)" 4*8222fbe1SAndroid Build Coastguard Worker 5*8222fbe1SAndroid Build Coastguard Workerfunction freeze() { 6*8222fbe1SAndroid Build Coastguard Worker [[ $# == 1 ]] || { 7*8222fbe1SAndroid Build Coastguard Worker echo "usage: freeze.sh <level>" 8*8222fbe1SAndroid Build Coastguard Worker echo "e.g. To freeze framework manifest for Android R, run:" 9*8222fbe1SAndroid Build Coastguard Worker echo " freeze.sh 5" 10*8222fbe1SAndroid Build Coastguard Worker return 1 11*8222fbe1SAndroid Build Coastguard Worker } 12*8222fbe1SAndroid Build Coastguard Worker local level="$1" 13*8222fbe1SAndroid Build Coastguard Worker [[ "${ANDROID_BUILD_TOP}" ]] || { 14*8222fbe1SAndroid Build Coastguard Worker echo "ANDROID_BUILD_TOP is not set; did you run envsetup.sh?" 15*8222fbe1SAndroid Build Coastguard Worker return 1 16*8222fbe1SAndroid Build Coastguard Worker } 17*8222fbe1SAndroid Build Coastguard Worker [[ "${ANDROID_HOST_OUT}" ]] || { 18*8222fbe1SAndroid Build Coastguard Worker echo "ANDROID_HOST_OUT is not set; did you run envsetup.sh?" 19*8222fbe1SAndroid Build Coastguard Worker return 1 20*8222fbe1SAndroid Build Coastguard Worker } 21*8222fbe1SAndroid Build Coastguard Worker 22*8222fbe1SAndroid Build Coastguard Worker local modules_to_build="check-vintf-all vintffm" 23*8222fbe1SAndroid Build Coastguard Worker echo "Building ${modules_to_build}" 24*8222fbe1SAndroid Build Coastguard Worker "${ANDROID_BUILD_TOP}/build/soong/soong_ui.bash" --build-mode --all-modules --dir="$(pwd)" ${modules_to_build} || { 25*8222fbe1SAndroid Build Coastguard Worker echo "${modules_to_build} failed. Backwards compatibility might be broken." 26*8222fbe1SAndroid Build Coastguard Worker echo "Check framework manifest changes. If this is intentional, run " 27*8222fbe1SAndroid Build Coastguard Worker echo " \`vintffm --update\` with appropriate options to update frozen files." 28*8222fbe1SAndroid Build Coastguard Worker return 1 29*8222fbe1SAndroid Build Coastguard Worker } 30*8222fbe1SAndroid Build Coastguard Worker 31*8222fbe1SAndroid Build Coastguard Worker echo "Updating level ${level}" 32*8222fbe1SAndroid Build Coastguard Worker "${ANDROID_HOST_OUT}/bin/vintffm" --update --level "${level}" --dirmap "/system:${ANDROID_PRODUCT_OUT}/system" "${mydir}/frozen" || return 1 33*8222fbe1SAndroid Build Coastguard Worker 34*8222fbe1SAndroid Build Coastguard Worker local files_to_diff="$(printf "${mydir}/frozen/%s\n" $(ls -1 -t -r ${mydir}/frozen | xargs -I{} basename {} | grep -B1 "${level}.xml"))" 35*8222fbe1SAndroid Build Coastguard Worker 36*8222fbe1SAndroid Build Coastguard Worker echo 37*8222fbe1SAndroid Build Coastguard Worker echo "Summary of changes:" 38*8222fbe1SAndroid Build Coastguard Worker echo diff ${files_to_diff} 39*8222fbe1SAndroid Build Coastguard Worker diff ${files_to_diff} || true 40*8222fbe1SAndroid Build Coastguard Worker} 41*8222fbe1SAndroid Build Coastguard Worker 42*8222fbe1SAndroid Build Coastguard Workerfreeze $@ 43