CS4.1 RPM打包函数分析
shell举例说明:
脚本名称叫test.sh 入参三个: 1 2 3
运行test.sh 1 2 3后
$*为"1 2 3"(一起被引号包住)
$@为"1" "2" "3"(分别被包住)
$#为3(参数数量)
rpm包编译的脚本的所在目录/root/cs4.1/packaging/centos63,文件名称是package.sh
#!/bin/bash
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# 该脚本文件用于编译CloudStack 的rpm 包
#usage函数用于提供控制台输出帮助
function usage() {
echo ""
echo "usage: ./package.sh [-p|--pack] [-h|--help] [ARGS]"
echo ""
echo "The commonly used Arguments are:"
echo "oss|OSS To package with only redistributable libraries (default)"
echo "noredist|NOREDIST To package with non-redistributable libraries"
echo ""
echo "Examples: ./package.sh -p|--pack oss|OSS"
echo " ./package.sh -p|--pack noredist|NOREDIST"
echo " ./package.sh (Default OSS)"
exit 1
}
#rpm打包函数
function packaging() {
CWD=`pwd`
RPMDIR=$CWD/../../dist/rpmbuild
PACK_PROJECT=cloudstack
if [ -n "$1" ] ; then
DEFOSSNOSS="-D_ossnoss $packageval"
fi
VERSION=`(cd ../../; mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version) | grep '^[0-9]\.'`
if echo $VERSION | grep SNAPSHOT ; then
REALVER=`echo $VERSION | cut -d '-' -f 1`
DEFVER="-D_ver $REALVER"
DEFPRE="-D_prerelease 1"
DEFREL="-D_rel SNAPSHOT"
else
REALVER=`echo $VERSION`
DEFVER="-D_ver $REALVER"
DEFREL="-D_rel 1"
fi
mkdir -p $RPMDIR/SPECS
mkdir -p $RPMDIR/BUILD
mkdir -p $RPMDIR/RPMS
mkdir -p $RPMDIR/SRPMS
mkdir -p $RPMDIR/SOURCES/$PACK_PROJECT-$VERSION
(cd ../../; tar -c --exclude .git --exclude dist . | tar -C $RPMDIR/SOURCES/$PACK_PROJECT-$VERSION -x )
(cd $RPMDIR/SOURCES/; tar -czf $PACK_PROJECT-$VERSION.tgz $PACK_PROJECT-$VERSION)
cp cloud.spec $RPMDIR/SPECS
(cd $RPMDIR; rpmbuild --define "_topdir $RPMDIR" "${DEFVER}" "${DEFREL}" ${DEFPRE+"${DEFPRE}"} ${DEFOSSNOSS+"$DEFOSSNOSS"} -bb SPECS/cloud.spec)
exit
}
#如果前一个表达式小于后一个表达式,则结果为真
if [ $# -lt 1 ] ; then
packaging
elif [ $# -gt 0 ] ; then
SHORTOPTS="hp:"
LONGOPTS="help,pack:"
ARGS=$(getopt -s bash -u -a --options $SHORTOPTS --longoptions $LONGOPTS --name $0 -- "$@" )
eval set -- "$ARGS"
while [ $# -gt 0 ] ; do
case "$1" in
-h | --help)
usage
exit 0
;;
-p | --pack)
echo "Doing CloudStack Packaging ....."
packageval=$2
if [ "$packageval" == "oss" -o "$packageval" == "OSS" ] ; then
packaging
elif [ "$packageval" == "noredist" -o "$packageval" == "NOREDIST" ] ; then
packaging noredist
else
echo "Error: Incorrect value provided in package.sh script, Please see help ./package.sh --help|-h for more details."
exit 1
fi
;;
-)
echo "Unrecognized option..."
usage
exit 1
;;
*)
shift
;;
esac
done
else
echo "Incorrect choice. Nothing to do." >&2
echo "Please, execute ./package.sh --help for more help"
fi
CS4.1 RPM打包函数分析的更多相关文章
- linux 版本控制及rpm打包
版本控制 subversion:是一个自由/开源的版本控制系统,在subversion管理下,文件和目录可以超越时空subversion允许你数据恢复到早期版本,或者是检查数据修改历史许多人将版本控制 ...
- 使用rpm 打包开发的postgres extension
环境准备 安装依赖包 rpmdevtools rpm-build yum install -y rpm-build rpmdevtools 初始化rpm pacakge 项目 主要是rpm 打包的 ...
- 【centos7常用技巧】RPM打包
一.RPM打包的目的 1.当目标机中不存在编译环境时,可以先在本地环境中编译打包,然后直接在目标机中用rpm -ivh *.rpm安装即可. 2.当需要在目标机中安装多个软件或者增加多个文件时,可以将 ...
- Centos6_64 rpm打包实践
安装rpmbuild sudo yum install rpm-build 普通用户的配置 /home/you/rpmbuild/ 假设是要构建rpm的目录 先说说rpmbuild有什么用,给一个例子 ...
- MyEclipse调用Matlab打包函数
本文部分内容参考了http://www.360doc.com/content/15/1103/16/1180274_510463048.shtml 一.检查Java环境 对于已经装上JAVA环境的计算 ...
- split(),preg_split()与explode()函数分析与介
split(),preg_split()与explode()函数分析与介 发布时间:2013-06-01 18:32:45 来源:尔玉毕业设计 评论:0 点击:965 split()函数可以实 ...
- string函数分析
string函数分析string函数包含在string.c文件中,经常被C文件使用.1. strcpy函数原型: char* strcpy(char* str1,char* str2);函数功能: 把 ...
- start_amboot()函数分析
一.整体流程 start_amboot()函数是执行完start.S汇编文件后第一个C语言函数,完成的功能自然还是初始化的工作 . 1.全局变量指针r8设定,以及全局变量区清零 2.执行一些类初始化函 ...
- uboot的jumptable_init函数分析
一.函数说明 函数功能:安装系统函数指针 函数位置:common/exports.c 二.函数分析 void jumptable_init (void) { int i; gd->jt = (v ...
随机推荐
- c/c++程序设计涉及的一些知识点
c/c++程序设计涉及的一些知识点 c中的printf函数 main(){ int b = 3; int arr[]= {6,7,8,9,10}; int * ptr = arr; *(ptr++) ...
- ecmall类关系图(转)
- 自定义显示提示一段时间自动消失ShowMsgText控件
public partial class ShowMsgText : Label { public string TextMsg { get { return Text; } set { timer1 ...
- Eclipse Failed to load D:\android-sdk-windows\build-tools\27.0.3\lib\dx.jar
Failed to load D:\android-sdk-windows\build-tools\27.0.3\lib\dx.jar Unknown error: Unable to build: ...
- curl post数据
调用方式: $header = self::getHeader(); $data = self::postUrl($url, $header); /** * 组合Header * @return ty ...
- OkHttp使用方法
1.在app/build.gradle中添加依赖 compile 'com.squareup.okhttp3:okhttp:4.0.1' 2.创建OkHttpClient实例 OkHttpClient ...
- Mac运维安装软件
Maccrt软件 sudo spctl --master-disable 打开软件,复制到app,按照sn.txt输入即可 sudo spctl --master-enable crt快捷键crtl ...
- GITBOOK/HEXO TRAVIS GITHUB-PAGES 博客搭建
简介 这年头要是没有个博客都不好意思给别人说你是程序员,我用XX笔记呀,不行吗?不行,这玩意儿要么不能公开分享,要么公开分享要会员,现在到处都是开源,自己学到了东西都不能分享给需要帮助的人,真是伤心呀 ...
- win系统主机上的虚拟机NAT模式可修改3389端口做远程登录
当你只有一个公网IP的时候,那么这个IP基本上是要分给物理主机的,那么本机的虚拟机就只能选NAT网络模式了,那么想在外网直接远程虚拟机的话,修改虚拟机的远程登录端口(不修改也可以,主要是主机的3389 ...
- SQL Server 全文索引的硬伤
本文关键字:SQL Server全文索引.CONTAINS.FREETEXT.CONTAINSTABLE.FREETEXTTABLE等谓词. 想象这样一个场景:在DataBase_name.dbo.T ...
