Chinaunix首页 | 论坛 | 博客
  • 博客访问: 210265
  • 博文数量: 145
  • 博客积分: 3000
  • 博客等级: 中校
  • 技术积分: 1720
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-14 18:42
文章分类

全部博文(145)

文章存档

2011年(1)

2009年(144)

我的朋友

分类: LINUX

2009-10-19 13:56:29

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) |
0

上一篇:shell: grep

下一篇:git-buildpackage

给主人留下些什么吧!~~