1*8f44c3f5SXin Li#!/bin/bash 2*8f44c3f5SXin LiKERNEL_VERSION="5.15" 3*8f44c3f5SXin LiDEFAULT_BRANCH="aosp_kernel-common-android13-${KERNEL_VERSION}" 4*8f44c3f5SXin Li 5*8f44c3f5SXin Li# Examples: 6*8f44c3f5SXin Li# to update 7*8f44c3f5SXin Li# * kernel and goldfish modules (recommended): 8*8f44c3f5SXin Li# ./update_emu_kernel.sh --bug 123 --bid 6332140 9*8f44c3f5SXin Li# * only goldfish modules: 10*8f44c3f5SXin Li# ./update_emu_kernel.sh --bug 123 --bid 6332140 --update modules 11*8f44c3f5SXin Li# * only kernel: 12*8f44c3f5SXin Li# ./update_emu_kernel.sh --bug 123 --bid 6332140 --update kernel 13*8f44c3f5SXin Liset -e 14*8f44c3f5SXin Liset -o errexit 15*8f44c3f5SXin Lisource gbash.sh 16*8f44c3f5SXin Li 17*8f44c3f5SXin LiDEFINE_int bug 0 "Bug with the reason for the update" 18*8f44c3f5SXin LiDEFINE_int bid 0 "Build id for goldfish modules" 19*8f44c3f5SXin LiDEFINE_string update "both" "Select which prebuilts to update, (kernel|modules|both)" 20*8f44c3f5SXin LiDEFINE_string branch "${DEFAULT_BRANCH}" "Branch for fetch_artifact" 21*8f44c3f5SXin Li 22*8f44c3f5SXin Lifetch_arch() { 23*8f44c3f5SXin Li scratch_dir="${1}" 24*8f44c3f5SXin Li branch="${2}" 25*8f44c3f5SXin Li bid="${3}" 26*8f44c3f5SXin Li do_fetch_kernel="${4}" 27*8f44c3f5SXin Li do_fetch_modules="${5}" 28*8f44c3f5SXin Li kernel_target="${6}" 29*8f44c3f5SXin Li kernel_artifact="${7}" 30*8f44c3f5SXin Li modules_target="${8}" 31*8f44c3f5SXin Li 32*8f44c3f5SXin Li mkdir "${scratch_dir}" 33*8f44c3f5SXin Li pushd "${scratch_dir}" 34*8f44c3f5SXin Li 35*8f44c3f5SXin Li if [[ "${do_fetch_kernel}" -ne 0 ]]; then 36*8f44c3f5SXin Li /google/data/ro/projects/android/fetch_artifact \ 37*8f44c3f5SXin Li --bid "${bid}" \ 38*8f44c3f5SXin Li --target "${kernel_target}" \ 39*8f44c3f5SXin Li "${kernel_artifact}" 40*8f44c3f5SXin Li fi 41*8f44c3f5SXin Li 42*8f44c3f5SXin Li if [[ "${do_fetch_modules}" -ne 0 ]]; then 43*8f44c3f5SXin Li /google/data/ro/projects/android/fetch_artifact \ 44*8f44c3f5SXin Li --bid "${bid}" \ 45*8f44c3f5SXin Li --target "${modules_target}" \ 46*8f44c3f5SXin Li "*.ko" 47*8f44c3f5SXin Li fi 48*8f44c3f5SXin Li 49*8f44c3f5SXin Li popd 50*8f44c3f5SXin Li} 51*8f44c3f5SXin Li 52*8f44c3f5SXin Limove_artifacts() { 53*8f44c3f5SXin Li scratch_dir="${1}" 54*8f44c3f5SXin Li dst_dir="${2}" 55*8f44c3f5SXin Li kernel_artifact="${3}" 56*8f44c3f5SXin Li kernel_filename="${4}" 57*8f44c3f5SXin Li do_fetch_modules="${5}" 58*8f44c3f5SXin Li 59*8f44c3f5SXin Li pushd "${scratch_dir}" 60*8f44c3f5SXin Li 61*8f44c3f5SXin Li if [[ -f "${kernel_artifact}" ]]; then 62*8f44c3f5SXin Li mv "${kernel_artifact}" "${dst_dir}/${kernel_filename}" 63*8f44c3f5SXin Li fi 64*8f44c3f5SXin Li 65*8f44c3f5SXin Li if [[ "${do_fetch_modules}" -ne 0 ]]; then 66*8f44c3f5SXin Li rm -rf "${dst_dir}/ko-new" 67*8f44c3f5SXin Li rm -rf "${dst_dir}/ko-old" 68*8f44c3f5SXin Li mkdir "${dst_dir}/ko-new" 69*8f44c3f5SXin Li mv *.ko "${dst_dir}/ko-new" 70*8f44c3f5SXin Li mv "${dst_dir}/ko" "${dst_dir}/ko-old" 71*8f44c3f5SXin Li mv "${dst_dir}/ko-new" "${dst_dir}/ko" 72*8f44c3f5SXin Li rm -rf "${dst_dir}/ko-old" 73*8f44c3f5SXin Li fi 74*8f44c3f5SXin Li 75*8f44c3f5SXin Li popd 76*8f44c3f5SXin Li} 77*8f44c3f5SXin Li 78*8f44c3f5SXin Limake_git_commit() { 79*8f44c3f5SXin Li x86_dst_dir="${1}" 80*8f44c3f5SXin Li arm_dst_dir="${2}" 81*8f44c3f5SXin Li git add "${x86_dst_dir}" 82*8f44c3f5SXin Li git add "${arm_dst_dir}" 83*8f44c3f5SXin Li 84*8f44c3f5SXin Li git commit -a -m "$( 85*8f44c3f5SXin Li echo Update kernel prebuilts to go/ab/${FLAGS_bid} 86*8f44c3f5SXin Li echo 87*8f44c3f5SXin Li echo Test: TreeHugger 88*8f44c3f5SXin Li echo Bug: ${FLAGS_bug} 89*8f44c3f5SXin Li )" 90*8f44c3f5SXin Li 91*8f44c3f5SXin Li git commit --amend -s 92*8f44c3f5SXin Li} 93*8f44c3f5SXin Li 94*8f44c3f5SXin Limain() { 95*8f44c3f5SXin Li fail=0 96*8f44c3f5SXin Li 97*8f44c3f5SXin Li if [[ "${FLAGS_bug}" -eq 0 ]]; then 98*8f44c3f5SXin Li echo "Must specify --bug" 1>&2 99*8f44c3f5SXin Li fail=1 100*8f44c3f5SXin Li fi 101*8f44c3f5SXin Li 102*8f44c3f5SXin Li if [[ "${FLAGS_bid}" -eq 0 ]]; then 103*8f44c3f5SXin Li echo "Must specify --bid" 1>&2 104*8f44c3f5SXin Li fail=1 105*8f44c3f5SXin Li fi 106*8f44c3f5SXin Li 107*8f44c3f5SXin Li do_fetch_kernel=0 108*8f44c3f5SXin Li do_fetch_modules=0 109*8f44c3f5SXin Li case "${FLAGS_update}" in 110*8f44c3f5SXin Li both) 111*8f44c3f5SXin Li do_fetch_kernel=1 112*8f44c3f5SXin Li do_fetch_modules=1 113*8f44c3f5SXin Li ;; 114*8f44c3f5SXin Li kernel) 115*8f44c3f5SXin Li do_fetch_kernel=1 116*8f44c3f5SXin Li ;; 117*8f44c3f5SXin Li modules) 118*8f44c3f5SXin Li do_fetch_modules=1 119*8f44c3f5SXin Li ;; 120*8f44c3f5SXin Li *) 121*8f44c3f5SXin Li echo "Unexpected value for --update, '${FLAGS_update}'" 1>&2 122*8f44c3f5SXin Li fail=1 123*8f44c3f5SXin Li ;; 124*8f44c3f5SXin Li esac 125*8f44c3f5SXin Li 126*8f44c3f5SXin Li if [[ "${fail}" -ne 0 ]]; then 127*8f44c3f5SXin Li exit "${fail}" 128*8f44c3f5SXin Li fi 129*8f44c3f5SXin Li 130*8f44c3f5SXin Li here="$(pwd)" 131*8f44c3f5SXin Li x86_dst_dir="${here}/x86_64/${KERNEL_VERSION}" 132*8f44c3f5SXin Li arm_dst_dir="${here}/arm64/${KERNEL_VERSION}" 133*8f44c3f5SXin Li 134*8f44c3f5SXin Li if [[ ! -d "${x86_dst_dir}" ]]; then 135*8f44c3f5SXin Li mkdir "${x86_dst_dir}" 136*8f44c3f5SXin Li fi 137*8f44c3f5SXin Li if [[ ! -d "${x86_dst_dir}/ko" ]]; then 138*8f44c3f5SXin Li mkdir "${x86_dst_dir}/ko" 139*8f44c3f5SXin Li fi 140*8f44c3f5SXin Li if [[ ! -d "${arm_dst_dir}" ]]; then 141*8f44c3f5SXin Li mkdir "${arm_dst_dir}" 142*8f44c3f5SXin Li fi 143*8f44c3f5SXin Li if [[ ! -d "${arm_dst_dir}/ko" ]]; then 144*8f44c3f5SXin Li mkdir "${arm_dst_dir}/ko" 145*8f44c3f5SXin Li fi 146*8f44c3f5SXin Li 147*8f44c3f5SXin Li scratch_dir="$(mktemp -d)" 148*8f44c3f5SXin Li x86_scratch_dir="${scratch_dir}/x86" 149*8f44c3f5SXin Li arm_scratch_dir="${scratch_dir}/arm" 150*8f44c3f5SXin Li 151*8f44c3f5SXin Li fetch_arch "${x86_scratch_dir}" \ 152*8f44c3f5SXin Li "${FLAGS_branch}" "${FLAGS_bid}" \ 153*8f44c3f5SXin Li "${do_fetch_kernel}" "${do_fetch_modules}" \ 154*8f44c3f5SXin Li "kernel_x86_64" "bzImage" \ 155*8f44c3f5SXin Li "kernel_virt_x86_64" 156*8f44c3f5SXin Li 157*8f44c3f5SXin Li fetch_arch "${arm_scratch_dir}" \ 158*8f44c3f5SXin Li "${FLAGS_branch}" "${FLAGS_bid}" \ 159*8f44c3f5SXin Li "${do_fetch_kernel}" "${do_fetch_modules}" \ 160*8f44c3f5SXin Li "kernel_aarch64" "Image" \ 161*8f44c3f5SXin Li "kernel_virt_aarch64" 162*8f44c3f5SXin Li 163*8f44c3f5SXin Li if [[ -f "${arm_scratch_dir}/Image" ]]; then 164*8f44c3f5SXin Li gzip -9 "${arm_scratch_dir}/Image" 165*8f44c3f5SXin Li fi 166*8f44c3f5SXin Li 167*8f44c3f5SXin Li move_artifacts "${x86_scratch_dir}" "${x86_dst_dir}" \ 168*8f44c3f5SXin Li "bzImage" "kernel-${KERNEL_VERSION}" \ 169*8f44c3f5SXin Li "${do_fetch_modules}" 170*8f44c3f5SXin Li 171*8f44c3f5SXin Li move_artifacts "${arm_scratch_dir}" "${arm_dst_dir}" \ 172*8f44c3f5SXin Li "Image.gz" "kernel-${KERNEL_VERSION}-gz" \ 173*8f44c3f5SXin Li "${do_fetch_modules}" 174*8f44c3f5SXin Li 175*8f44c3f5SXin Li make_git_commit "${x86_dst_dir}" "${arm_dst_dir}" 176*8f44c3f5SXin Li} 177*8f44c3f5SXin Li 178*8f44c3f5SXin Ligbash::main "$@" 179