#!/bin/bash # script to push new prebuilt kernel from cros builder show_usage() { echo usage: $0 [artifact_path] [rootdir] [kernel_path] echo For: echo Artifacts[smaug]: smaug-release/R45-7199.0.0 echo artifact_path=smaug-release/R45-7199.0.0 echo If kernel comes from nvidia-kernel: echo kernel_path=src/partner_private/nvidia-kernel exit 1 } artifact_path=$1 TOP="$2" if [ -z "$TOP" ]; then TOP="$(pwd)" fi kernel_path="$3" if [ -z "$kernel_path" ]; then kernel_path="src/third_party/kernel/v3.18" fi gsbase=gs://chromeos-image-archive # smaug-release - works well # smaug-canary - works well - old, no longer works # smaug-paladin - potentially has kernel changes that are not upstream # trybot-smaug-paladin - works well with: cbuildbot --remote smaug-paladin build=smaug-release built_kernel="$TOP/device/google/dragon-kernel" kernel="$TOP/kernel/private/dragon" preamble="dragon: Update prebuilt kernel to" if [ ! -d "$built_kernel" ]; then echo ERROR: missing prebuilt directory $built_kernel show_usage fi if [ ! -d "$kernel" ]; then echo ERROR: missing kernel directory $kernel show_usage fi if [ -z "$artifact_path" ]; then latest=$(gsutil.py cat ${gsbase}/${build}/LATEST-master) if [ $? -ne 0 ]; then echo ERROR: could not determine artifact_path exit 1 fi artifact_path=${build}/${latest} fi gspath=${gsbase}/${artifact_path} echo promoting kernel from $gspath cd "$built_kernel" gsutil.py cat ${gspath}/stripped-packages.tar | bsdtar -s '/.*kernel.*tbz2/kernel.tbz2/' -x -f - '*kernel*' if [ $? -ne 0 ]; then echo ERROR: could not retrieve stripped-packages exit 1 fi bsdtar -s '/.*vmlinuz-3.18.*/Image.fit/' -jxf kernel.tbz2 '*vmlinuz-3.18*' rm kernel.tbz2 newrev=$(gsutil.py cat ${gspath}/manifest.xml | grep "path=\"${kernel_path}\"" | sed -e 's/.*revision="\([0123456789abcdef]\+\).*/\1/') oldrev=$(git log --oneline | head -1 | sed -e "s/.*${preamble} \(.*\)/\1/") cd "$kernel" git remote update commitmsg=$(mktemp /tmp/msg.XXXXXX) cat >>$commitmsg <> $commitmsg cd "$built_kernel" git add Image.fit git commit -t $commitmsg rm $commitmsg