将源代码一步打包成deb包的脚本
来源:互联网 发布:知乎ipad客户端 编辑:程序博客网 时间:2024/05/17 15:41
#!/bin/basherror_check(){ if [ $1 -ne 0 ];then echo "$2" exit $1 fi}copy_file(){ cp -f -a -v $1 $2 error_check $? "$1 not found"}rm_file(){ for file in $@;do if [ -e "$file" ];then rm -vf $file fi done}rm_dir(){ for dir in $@;do if [ -d "$dir" ];then rm -vrf $dir fi done}show_opts(){ echo "deb-build is help for generating deb packages" echo "基本功能:" echo " create create a debian rule when building package for the first time" echo " build build packages" echo " clean clean all generated files" echo "参数详细说明:" echo " -p,--project specify what the package name is" echo " -s,--srcdir specify where the source code is" echo " -v,--version specify the version number,if not set,it will get it from changlog" echo " -n,-r,--release set the release number,if not set,it will get it from changelog" echo " -h,--help show helps"}version_gt(){ test "$(echo "$@" | tr " " "\n" | sort -V | head -n 1)" != "$1"}version_ge(){ test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" == "$1"}parse_changelog(){ ver=$(dpkg-parsechangelog -S $1 -l ${SRC_DIR}/debian/changelog) if [ $? -ne 0 ];then echo "parse changelog failed" exit 1 fi echo "$ver"}get_check_config(){ if [ ! -d "${SRC_DIR}" ];then echo "$SRC_DIR not exist" exit 1 fi BASE_NAME=$(parse_changelog source) error_check $? "not run create to generate debian" echo "targetname=$BASE_NAME" version=$(parse_changelog version) echo "$version" if [ -z "$VERSION" ];then VERSION=`echo $version|awk '{split($_,a,"-");print a[1]}'` fi if [ -z "$RELEASE" ];then RELEASE=`echo $version|awk '{split($_,a,"-");print a[2]}'` fi if version_gt $version ${VERSION}-${RELEASE};then VERSION=`echo $version|awk '{split($_,a,"-");print a[1]}'` RELEASE=`echo $version|awk '{split($_,a,"-");print a[2]}'` fi echo "Version = $VERSION" echo "Release=$RELEASE" CODE_DIR="${BASE_NAME}-${VERSION}"}parse_opts(){ shift ARGS=`getopt -o h:s:v:n:r:p: -l help:,srcdir:,version:,release:,projectname: -- "$@"` eval set -- "$ARGS" while true do case $1 in -p|--projectname) BASE_NAME=$2 echo "BASE_NAME=$BASE_NAME" shift 2 ;; -s|--srcdir) SRC_DIR=$2 echo "SRC_DIR=$SRC_DIR" shift 2 ;; -v|--version) VERSION=$2 echo "VERSION=$VERSION" shift 2 ;; -n|-r|--release) RELEASE=$2 echo "RELEASE=$RELEASE" shift 2 ;; --) shift break ;; -h|--help) show_opts exit 0 ;; *) echo "error parameter $1 $2" exit ;; esac done get_check_config}BASE_DIR=$(cd `dirname $0`;pwd)BUILD_DIR=$(pwd)BASE_NAME=""SRC_DIR=""VERSION=""RELEASE=0CODE_DIR=""case $1 in create) parse_opts "$@" mkdir -p $CODE_DIR cd $CODE_DIR dh_make --createorig -s -t ../$SRC_DIR vi debian/rules cp -r debian ../$SRC_DIR/ cd .. echo -e "\033[31;44;1mplease make sure the rules in $CODE_DIR/debian is valid!!\033[0m" echo "-------all done--------" exit 0 ;; build) parse_opts "$@" ;; clean) parse_opts "$@" rm_dir $CODE_DIR/* rm_file *.buildinfo rm_file *.changes rm_file *.deb rm_file *.xz rm_file *.gz rm_file *.dsc exit 0 ;; *|--help) show_opts exit 0 ;;esaccur=$(parse_changelog version)if version_gt "${VERSION}-${RELEASE}" "$cur";then cd $SRC_DIR dch -v "${VERSION}-${RELEASE}" error_check $? "dch exit" cd - VERSION=$(parse_changelog version|awk '{split($1,a,"-");print a[1]}') RELEASE=$(parse_changelog version|awk '{split($1,a,"-");print a[2]}')fiCODE_DIR="${BASE_NAME}-${VERSION}"if [ -d "${CODE_DIR}" ];then rm -rf ${CODE_DIR}/*else mkdir -p ${CODE_DIR}ficp -r ${SRC_DIR}/debian ${CODE_DIR}/cd ${CODE_DIR}arch=`uname -m`if [ "$arch"x = "x86_64"x ];then echo "install elf-packer" ../$SRC_DIR/elf-packer/elf-packer.sh install error_check $? "exit elf-packer.sh install"fiexport QT_SELECT=qt5export SOURCE_DIR=../$SRC_DIRcd ..tar -czf "${BASE_NAME}_${VERSION}.orig.tar.gz" "$SRC_DIR"cd ${CODE_DIR}dpkg-buildpackage -us -ucif [ $? -ne 0 ];then echo "dpkg-buildpackage exit" unset SOURCE_DIR exit $?fiunset SOURCE_DIRecho "------all done-------"
阅读全文
0 0
- 将源代码一步打包成deb包的脚本
- Ubuntu下将现有的文件打包成deb包
- Ubuntu下将现有的文件打包成deb包
- Ubuntu下将现有的文件打包成deb包
- ubuntu下将可执行程序打包成deb包
- 将KEEL源代码打包成jar包
- deb包 打包过程
- deb包 打包过程
- deb 打包解包
- 如何将app打包成deb包供越狱iphone在cydia源上下载安装
- 如何将app打包成deb包供越狱iphone在cydia源上下载安装
- 如何将app打包成deb包供越狱iphone在cydia源上下载安装
- 将tomcat源码打包为源代码包
- deb包解压跟打包
- 如何将 .rpm 套件包转换成 .deb 套件包?
- deb包的格式
- Deb包的制作
- deb包的制作
- 白夜追凶 :手 Q 图片的显示和发送逻辑
- 决策树
- 关于服务器的运行寿命 你应该知道这些
- angular.js:14199 Error: [$rootScope:inprog]的成因及解决办法
- C语言中的位操作符的应用
- 将源代码一步打包成deb包的脚本
- 泛型
- 复制数组改良
- 20171027Link
- 欢迎使用CSDN-markdown编辑器
- PL/SQL
- Codeforces 711C 树DP 解题报告
- c的多种用法
- instcat.sql sqlserver数据链路 sqlserver2008连接2000报错