【shell】编译脚本
|
#!/bin/bash
#设置环境变量
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
source /etc/profile
export ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g"
echo "ANDROID_JACK_VM_ARGS=$ANDROID_JACK_VM_ARGS"
#用户授权
export USER=$(whoami)
source /home/lenovosh/.bashrc
#copy函数 拷贝编译后需要的文件
fileCopy(){
cp /home/lenovosh/work/sunflower/LINUX/android/out/target/product/$folder_name/boot.img .
cp /home/lenovosh/work/sunflower/LINUX/android/out/target/product/$folder_name/emmc_appsboot.mbn .
cp /home/lenovosh/work/sunflower/LINUX/android/out/target/product/$folder_name/splash.img .
cp /home/lenovosh/work/sunflower/LINUX/android/out/target/product/$folder_name/system.img .
cp /home/lenovosh/work/sunflower/LINUX/android/out/target/product/$folder_name/userdata.img .
cp /home/lenovosh/work/sunflower/LINUX/android/out/target/product/$folder_name/obj/KERNEL_OBJ/vmlinux .
}
#add tag
daTag(){
cd /home/lenovosh/work/sunflower/
repo forall -c 'pwd && git tag -a '$tmp1' -m '$tmp1''
(repo forall -c 'pwd && git push gerrit_lv '$tmp1'')2>&1 | tee pushtag.log
}
#上传文件到ftp 重定向
uploadFile(){
cd /home/lenovosh/work/SunFlower_Version/
lftp <<-EOF
open 10.4.64.116
user SDU lenovo
set ssl:verify-certificate no
cd SW\ release/5AR_POC_2.0/2017_7.0/
mkdir $tmp2
cd $tmp2
mirror -R -c -e /home/lenovosh/work/SunFlower_Version/$tmp2/ .
EOF
}
#生成本地文件夹 以做备份
newFolder(){
#进入sunflower版本目录
cd /home/lenovosh/work/SunFlower_Version
#生成日期文件夹
mkdir -p $tmp2
cd $tmp2
#新建文件夹
mkdir 1NDP_USER
mkdir 2Lumus_USER
mkdir 3NDP_Debug
mkdir 4Lumus_Debug
}
#判断编译成功与否
bianyiOk(){
cd /home/lenovosh/work/sunflower/LINUX/android/
result=$(cat $logname | tail -3 | grep -iE "make completed successfully")
if [ "$result" != "" ]; then
echo "build success"
cd /home/lenovosh/work/SunFlower_Version/$tmp2
cd $VersionName
#调用copy函数开始Copy
fileCopy folder_name
uploadFile
daTag
else
echo "build failed"
fi
}
#日期变量tmp
tmp=$(date +%Y%-m%-d)
#目标文件夹
tmp1="AR_POC_2.0_"${tmp}
tmp2="ARVR_SW_ReleaseNote_"${tmp}
newFolder
#进入sunflower同步项目
cd /home/lenovosh/work/sunflower/
pwd
repo sync -j16 >> /home/lenovosh/work/sunflower/LINUX/android/all_log
cd /home/lenovosh/work/sunflower/LINUX/android
#选择编译版本
#选择编译lumus
if [ "$1" == "lumus" ]; then
folder_name=msm8996
cd /home/lenovosh/work/sunflower/LINUX/android
pwd
rm -rf out
source build/envsetup.sh
lunch msm8996-user
env >> /home/lenovosh/work/sunflower/LINUX/android/env_log
(make -j4)2>&1 | tee lumusbuild.log
if [ "$?" == "0" ]; then
logname=lumusbuild.log
VersionName=2Lumus_USER
bianyiOk logname VersionName
else
echo "make LumusVersion error!!!!"
fi
else
echo "first paramtes wrong!!!"
fi
#选择编译ned+
if [ "$2" == "nedp" ]; then
folder_name=nedplus
cd /home/lenovosh/work/sunflower/LINUX/android
rm -rf out
source build/envsetup.sh
lunch nedplus-user
(make -j4)2>&1 | tee nedpbuild.log
if [ "$?" == "0" ]; then
logname=nedpbuild.log
VersionName=1NDP_USER
bianyiOk logname VersionName
else
echo "make NedPVersion error!!!!"
fi
else
echo "second paramters wrong!!!"
fi
#选择编译lumusDebug
if [ "$3" == "lumusD" ]; then
folder_name=msm8996
cd /home/lenovosh/work/sunflower/LINUX/android
rm -rf out
source build/envsetup.sh
lunch msm8996-userdebug
(make -j4)2>&1 | tee lumusDebugbuild.log
if [ "$?" == "0" ]; then
logname=lumusDebugbuild.log
VersionName=4Lumus_Debug
bianyiOk logname VersionName
else
echo "make LumusDebugVersion error!!!!"
fi
else
echo "third paramtes wrong!!!"
fi
#选择编译ned+Debug
if [ "$4" == "nedpD" ]; then
folder_name=nedplus
cd /home/lenovosh/work/sunflower/LINUX/android
rm -rf out
source build/envsetup.sh
lunch nedplus-userdebug
(make -j4)2>&1 | tee nedpDebugbuild.log
if [ "$?" == "0" ]; then
logname=nedpDebugbuild.log
VersionName=3NDP_Debug
bianyiOk logname VersionName
else
echo "make LumusVersion error!!!!"
fi
else
echo "first paramtes wrong!!!"
fi
|
【shell】编译脚本的更多相关文章
- 一篇关于Maven项目的jar包Shell启动脚本
使用Maven作为项目jar包依赖的管理,常常会遇到命令行启动,笔者也是哥菜鸟,在做微服务,以及服务器端开发的过程中,常常会遇到项目的启动需要使用main方法,笔者潜心的研究了很多博客,发现大多写的都 ...
- FFmpeg示例程序合集-批量编译脚本
此前做了一系列有关FFmpeg的示例程序,组成了<最简单的FFmpeg示例程序合集>,其中包含了如下项目:simplest ffmpeg player: ...
- ffmpeg学习笔记-编译脚本
之前已经用他人的编译脚本对ffmpeg进行了成功编译,那么在裁剪ffmpeg的时候需要指定文件,这时候应该怎么编写编译脚本呢?本文目的在于说明ffmpeg编译脚本的编写 首先在ffmpeg的目录下新建 ...
- shell及脚本4——shell script
一.格式 1.1 开头 必须以 "# !/bin/bash" 开头,告诉系统这是一个bash shell脚本.注意#与!中间有空格. 二.语法 2.1 数值运算 可以用decla ...
- 阿里云服务器Linux CentOS安装配置(九)shell编译、打包、部署
阿里云服务器Linux CentOS安装配置(九)shell编译.打包.部署 1.查询当前目录以及子目录下所有的java文件,并显示查询结果 find . -name *.java -type f - ...
- 【Telnet】使用Telnet协议连接到远程Shell执行脚本
介绍 本文介绍如何通过Telnet协议连接到远程Shell,执行脚本,并获取执行结果: 相关文章: <[Jsch]使用SSH协议连接到远程Shell执行脚本>http://www.cnbl ...
- SCons - 简单而强大的项目编译脚本
N年前学的makefile,当时还勉强能写一些简单的工程编译,现在已经基本忘了.makefile确实编写复杂,而且平时也不是经常使用,容易忘记.偶识了scons,一切都变的简单了.最近研究了下scon ...
- shell自动计算脚本
shell自动计算脚本 #!/bin/bash echo $(($)) [root@bogon ~]# sh b.sh 123+123246 let用户声明这个操作是要计算,后者的效率更高 (expr ...
- Android系统编译脚本理解
android源码编译步骤: 1. repo sync 代码(下载代码) 2.start branch(用哪个分支,git相关) 3. 到根目录(android目录) $cd android/ 4. ...
- Shell菜单脚本
今天在这儿给大家分享一个我简单编写的Shell菜单脚本,傻瓜式的人机交互,人人都可以操作linux. #!/bin/sh #Shell菜单演示 function menu () { cat <& ...
随机推荐
- [ES6] Use ES6 Proxies
A JavaScript Proxy allows you to intercept operations performed on objects, arrays, or functions lik ...
- 开源 免费 java CMS - FreeCMS1.9 会员管理
项目地址:http://www.freeteam.cn/ 会员管理 1. 会员管理 从左側管理菜单点击会员管理进入. 2. 加入会员 在会员列表下方点击"加入"button. 填写 ...
- 删除vector中的重复数据(unique)
#include <iostream> #include <vector> #include <algorithm> #include <assert.h&g ...
- 网络异常与SQL Server事务
SQL Server事务遭遇网络异常时的处理机制浅析 SQL Server数据库中,如果应用程序正在执行一个事务的时候突然遭遇了网络异常,例如网络掉包,网络中断等,那么这个事务会怎么样? SQL Se ...
- [Ramda] Filter an Array Based on Multiple Predicates with Ramda's allPass Function
In this lesson, we'll filter a list of objects based on multiple conditions and we'll use Ramda's al ...
- 【STL】各容器成员对比表
http://www.cnblogs.com/fangyukuan/archive/2010/09/21/1832675.html Sequence containers Associative co ...
- [转至云风的博客]谈谈陌陌争霸在数据库方面踩过的坑( Redis 篇)
« 谈谈陌陌争霸在数据库方面踩过的坑(芒果篇) | 返回首页 | linode 广告时间 » 谈谈陌陌争霸在数据库方面踩过的坑( Redis 篇) 注:陌陌争霸的数据库部分我没有参与具体设计,只是参与 ...
- 西方教育骗局,终于明白精英和普通人的残酷差别!(该校流传着一个数字——4。即“4小时睡眠、4杯咖啡、GPA4.0”——要想获得满分为4分的成绩,每天只睡4个小时,困了就喝4大杯咖啡)
2018-02-14 00:00英国/私立学校 你不知道的是:西方教育通过一个宽松的过程,偷偷完成了社会分层. 1 “中国学生真是太苦了!”我的同学李女士总是发出这样的感慨. 李女士是我中学同学,在一 ...
- Web静态服务器
Web静态服务器 编程微刊 Web静态服务器-1-显示固定的页面 #coding=utf-8 import socket def handle_client(client_socket): " ...
- BZOJ 2190 SDOI 2008 仪仗队 线性欧拉筛
标题效果:有一个格子组件图,假设三个人在一条直线上,那么第一个人将不会看到第三人.现在,有一个人站在(1,1)在.我问他是否能看到n*n的人数的矩阵. 思考:如果你想站(1,1)这名男子看到了一个立场 ...