83 lines
2.2 KiB
Bash
Executable file
83 lines
2.2 KiB
Bash
Executable file
#!/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 <<EOD
|
|
$preamble $newrev
|
|
|
|
Build: $artifact_path
|
|
|
|
Changes include:
|
|
EOD
|
|
git log --graph --oneline $oldrev..$newrev >> $commitmsg
|
|
|
|
cd "$built_kernel"
|
|
git add Image.fit
|
|
git commit -t $commitmsg
|
|
rm $commitmsg
|