2011-04-17 14 views
3

我打包了一个使用DistUtilsExtra的Python软件。在我的debian/rules中运行python setup.py install时,DistUtilsExtra会自动重新编译翻译模板.pot文件并直接在源存储库中对其进行更新。因此,我第二次执行打包命令(与debuildpdebuild一起),自动补丁文件被创建(因为它认为我手动更新了.pot文件)。这个补丁在Debian软件包中显然是不需要的,我正在寻找一种不生成它的方法。如何在Debian打包时访问原始tarball?

一个解决方案是让DistUtilsExtra不更改源存储库中的.pot文件,但目前这是不可能的。因此,我正在测试另一种解决方案:在debian/rules创建为clean指令提取从.orig.tar.gz压缩包的原始文件.POT的覆盖,这样做:

override_dh_clean: 
    tar -zxvf ../<projname>_*.orig.tar.gz --wildcards --strip-components=1 <projname>-*/po/<projname>.pot 
    dh_clean 

但是有人告诉我在Debian的导师邮件列表,原始压缩包不保证位于../。因此,我想知道是否有办法可靠地访问debian/rules中的.orig.tar.gz tarball,就像包含其位置的“变量”一样?

回答

2

这不是严格意义上的回答如何在Debian打包时访问原始tarball?,但这就是我如何解决provoqued我的问题,所以这里是:

我发现了一个有趣的blog post by Raphaël Hertzog,解释如何在构建Debian软件包时忽略自动生成的文件。这是通过在debian/source/options文件中将--extend-diff-ignore选项传递给dpkg-source来完成的。因此,我从override_dh_clean中删除了建议的命令,并且不再创建不需要的自动补丁。

0

自动生成文件的常用解决方案是在清理期间删除它们。

+0

tumbleweed,.pot文件已存在于源文件中,打包过程会对其进行更新。因此,在清理过程中删除它们实际上是对源文件的另一种修改。我试图做的是通过复制将该文件恢复到其原始状态。然而,使用'--extend-diff-ignore'选项可以让我指定要忽略哪个自动生成的文件,实际上解决了这个问题。看到我对这个问题提出的解决方案(我并没有将其标记为公认的,因为它实际上并没有回答这个问题,只是提出了解决方法) – Emilien 2012-01-16 12:51:35

+0

不,dpkg-source会忽略删除,正是出于这种原因。 – tumbleweed 2012-01-16 22:09:17