by tangke 2009-10-20
svn-buildpackage的作用是在debian包基础上面添加svn的支持。
我开始的时候一直以为是在svn的基础上面添加debian的包支持,看来是弄错了,因为对于svn-buildpackage的包都必须是通过svn-inject处理过的,而且debian包需要的一些文件比如debian/control, debian/changelog等等在svn-buildpackage的包里面都没有发现,所以我断定应该是在debian包基础上面添加svn的支持。
1.svn-inject
我们可以使用svn-inject将debian的包文件代码添加到svn server中
具体使用办法:
svn-inject *.dsc svn://127.0.0.1:/pppoe_loongson
然后要求输入用户名和密码
然后进入/tmp
svn co svn://127.0.0.1:/pppoe_loongson
cd pppoe_loongson
看到里面有两个目录tags和trunk
trunk目录中存放着一些代码文件,如src,debian等目录
2.svn-upgrade
vi trunk/.svn/deb-layout
upsTagUrl=file:///home/tangke/Work/svn_repo/pppoeloongson/pppoeloongson
upsCurrentUrl=/tmp/pppoeloongson/pppoeloongson/
cd trunk
tangke@tangke-laptop:/tmp/pppoeloongson/pppoeloongson/trunk$ svn-upgrade -V "r2" ./
upsTagUrl: file:///home/tangke/Work/svn_repo/pppoeloongson/pppoeloongson
upsCurrentUrl: /tmp/pppoeloongson/pppoeloongson/
Complete layout information:
buildArea=/tmp/pppoeloongson/pppoeloongson/build-area
tagsDir=/tmp/pppoeloongson/pppoeloongson/tags
tagsUrl=file:///home/tangke/Work/svn_repos/pppoeloongson/pppoeloongson/tags
trunkDir=/tmp/pppoeloongson/pppoeloongson/trunk
trunkUrl=file:///home/tangke/Work/svn_repos/pppoeloongson/pppoeloongson/trunk
upsCurrentUrl=/tmp/pppoeloongson/pppoeloongson/
upsTagUrl=file:///home/tangke/Work/svn_repo/pppoeloongson/pppoeloongson
( cd "/tmp/pppoeloongson/pppoeloongson" ; tar c "trunk" ) | gzip -9 > "/tmp/tmp.eWtoui4YVK/pppoeloongson_r2.orig.tar.gz"
svn up
At revision 8.
Repository lookup, probing file:///home/tangke/Work/svn_repo/pppoeloongson/pppoeloongson/r2...
Repository lookup, probing file:///home/tangke/Work/svn_repo/pppoeloongson/pppoeloongson/0.6lemoteubuntu2...
Could not find the unmodified upstream version in
file:///home/tangke/Work/svn_repo/pppoeloongson/pppoeloongson/0.6lemoteubuntu2!
If you think that /tmp/pppoeloongson/pppoeloongson/ is the upstream source
which file:///home/tangke/Work/svn_repos/pppoeloongson/pppoeloongson/trunk is based on, run:
svn copy /tmp/pppoeloongson/pppoeloongson/ file:///home/tangke/Work/svn_repo/pppoeloongson/pppoeloongson/0.6lemoteubuntu2
Otherwise, please fix the headline of debian/changelog.
Process ended with code 1
然后我们回到pppoe_loongson目录
svn update
就可以看到0.6lemoteubuntu2就被更新到tags目录了
3.svn-buildpackage
然后出现一个printf错误,重新修改src/main.cpp
加入#include
再执行svn-buildpackage发现错误,好像需要和上游版本进行同步才可以,错误如下:
make[1]: Leaving directory `/tmp/pppoe_loongson/pppoeloongson/trunk'
dh_clean
E: Found unresolved issues:
M src/main.cpp
E: Resolve them manually before continuing
svn commit -m "test"
然后再svn-buildpackage
OK,执行成功
这样会多出来两个目录tarballs和build-area目录,
build-area目录中就存放了打好的deb包等等,以及一些dsc,tar.gz,deb包等文件,还有一个目录,里面也存放了一个代码系统,可能是一个用来编译的临时目录吧,这样就可以不破坏整个源码目录了.
这里需要注意的是:
1.必须是经过svn-inject上传的svn版本才可以进行svn-buildpackage,这是必须的。
因为这样可能符合svn-buildpackage打包结构吧,比如你在上传的时候没有tags或者trunk目录的话,可能就会出错。
2.svn-buildpackage命令必须在trunk目录下面执行。
3.svn-upgrade
cd trunk目录
svn-upgrade -V "r46" ./
tangke@tangke-laptop:/tmp/pppoe_loongson/pppoeloongson/trunk$ svn-upgrade -V "r46" ./
Complete layout information:
buildArea=/tmp/pppoe_loongson/pppoeloongson/build-area
tagsDir=/tmp/pppoe_loongson/pppoeloongson/tags
tagsUrl=svn://172.16.0.21:/tools_loongson/pppoe_loongson/pppoeloongson/tags
trunkDir=/tmp/pppoe_loongson/pppoeloongson/trunk
trunkUrl=svn://172.16.0.21:/tools_loongson/pppoe_loongson/pppoeloongson/trunk
W: upsTagUrl not specified anywhere, looking in the local repository...
Looking in SVN for: svn://172.16.0.21:/tools_loongson/pppoe_loongson/pppoeloongson/branches/upstream svn://172.16.0.21:/tools_loongson/pppoe_loongson/pppoeloongson/trunk/../branches/upstream svn://172.16.0.21:/tools_loongson/pppoe_loongson/pppoeloongson/trunk/../../branches/pppoeloongson/upstream svn://172.16.0.21:/tools_loongson/pppoe_loongson/pppoeloongson/trunk/../../branches/upstream/pppoeloongson
Repository lookup, probing svn://172.16.0.21:/tools_loongson/pppoe_loongson/pppoeloongson/branches/upstream...
Failed, assuming non-existent directory...Looking in SVN for: svn://172.16.0.21:/tools_loongson/pppoe_loongson/pppoeloongson/branches/upstream svn://172.16.0.21:/tools_loongson/pppoe_loongson/pppoeloongson/trunk/../branches/upstream svn://172.16.0.21:/tools_loongson/pppoe_loongson/pppoeloongson/trunk/../../branches/pppoeloongson/upstream svn://172.16.0.21:/tools_loongson/pppoe_loongson/pppoeloongson/trunk/../../branches/upstream/pppoeloongson
Repository lookup, probing svn://172.16.0.21:/tools_loongson/pppoe_loongson/pppoeloongson/branches/upstream...
Failed, assuming non-existent directory...Looking in SVN for: svn://172.16.0.21:/tools_loongson/pppoe_loongson/pppoeloongson/branches/upstream svn://172.16.0.21:/tools_loongson/pppoe_loongson/pppoeloongson/trunk/../branches/upstream svn://172.16.0.21:/tools_loongson/pppoe_loongson/pppoeloongson/trunk/../../branches/pppoeloongson/upstream svn://172.16.0.21:/tools_loongson/pppoe_loongson/pppoeloongson/trunk/../../branches/upstream/pppoeloongson
Repository lookup, probing svn://172.16.0.21:/tools_loongson/pppoe_loongson/branches/pppoeloongson/upstream...
Failed, assuming non-existent directory...Looking in SVN for: svn://172.16.0.21:/tools_loongson/pppoe_loongson/pppoeloongson/branches/upstream svn://172.16.0.21:/tools_loongson/pppoe_loongson/pppoeloongson/trunk/../branches/upstream svn://172.16.0.21:/tools_loongson/pppoe_loongson/pppoeloongson/trunk/../../branches/pppoeloongson/upstream svn://172.16.0.21:/tools_loongson/pppoe_loongson/pppoeloongson/trunk/../../branches/upstream/pppoeloongson
Repository lookup, probing svn://172.16.0.21:/tools_loongson/pppoe_loongson/branches/upstream/pppoeloongson...
upsTagUrl setting is required, but could not be found in /tmp/pppoe_loongson/pppoeloongson/trunk/.svn/deb-layout or repository tree.
Process ended with code 0
以上问题主要是因为没有设置upsTagUrl和upsCurrentUrl这两个环境变量,可以按照上面的在.svn/deb-layout里面添加
4.svn-buildpackage --svn-tag
To build a package and make a tag for release:
出现错误:
dh_clean
UNRELEASED tag found - you don't want to release with it, do you?
Aborting now, set $FORCETAG to ignore it.
export FORCETAG=1
svn-buildpackage --svn-tag
会自动在debian/changelog里面版本增加
当然我们可以使用
svn-buildpackage --svn-tag --svn-noautodch
这样changelog就不会自动增加了
参考文档:
阅读(259) | 评论(0) | 转发(0) |