Last active
November 2, 2016 23:47
-
-
Save junk-labs/8ba93af50dca7ed45c0c0da361219bcd to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# YOUR_ACCESS_TOKEN には https://www.pushbullet.com/#settings/account から取得したトークンを使用 | |
PUSHBULLET_TOKEN=YOUR_ACCESS_TOKEN | |
# CCacheを使う | |
export USE_CCACHE=1 | |
workdir=`pwd` | |
mkdir -p $workdir/log/success $workdir/log/fail $workdir/rom | |
# オプションを処理 | |
while getopts tpsc OPT | |
do | |
case $OPT in | |
"t" ) FLG_TWEET="TRUE" ;; | |
"p" ) FLG_PUSHBULLET="TRUE" ;; | |
"s" ) FLG_SYNC="TRUE" ;; | |
"c" ) FLG_CLEAN="TRUE" ;; | |
esac | |
done | |
# 引数からオプション部分を切り捨てる。 | |
shift `expr $OPTIND - 1` | |
# 実行時の引数が正しいかチェック | |
if [ $# -ne 2 ]; then | |
echo "Usage: $CMDNAME [-tpsc] [builddir] [target]" 1>&2 | |
echo "-t ツイート可否 -p PUSHBULLET可否 -s repo sync可否 -c make clean可否" 1>&2 | |
echo "ログは自動的に記録されます。" 1>&2 | |
exit 1 | |
fi | |
builddir=$1 | |
device=$2 | |
cd $builddir | |
# repo sync | |
if [ "$FLG_SYNC" = "TRUE" ]; then | |
repo sync -j8 -c -f --force-sync --no-clone-bundle | |
echo -e "\n" | |
fi | |
# make clean | |
if [ "$FLG_CLEAN" = "TRUE" ]; then | |
make clean | |
echo -e "\n" | |
fi | |
buildtype=`basename $builddir` | |
# 現在日時取得、ログのファイル名設定 | |
starttime=$(date '+%Y/%m/%d %T') | |
filetime=$(date '+%Y-%m-%d_%H-%M-%S') | |
filename="${filetime}_${buildtype}_${device}.log" | |
# CMやRRの場合、吐き出すzipのファイル名はUTC基準での日付なので注意 | |
zipdate=$(date -u '+%Y%m%d') | |
#ccache | |
if [ $USE_CCACHE -eq 1 ]; then | |
prebuilts/misc/linux-x86/ccache/ccache -M 50G | |
echo -e "\n" | |
fi | |
source build/envsetup.sh | |
breakfast $device | |
# ディレクトリ名からツイート用のROM情報の設定をする | |
if [ $buildtype = cyanogenmod ]; then | |
source="CyanogenMod 13.0" | |
short="CM13" | |
zipname="cm-$(get_build_var CM_VERSION)" | |
elif [ $buildtype = rr ]; then | |
vernum=$(get_build_var PRODUCT_VERSION) | |
source="ResurrectionRemix v${vernum}" | |
short="RR v${vernum}" | |
zipname=$(get_build_var CM_VERSION) | |
else | |
# 一応対処するけど他ROMについては上記を参考にちゃんと書いてもらわないと後がめんどい | |
source=$buildtype | |
short="${source}" | |
zipname="*" | |
fi | |
# 開始時のツイート | |
if [ "$FLG_TWEET" = "TRUE" ]; then | |
twstart=$(echo -e "${device} 向け ${source} のビルドを開始します。 \n\n$starttime #madokaBuild") | |
perl ~/oysttyer/oysttyer.pl -ssl -status="$twstart" | |
fi | |
# ビルド | |
mka bacon 2>&1 | tee "$workdir/log/$filename" | |
if [ $(echo ${PIPESTATUS[0]}) -eq 0 ]; then | |
ans=1 | |
statusdir="success" | |
endstr=$(tail -n 3 "$workdir/log/$filename" | tr -d '\n' | sed -r 's/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g' | sed 's/#//g' | sed 's/make completed successfully//g' | sed 's/^[ ]*//g') | |
statustw="${zipname} のビルドに成功しました!" | |
else | |
ans=0 | |
statusdir="fail" | |
endstr=$(tail -n 3 "$workdir/log/$filename" | tr -d '\n' | sed -r 's/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g' | sed 's/#//g' | sed 's/make failed to build some targets//g' | sed 's/^[ ]*//g') | |
statustw="${device} 向け ${source} のビルドに失敗しました…" | |
fi | |
cd $workdir | |
echo -e "\n" | |
# 結果のツイート | |
if [ "$FLG_TWEET" = "TRUE" ]; then | |
endtime=$(date '+%Y/%m/%d %H:%M:%S') | |
twfinish=$(echo -e "$statustw\n\n$endstr\n\n$endtime #madokaBuild") | |
perl ~/oysttyer/oysttyer.pl -ssl -status="$twfinish" -autosplit=cut | |
fi | |
# Pushbullet APIを使ってプッシュ通知も投げる。文言は適当に | |
if [ "$FLG_PUSHBULLET" = "TRUE" ]; then | |
pbtitle=$(echo -e "${statusdir}: Build ${short} for ${device}") | |
pbbody=$(cat -v "log/$filename" | tail -n 3 | tr -d '\n' | cut -d "#" -f 5-5 | cut -c 2-) | |
curl -u ${PUSHBULLET_TOKEN}: -X POST \ | |
https://api.pushbullet.com/v2/pushes \ | |
--header "Content-Type: application/json" \ | |
--data-binary "{\"type\": \"note\", \"title\": \"${pbtitle}\", \"body\": \"${pbbody}\"}" | |
fi | |
# ログ移す | |
mv -v $workdir/log/$filename $workdir/log/$statusdir/ | |
echo -e "\n" | |
# ビルドが成功してれば ~/rom に移動しておく | |
if [ $ans -eq 1 ]; then | |
mkdir -p $workdir/rom/$device | |
mv -v --backup=t $builddir/out/target/product/$device/${zipname}.zip $workdir/rom/$device/${zipname}.zip | |
mv -v --backup=t $builddir/out/target/product/$device/${zipname}.zip.md5sum $workdir/rom/$device/${zipname}.zip.md5sum | |
echo -e "\n" | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
ほたさんが作成された https://github.com/lindwurm/madoka を改造
カレントディレクトリにrrソースツリーが有ると仮定した場合
$ madoka.sh rr dlxj
だけで一通りビルド出来ます。