本文假定:
APIURL=192.168.129.140:81
OBSUSER=zhanghui
WORKDIR=/home/zhanghui/obswork
1. 设定.oscrc中的username和password
osc -A APIURL ls
该命令会提示输入username和password。成功执行后,会列出obs服务器上所有的project。
备注:如果以前有包含其他obs服务器信息的.oscrc,执行该命令时会报”auth”错误。此时,备份并删除原来的~/.oscrc,然后重新执行osc命令。
2. 创建home:OBSUSER工程
obs系统管理员会事先给每个用户创建该工程.
每个用户都在自己的home:OBSUSER工程下做事情。
3. Checkout工程到本地并修改工程meta
cd WORKDIR;
osc -A APIURL checkout home:OBSUSER
cd home:OBSUSER
osc meta prj -e home:OBSUSER
下面的meta可供参考:
<projectname="home:zhanghui">
<title>zhanghui's Home Project</title>
<description/>
<person role="maintainer" userid="zhanghui"/>
<person role="bugowner" userid="zhanghui"/>
<repository name="MerDS_Core_armv7l">
<path repository="Core_armv7l"project="MerDS:Core:armv7l"/>
<arch>armv7el</arch>
</repository>
</project>
4. 指定本地编译时需要的build-root目录
mkdir WORKDIR/build-root
cd home:OBSUSER
osc config general build-root“WORKDIR/build-root/%(project)s-%(arch)s
5. 创建包
一个工程由众多的包(package)组成。
osc mkpac PACKAGENAME
6. 导入源代码到本地
导入源代码有两个办法:
如果有src.rpm,则可直接导入:
osc importsrcpkg src.rpm
如果没有src.rpm,则把.tar.gz和.spec以及.yaml文件拷贝到PACKAGENAME目录下。
7. 本地编译
cd PACKAGENAME
osc build --local-package --no-verifyMerDS_Core_armv7l armv7el
如果编译出错,修改后,可用
osc wipebinaries --all home:OBSUSERPACKAGENAME
来”clean”。
此后可重新测试osc build命令。
注意,仅仅当PACKAGENAME没有提交到obs服务器时,才需要使用”--local-package”选项。
8. 本地测试和修改
cd PACKAGENAME
osc chroot MerDS_Core_armv7l armv7el
进入chroot环境。在chroot环境下,可以进行程序测试。
在rpmbuild/BUILD目录下有源代码和Makefile等,可以直接再这里敲make命令。如果chroot环境中安装了vim等工具,可以在这里直接编译代码和makefile。
如果没有安装vim,也可退出chroot环境,在WORKDIR/build-root/armv7el-home:OBSUSER/home/abuild/rpmbuild/BUILD下面有包的源代码,可以编辑和修改。
9. 提交源代码到服务器
cd PACKAGENAME
osc add *
osc commit -m “message”
提交后,obs服务器会自动编译该包。