cc-autobuild-spec
词汇说明:
source 包:是指说有的 tar,bz,zip,gz 包(patch.gz 除外)
RPM 包:可安装到系统中使用的二进制包。扩展名:.rpm
SRPM 包:可用于重新生成 RPM 包的二进制包。扩展名:src.rpm
编译环境介绍:
存储服务器:192.168.28.1 (web,ftp,nfs,svn)
编译服务器:192.168.28.185
基础版本:CoCreate Linux sp2 20051118
| 存储服务器 | 编译服务器 | 备注 |
|---|---|---|
| Debian GNU/Lniux (sarge) | CoCreate sp2 (20051118) | 自动编译守候进程在 debian 中运行, 执行编译时,chroot 到 cocreate 中。 |
| /data/build-queue | /data/build-queue | mount -t nfs |
| /data/ftp | /data/data-nfs-1 | mount -t nfs |
存储服务器:
| 目录 | 说明 |
|---|---|
| /data/build-queue | building 正在编译中的版本 failure 编译失败的版本 success 编译成功的版本 waiting 等待编译的版本。 log build-queue 日志信息 .remote 远程标记文件 |
| /data/cc-build-tools | 编译工具 |
| /data/ftp/sp2 | 存放 sp2 rpm 包,source 包,iso |
| /data/ftp/sp2/RPM SRPM | 存放当前稳定版本的 RPM/SRPM 包 |
| /data/ftp/sp2/YYYYMMDD | /RPM /SRPM 每天生成的 rpm/srpm 包 |
| /data/ftp/sp2/sources | 基础版之后更新的 source 包 |
编译服务器:
| 目录 | 说明 |
|---|---|
| /data | 用于存放编译过程前后的所有数据 |
| /data/build-queue | 远程编译列队,192.168.28.1:/data/build-queue 通过 nfs 挂接, .local 本地标记文件 |
| /data/local-queue | 编译列队 building 正在编译中的版本 failure 编译失败的版本 success 编译成功的版本 |
| /data/build-root | 连接到 /usr/src/redhat, 存放编译中间过程数据的 |
| /data/build-source | 存放编译需要的 spec, source /specs-trunk spec 主干的本地拷贝 /sp2-20051118-sources sp2 基础版本的源码,按包名存 放,所有文件连接到编译目录下的 SOURCES 下 /sources 连接到 /data/data-nfs-1/sp2/sources |
| /data/data-nfs-1 | 192.168.28.1:/data/ftp 通过 nfs 挂接。 |
| /data/cc-build-tools | 编译工具 |
| 目录 | 说明 |
|---|---|
| branches/ | 存放各种分支 |
| tags/ | 存放各种主版本标记,比如:cocreate-sp2-20051118 |
| trunk/ | 存放 specs 内容 |
| vendor/ | 存放外部引入的库 |
rpm -pq --queryformat '%{NAME}' xxx.src.rpm 获得
每一个目录中可以包含如下文件:
| 文件名 | 说明 |
|---|---|
| 包名.spec | 从 src.rpm 解压出来的 spec 文件,名字与包名一致。 |
| *.patch | src.rpm 中附带的 patch 文件 |
| .patch.gz | gzip 格式的 patch |
| 普通文件 | src.rpm 中附带的普通文件,如单个的源码文件,图片等 |
| rpmbuild-options | 特殊文件,用于控制 rpmbuild 参数 |
目前只包含一行: target=arch1 arch2..., 用于指定包的目标平台,archN 之间使用空格分隔。
比如 kernel 的目标平台必须为 i686, 则此文件的内容为:target=i686 , 参见 http://192.168.28.1/repos/specs/trunk/kernel/rpmbuild-options , kernel 的编译命令:
rpmbuild --ba kernel.spec --target=i686
glibc 必须同时编译 i368, i686 两个平台的包,则此文件的内容为:target=i386 i686,参见 http://192.168.28.1/repos/specs/trunk/glibc/rpmbuild-options , glibc 的编译命令:
rpmbuild --ba glibc.spec --target=i386
rpmbuild --ba glibc.spec --target=i686
。。。
添加新的包,log 安如下格式写:
New {atk} spec for packages:
{atk-1.10.3}
{atk-devel-1.10.3}
说明:
{atk} 为 src.rpm 包名除去版本号的部分,可有如下命令得到:
rpm -pq --queryformat '%{NAME}' xxx.src.rpm
或者
rpm -q --queryformat '%{NAME}' --specfile xxx.spec
后续的行为由此 src.rpm生成的 rpm 包列表,每行一个,每一行前面空一格。可有如下命令得到:
rpm -pq --queryformat '%{NAME}-%{VERSION} ' xxx.src.rpm或者
rpm -q --queryformat '%{NAME}-%{VERSION} ' --specfile xxx.spec