2011-04-17 12 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