1

ビルドボットでパッケージをビルドするとき、私は現在、単一のビルドステップを持っています。

dpkg-buildpackage ...

これはうまく機能しますが、すべての出力がウォーターフォール内の1つのステップにまとめられるため、障害が構成中、ビルド中、またはパッケージ化中のいずれであるかを一目で確認するのは困難です。だから私は物事を構築するためのよりきめ細かい方法が欲しいのです。

たまたま、dhを使用してビルドしたいすべてのパッケージを知っています。つまり、ビルドステップを構成、ビルド、テスト、およびパッケージ化することができ、それぞれが次のコマンドのいずれかを実行したことを意味します。

dh build --until dh_auto_configure
dh build --until dh_auto_build
dh build --until dh_auto_test
dpkg-buildpackage -nc ...

(私はdhを使用してこれらを呼び出し、パッケージがオーバーライドを使用している場合にオーバーライドを実行できるようにします。問題のパッケージがオーバーライドを使用しているかどうかをbuildbotに認識させたくありません。)

ここまでは順調ですね。問題は、dhが--untilオプションを使用することを望まないことです。それは言う

"dh:--untilオプションは廃止されました。代わりにオーバーライドターゲットを使用してください。"

これは私を悲しくさせます...dhはこのユースケースを予期していないようです。

だから、今の質問:

そのようなことはどこで議論されるべきですか?

dhは実際に私のユースケースを別の方法で処理しますが、メモを見逃しましたか?

4

1 に答える 1

0

これはおそらくにとって素晴らしい仕事ではありませんdh。通常、これは実際にはdebian/rulesmakefileから使用することを目的としています。この--untilアプローチは、非推奨にならなかったとしても、おそらくかなり問題があったでしょう。

ただし、独自のスクリプトで実行するすべての手順を実行することで、ビルドプロセスを分割することもできdpkg-buildpackageます(マンページの上部にある要約に、必要なものがすべて記載されているはずです)。

しかし、それでも必ずしもプロセスの一部を分割できるconfigureとは限りません。これらのステップを分離したり、ユーザーが簡単に実行できるようにするために、ファイルは必要ありません。多くの人がそうしますが、そうでない人もいます。builddebian/rules

dpkg-buildpackageビルド環境、依存関係のチェック、ツリーの準備、偽のルートの呼び出しなどで微妙なことを台無しにしないように、各フェーズで可能な限り多くのことを実行することをお勧めします。-ncツリーをクリーンアップして最初からやり直すのを避けるために、最初のフェーズの後にフェーズを渡すだけです。フェーズが重なる場合(とのように)、すでに行った部分をスキップするのにdh十分賢いです。build*binary*

次のようなものを使用すると、ほとんどのパッケージに対して適切な構成/ビルドの分離を取得できます。

set -e
# check build deps, clean tree, make source debs
dpkg-buildpackage -S -us -uc

if grep '^configure:' debian/rules; then
    debian/rules configure
elif grep '^override_dh_auto_configure:' debian/rules; then
    debian/rules override_dh_auto_configure
elif grep '^%:' debian/rules; then
    dh_auto_configure
else
    : # oh well, it'll get done during the build phase if necessary
fi

# prepare environment, perform build
dpkg-buildpackage -nc -T build

# install stuff into temp dir, tar it up, make the deb file
dpkg-buildpackage -nc -b -us -uc

# remake the changes file, if you care, since right now it only
# includes the binaries
dpkg-genchanges > ../$whatever.changes

少なくとも、それは常に正しいパッケージを作成する必要があります。

于 2013-03-07T19:30:03.073 に答える