To be built
Tuesday, 27. February 2007, 17:04:32
Mandriva 的Build System整个系统运作方式是这样的:
1. 作为contributor,只有iurt一个这样一个客户端,你所需要的仅仅是在Mandriva的subversion服务器上操作你自己的package,包括source和spec。觉得可以发布到软件仓库了,用一个iurt命令,就可以把它推给build system。
2. Build system接到发布软件的命令后,从subversion服务器上取得相应的source和spec,把i586和x86-64两个二进制包的编译分派给不同的compilation robot来执行。
3. Compilation robot会从相应的仓库中(默认为最新的cooker)取得编译软件包所需的依赖关系(BuildRequires),用一个干净的root把它安装上,然后开始编译spec。
4. 在Compilation robot执行的过程中,Build system会随时加以监视,报告当前状态。比如依赖包已经全部安装,正在编译;又或者是已经编译完成之类。当两个架构都编译完成了,Build system会将这两个二进制包连同SRPM一起推入软件仓库的上传队列。
5. 软件仓库的机器人管理员会不断从队列中取得软件包,当它将软件包真的放入仓库的时候,会在subversion服务器上给相应的软件包打tag。由于subversion在这方面有独特的优势,你可以很方便的跟踪每次修改,以及每个release之间的修改。
在这一过程中,不管是哪里出了问题,就会直接报错。所谓报错,是指给contributor发出邮件,告知相应的错误,以及robot给出的记录。
这个系统的优势在于:
1. 允许多个人维护同一个软件包,而且只有当资深维护者认为合适的时候,软件包才向公众发布。但开发过程完全是透明的。
2. Contributor的所有changelog都被subversion本身所记录,而RPM的changelog直接取自subverison的日志,避免了changelog经常不知所云,大家也不知道有什么改进。
3. 软件仓库中的软件永远是可build的。因为以前经常是contributor同时上传SRPM和RPM,那么就可能造成别人无法rebuild SRPM成功。








Yuan Yijun # 1. March 2007, 06:54