dm368 ipnc3.0环境搭建脚本
前言
为了方便其他人搭建dm368 ipnc3.0环境,我写了个脚本,执行脚本就可以自动搭建好环境了,绝对的傻瓜操作了,不过有一个地方让我很郁闷,那就是在用sed替换掉某段内容的时候(143行--156行),替换的文本有很多行且里面某些行必须要tab开头(makefile要求,这里看不出,上传的问题),在我写的时候发现我必须把替换的内容靠在最左边,如果我想放到右边写,替换后内容就会包含左边的那些空格。放在最左边导致一点也不美观了,谁有更好的方法可以告诉我哈,先谢谢了! (注意:我的代码其实是有对齐的,放上来就全部都靠左了,看不出我上面说的sed的问题了,实际情况如下图:sed替换的内容放到了最左边, 但我想要把sed替换的内容的每行靠右些,与上面的对齐,不知道我描述清楚了没,呵呵。 还有,如果有人想用这个脚本的话,请自己再测试下,因为我怕上传导致某些tab啊空格啊变了,我不怎么写脚本,所以有些地方可能有更好的方法实现,希望大家提出来,一起学习下,谢谢!)
注: 内部有一些对特定文件的处理,主要是因为我的环境是fedora14,make的版本较高和我认为ipnc3.0原始文件里面有个别文件有些小bug及针对于我们自己的设备的一些小的修改。

#!/bin/sh
#this script is used for configuration of the dm368 3.0 ipnc environment ----rongp
#date: 2012/3/24
PID=$$
BashId=`pidof bash`
DEFAULT_INSTALL_PATH=/home/kez/dm368_3.0_ipnc
INSTALL_PATH=$DEFAULT_INSTALL_PATH
DEFAULT_MV_DIR=/opt/mv_pro_5.0
MV_DIR=$DEFAULT_MV_DIR
MVTOOL_DIR=$MV_DIR/montavista/pro/devkit/arm/v5t_le
function help() {
clear
echo -e "\
\n\n\nI'm assume that : \n\
\tThe default installation path is \"$DEFAULT_INSTALL_PATH\" \n\
and mvtool path is \"$MV_DIR\". if not, please input 'n' or \n\
'N' to exit and use -i option with installation Path or -m option \n\
with Mvtool path to try again! the partion of installtion path should \n\
have 2G can use and the partion of mvtool path should 2G can use.\n"
read -p "continue ?(Y[y]/N[n]): " Yn #-t 3
if [ "$Yn" == "Y" ] || [ "$Yn" == "y" ]; then
return 0
else
return 254
fi
}
function handler_input() {
unset OPTIND
local name=
local ret=0
while getopts "i:m:" name; do
case $name in
i)
INSTALL_PATH=$OPTARG
# echo "get option $INSTALL_PATH"
ret=$(($ret+1))
;;
m)
MV_DIR=$OPTARG
# echo "get option $MVTOOL_DIR"
ret=$(($ret+1))
;;
?)
echo "Input Error!!! Argument invalid!!!"
return 255 #means error occured
;;
esac
done
return $ret
}
function clean_package() {
find "$INSTALL_PATH" -name *.tar.gz | xargs -i rm -rf {} >/dev/null 2>&1
find "$INSTALL_PATH" -name *.bin | xargs -i rm -rf {} >/dev/null 2>&1
echo -e "clean *tar.gz ok, you can remove IPNC_RDK_DM36x_Release_3.0.0 \nfrom shared zone to other disk or partion to reduce virtual disk size"
}
function check_exec_method() {
for i in $BashId
do
if [ "$PID" == "$i" ]; then
PID=""
break;
fi
done
if [ "$PID" != "" ]; then
echo "Error!!! Usage: use source to excute the script, Don't use sh srcipt or ./srcipt!!!eg: source init.sh"
exit 1
fi
}
check_exec_method
handler_input $@
ret=$?
if [ "$ret" != "255" ]; then
help
ret=$?
fi
if [ $((ret)) -lt 250 ]; then
if [ "$INSTALL_PATH" == "$DEFAULT_INSTALL_PATH" ]; then
mkdir -p "$INSTALL_PATH" >/dev/null 2>&1
fi
if [ "$MV_DIR" == "$DEFAULT_MV_DIR" ]; then
mkdir -p "$MV_DIR" >/dev/null 2>&1
fi
[ ! -d "$INSTALL_PATH" ] || [ ! -d "$MV_DIR" ] && { ret=253; echo "Input Error!!! $INSTALL_PATH or $MVTOOL_DIR is not a Dir!!!"; }
fi
if [ $((ret)) -lt 250 ]; then
clear
echo "===================================================="
echo "Please wait, it will spend about 3-6 minutes!"
echo "Starting Decompress...Please wait!"
if [ ! -e "$MVTOOL_DIR" ];then
tar -zkxf Mvtool/mvltools5_0_0801921_update.tar.gz -C $MV_DIR
[ $? ] && echo "Decompress mvltools5_0_0801921_update.tar.gz Ok..."
tar -zkxf Mvtool/DaVinciLSP_02_10_00_14.tar.gz -C $MV_DIR
[ $? ] && echo "Decompress DaVinciLSP_02_10_00_14.tar.gz Ok..."
else
echo -e "echo $MVTOOL_DIR already exists, skip decompress Mvtool"
fi
tar -zkxf Private/PrivateTI_IPNC_DM36x_3.0.0.tar.gz -C $INSTALL_PATH
[ $? ] && echo "Decompress PrivateTI_IPNC_DM36x_3.0.0.tar.gz Ok..."
tar -zkxf Open/OpenSrc_IPNC_DM36x_3.0.0.tar.gz -C $INSTALL_PATH
[ $? ] && echo "Decompress OpenSrc_IPNC_DM36x_3.0.0.tar.gz Ok..."
tar -zkxf Appro/Appro_IPNC_DM36x_3.0.0.tar.gz -C $INSTALL_PATH
[ $? ] && echo "Decompress Appro_IPNC_DM36x_3.0.0.tar.gz Ok..."
cd $INSTALL_PATH >/dev/null
mkdir ipnc_psp
mkdir -p ipnc_rdk/tftp
mkdir -p ipnc_rdk/target
tar -zkxf $INSTALL_PATH/Application/src/dvsdk_ipnctools_dm36x_3.0.0.tar.gz -C $INSTALL_PATH
[ $? ] && echo "Decompress dvsdk_ipnctools_dm36x_3.0.0.tar.gz Ok..."
tar -zkxf $INSTALL_PATH/Application/src/lsp_ipnc_dm36x_3.0.0.tar.gz -C $INSTALL_PATH/ipnc_psp
[ $? ] && echo "Decompress lsp_ipnc_dm36x_3.0.0.tar.gz Ok..."
tar -zkxf $INSTALL_PATH/Utils/src/u-boot-1.3.4_ipnc_dm36x_2.0.0.tar.gz -C $INSTALL_PATH/ipnc_psp
[ $? ] && echo "Decompress u-boot-1.3.4_ipnc_dm36x_2.0.0.tar.gz Ok..."
ls $INSTALL_PATH/Application/src/ipnc_app_dm36x_* | xargs -i tar -zkxf {} -C $INSTALL_PATH/ipnc_rdk
[ $? ] && echo "Decompress ipnc_app_dm36x_* Ok..."
ls $INSTALL_PATH/Utils/filesys/* | xargs -i tar -zkxf {} -C $INSTALL_PATH/ipnc_rdk/target
[ $? ] && echo "Decompress filesys_ipnc_dm36x.tar.gz squashfs.tar.gz Ok..."
echo "Decompress Successed..."
cd - >/dev/null
chmod 777 -R $INSTALL_PATH/ipnc_rdk
cd $INSTALL_PATH/ipnc_rdk >/dev/null
sed -i 's/^id:5/id:3/g' target/filesys/etc/inittab
sed -i 's/\(cpu_mips [<=>]\{1,2\} \)150/\1145/g' ipnc_app/sys_server/src/checkPlatform.c
sed -in -e '/config %config:/,+2c\ \
config: scripts_basic outputmakefile FORCE \
$(Q)mkdir -p include/linux include/config \
$(Q)$(MAKE) $(build)=scripts/kconfig $@ \
%config: scripts_basic outputmakefile FORCE \
$(Q)mkdir -p include/linux include/config \
$(Q)$(MAKE) $(build)=scripts/kconfig $@' \
-e '/\/ %\/: prepare scripts FORCE/,+2c\ \
/: prepare scripts FORCE \
$(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \\\
$(build)=$(build-dir) \
%/: prepare scripts FORCE \
$(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \\\
$(build)=$(build-dir)' ../ipnc_psp/ti-davinci/Makefile
sed -i -e "s#\(MVTOOL_DIR.*:= \).*#\1$MVTOOL_DIR#" -e "s#\(IPNC_INSTALL_DIR.*:= \).*#\1$INSTALL_PATH#" Rules.make
sed -i '/^squashfs/{n;/.*/d;};' Makefile
read -p "If you want to clean some *tar.gz which are no need any more? (Y[y]/N[n]): " Yn
if [ "$Yn" == "Y" ] || [ "$Yn" == "y" ]; then
clean_package
fi
echo "export PATH=/opt/mv_pro_5.0/montavista/pro/devkit/arm/v5t_le/bin:/opt/mv_pro_5.0/montavista/pro/bin:/opt/mv_pro_5.0/montavista/common/bin:$PATH" >> ~/.bash_profile && source ~/.bash_profile
echo -e "Enter $INSTALL_PATH/ipnc_rdk successed.\nyou can use \"make sysall\" to rebuild entire System."\
"\nand use \"make squashfs\" to copy File system to tftp folder."\
"\nother options you can refer to Users_Guide_IPNC_DM36x.pdf"
echo "======================================================"
fi
完!
2012年5月
dm368 ipnc3.0环境搭建脚本的更多相关文章
- 菜鸟学自动化测试(八)----selenium 2.0环境搭建(基于maven)
菜鸟学自动化测试(八)----selenium 2.0环境搭建(基于maven) 2012-02-04 13:11 by 虫师, 11419 阅读, 5 评论, 收藏, 编辑 之前我就讲过一种方试来搭 ...
- XNA 4.0 环境搭建和 Hello World,Windows Phone 游戏开发
XNA 4.0 环境搭建和 Hello World,Windows Phone 游戏开发 使用 Scene 类在 XNA 中创建不同的场景(八) 摘要: 平方已经开发了一些 Windows Phone ...
- ubantu16.04+mxnet +opencv+cuda8.0 环境搭建
ubantu16.04+mxnet +opencv+cuda8.0 环境搭建 建议:环境搭建完成之后,不要更新系统(内核) 转载请注明出处: 微微苏荷 一 我的安装环境 系统:ubuntu16.04 ...
- (win10 64位系统中)Visual Studio 2015+OpenCV 3.3.0环境搭建,100%成功
(win10 64位系统中)Visual Studio 2015+OpenCV 3.3.0环境搭建,100%成功 1.下载opencv 官网http://opencv.org/下载windows版Op ...
- [转]OPENCV3.3+CUDA9.0 环境搭建若干错误总结
编译OpenCV设计启用OpenGL三维可视化支持和启用GPU CUDA并行加速处理的基本知识: 1.从2.4.2版本开始,OpenCV在可视化窗口中支持OpenGL,这就意味着在OpenCV中可以轻 ...
- ELK6.0环境搭建及配置
ELK环境搭建及配置 ElasticSearch在5.x后的安装和插件的官方执行更好了,head插件官方默认集成在kibana的dev tools里,支持rpm包方式安装,x-pack安装后支持权限及 ...
- 区块链学习——HyperLedger-Fabric v1.0环境搭建详细教程
相对与v0.6版本来说,1.0版本改变较大,此处不多说,只是将小白自己搭建1.0环境的过程分享给大家.希望对大家能有所帮助! 这一篇可能对前面的环境搭建会写的有些粗略,如有疑问,可阅读上一篇V0.6版 ...
- vs2012+qt5.2.0环境搭建/vs2013 + qt5.3.2 环境搭建
分类: Windows Qt2014-01-17 00:50 15434人阅读 评论(18) 收藏 举报 此文章已作废,请参考我的新文章: vs2013 + qt5.3.2 环境搭建 ( http:/ ...
- heritrix 3.2.0 -- 环境搭建
heritrix作为一个比较经典的开源爬虫,写这篇文章目的是因为,3.X之后的heritrix的介绍以及配置的文章比较少了. heritrix 3.x 以后使用maven 2配置jar包引用,但是总是 ...
随机推荐
- Android 水波纹点击效果(Ripple Effect)
上周Android发布了Android M的Preview版本.但想必Android5.0很多炫酷效果,多数开发者还没有使用过,那更不要说广大用户了. 本文介绍的是Android5.0中其中一个炫酷的 ...
- [您有新的未分配科技点]数位dp:从懵X到板子(例题:HDU2089 不要62)
数位dp主要用来处理一系列需要数数的问题,一般套路为“求[l,r]区间内满足要求的数/数位的个数” 要求五花八门……比如“不出现某个数字序列”,“某种数的出现次数”等等…… 面对这种数数题,暴力的想法 ...
- Win10 安装 Linux 子系统
Win10 安装 Linux 子系统 因为最近要使用Linux搭服务器,但是用远程的话延迟很烦,用双系统切换很麻烦,用虚拟机又会有点卡,刚好Windows10最近更新了正式版的WSL(windows下 ...
- 【洛谷3674】小清新人渣的本愿(莫队,bitset)
[洛谷3674]小清新人渣的本愿(莫队,bitset) 题面 洛谷,自己去看去,太长了 题解 很显然的莫队. 但是怎么查询那几个询问. 对于询问乘积,显然可以暴力枚举因数(反正加起来也是\(O(n\s ...
- 洛谷 3201 [HNOI2009]梦幻布丁 解题报告
3201 [HNOI2009]梦幻布丁 题目描述 \(N\)个布丁摆成一行,进行\(M\)次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色.例如颜色分别为\(1,2,2 ...
- Linux系统启动详解(一)
本篇主要以Centos为例,讲述整个Linux系统启动过程,包括了grub引导,initramfs流程,/sbin/init执行rc.sysinit及rc的大体流程. 另外,本篇有一个实例来说明,将整 ...
- Hbase(四) 过滤器查询
引言:过滤器的类型很多,但是可以分为两大类——比较过滤器,专用过滤器过滤器的作用是在服务端判断数据是否满足条件,然后只将满足条件的数据返回给客户端: 一.hbase过滤器的分类 1.比较过滤器 行键过 ...
- mysql日志配置
mysql在错误排查,优化的时候会用到日志 有错误日志,查询日志,慢查询日志,二进制日志 先找到日志文件,linux 一般在/etc/my.cnf中 打开看到 log-error=/webserver ...
- 徒手创建一个 jsp 项目
在开始之前,先回顾一下 jsp 和 servlet,jsp 和 servlet 本质是一样的,因为 jsp 最终必须编译成 servlet 才能运行. 因为 jsp 的那些标签 jvm 是无法直接运行 ...
- 新生代Eden与两个Survivor区的解释
文章出处:http://ifeve.com/jvm-yong-generation/ 聊聊JVM的年轻代 1.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分 ...