Home | History | Annotate | Download | only in qemu-kernel
      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