1 #!/bin/bash 2 set -e 3 4 manual_mode=false 5 version=3.10 6 7 while getopts "mv:" opt; do 8 case $opt in 9 m) manual_mode=true 10 ;; 11 v) version=$OPTARG 12 ;; 13 ?) echo "Usage: $0 [-m] [-v version]" 14 echo " -m: manually specify build numbers" 15 echo " -v: specify kernel version [default 3.10]" 16 exit 1 17 ;; 18 esac 19 done 20 21 if [[ "$version" != "3.10" && "$version" != "3.18" ]] 22 then 23 echo "kernel version must be 3.10 or 3.18" 24 exit 1 25 fi 26 27 fetchtool='sso_client -location -connect_timeout 60 -request_timeout 60 -url' 28 build_server='https://android-build-uber.corp.google.com' 29 branch_prefix='kernel-n-dev-android-goldfish-' 30 31 # kernel_img[branch]="build_server_output local_file_name" 32 declare -A kernel_img 33 34 kernel_img[3.10-arm]="zImage arm/ranchu/kernel-qemu" 35 kernel_img[3.10-arm64]="Image arm64/kernel-qemu" 36 kernel_img[3.10-mips]="vmlinux mips/ranchu/kernel-qemu" 37 kernel_img[3.10-mips64]="vmlinux mips64/kernel-qemu" 38 kernel_img[3.10-x86]="bzImage x86/ranchu/kernel-qemu" 39 kernel_img[3.10-x86_64]="bzImage x86_64/ranchu/kernel-qemu" 40 kernel_img[3.10-x86_64-qemu1]="bzImage x86_64/kernel-qemu" 41 kernel_img[3.18-arm]="zImage arm/3.18/kernel-qemu2" 42 kernel_img[3.18-arm64]="Image arm64/3.18/kernel-qemu2" 43 kernel_img[3.18-mips]="vmlinux mips/3.18/kernel-qemu2" 44 kernel_img[3.18-mips64]="vmlinux mips64/3.18/kernel-qemu2" 45 kernel_img[3.18-x86]="bzImage x86/3.18/kernel-qemu2" 46 kernel_img[3.18-x86_64]="bzImage x86_64/3.18/kernel-qemu2" 47 48 printf "Upgrade emulator kernels $version\n\n" > emu_kernel.commitmsg 49 50 for key in "${!kernel_img[@]}" 51 do 52 if [[ $key != $version* ]] 53 then 54 continue 55 fi 56 57 branch=$branch_prefix$key 58 branch_url=$build_server/builds/$branch-linux-kernel 59 60 # Find the latest build by searching for highest build number since 61 # build server doesn't provide the "latest" link. 62 build=`$fetchtool $branch_url | \ 63 sed -rn "s/<li><a href=".*">([0-9]+)<\/a><\/li>/\1/p" | \ 64 sort -nr | head -n 1` 65 66 if $manual_mode 67 then 68 read -p "Enter build number for $branch: [$build]" input 69 build="${input:-$build}" 70 fi 71 72 echo Fetching build $build from branch $branch 73 74 # file_info[0] - kernel image on build server 75 # file_info[1] - kernel image in local tree 76 file_info=(${kernel_img[$key]}) 77 78 $fetchtool $branch_url/$build/${file_info[0]} > ${file_info[1]} 79 80 git add ${file_info[1]} 81 82 printf "$branch - build: $build\n" >> emu_kernel.commitmsg 83 done 84 85 last_commit=`git log | \ 86 sed -rn "s/.*Upgrade $version kernel images to ([a-z0-9]+).*/\1/p" | \ 87 head -n 1` 88 89 if [ ! -d goldfish_cache ] 90 then 91 mkdir goldfish_cache 92 git clone https://android.googlesource.com/kernel/goldfish goldfish_cache 93 fi 94 95 pushd goldfish_cache 96 97 git fetch origin 98 99 git checkout remotes/origin/android-goldfish-$version 100 tot_commit=`git log --oneline -1 | cut -d' ' -f1` 101 printf "\nUpgrade $version kernel images to ${tot_commit}\n" >> ../emu_kernel.commitmsg 102 git log --oneline HEAD...${last_commit} >> ../emu_kernel.commitmsg 103 104 popd 105 106 git commit -t emu_kernel.commitmsg 107 108 rm emu_kernel.commitmsg 109 110