私はDebianでApacheモジュールを編集しようとしています(厳密には、Raspbian Jessie-Liteでこれを行っています)、そして Debianビルド手順 に広く従っています:
$ mkdir -p ~/src/debian; cd ~/src/debian
$ apt-get source Apache2-bin
$ cd Apache2-2.4.10
$ debuild -b -uc -us
また、古いオリジナルのPiでは、ビルドプロセスに約1時間半かかります。どちらでも構いません。一度!しかし、ビルドプロセスはmake clean
を実行していると思います。そのため、単一のmod _ *。cファイルを少し編集した後、全体を再構築したいので、開発が遅くなります。
-dc
をdebuild
コマンドに追加しようとしましたが、何もビルドされませんでした。ターゲットのmod_ *。soファイルを削除して、再構築を「奨励」しようとしましたが、それでもできません。
更新2016-08-21:debuildコマンドに-ncを追加しても、モジュールは再コンパイルされません。そのコマンドからの出力は次のとおりです。
$ debuild -b -uc -us -nc
dpkg-buildpackage -rfakeroot -D -us -uc -b -nc
dpkg-buildpackage: source package Apache2
dpkg-buildpackage: source version 2.4.10-10+deb8u5
dpkg-buildpackage: source distribution jessie-security
dpkg-buildpackage: source changed by Salvatore Bonaccorso <[email protected]>
dpkg-source --before-build Apache2-2.4.10
dpkg-buildpackage: Host architecture armhf
debian/rules build
dh build --parallel --with autotools_dev
fakeroot debian/rules binary
dh binary --parallel --with autotools_dev
dpkg-genchanges -b >../Apache2_2.4.10-10+deb8u5_armhf.changes
dpkg-genchanges: binary-only upload (no source code included)
dpkg-source --after-build Apache2-2.4.10
dpkg-buildpackage: binary-only upload (no source included)
Now running lintian...
N: 16 tags overridden (1 error, 4 warnings, 11 info)
Finished running lintian.
-nc
オプションをdebuild
コマンドラインに追加します。ただし、ビルドシステムやパッケージに問題が発生する可能性があるため、準備してください。ただし、小さな修正の場合、通常は正常に機能します。
ただし、Apache2
ソースパッケージは(他の多くのパッケージと同様に)debhelperを使用するため、debhelperは完了したステップの独自のジャーナルをバイナリパッケージごとに個別のログファイルに保持するため、これだけでは不十分です。これらはdh_clean
で完全に削除できます。ただし、debhelperが必要な作業だけをやり直すには、関連する作業のみを切り捨てます。
sed -i '/^dh_auto_build$/Q' debian/Apache2-bin.debhelper.log
debuild -nc
を実行する前。
Debianディレクトリ内にルールファイルがあります。これは本質的にmakeファイルです。クリーニングに関するすべての指示を削除してから追加する場合
override_dh_clean:
そして、それに何も入れないでください(まったく)クリーニングは起こりません。これによりビルドの問題が発生する可能性がありますが、発生する可能性はありますが、注意してください。もう1つの方法は、何も変更せず、-jオプションを使用して並列ビルドを実行することです。 RaspberryPiに与える利点がわかりません。
ルールファイルは this のようになります。
私も同様の問題を抱えていました。 Scitedebianパッケージにはdebian/rules
:
...
BUILD_DATE="$(date --utc --date="@${SOURCE_DATE_Epoch:-$(date +%s)}" "+%b %d %Y %T")"
override CPPFLAGS += -DBUILD_DATE="\"$(BUILD_DATE)\""
%:
dh $@
override_dh_auto_build:
dh_auto_build --sourcedirectory=scintilla/gtk -- GTK3=1 $(BUILD_LUA)
dh_auto_build --sourcedirectory=scite/gtk -- gnomeprefix=/usr GTK3=1 $(BUILD_LUA)
....
基本的に、override_dh_auto_build
makeを呼び出します。これは、変更されたソースファイルを検出し、変更されたファイルのみを再構築します。ただし、debian/rules
セットBUILD_DATE
、 ランニング:
fakeroot debian/rules -j$(nproc) override_dh_auto_build
...定義としてBUILD_DATEを使用する一部のcppソースファイルで失敗します。解決策は、コマンドライン呼び出しでこの変数を明示的に指定することです。
fakeroot debian/rules -j$(nproc) CPPFLAGS+=-DBUILD_DATE="" override_dh_auto_build
...そしてコンパイルがパスします(追加のボーナスは、新しい.debが作成されないため、それを待つ必要がないことです)。基本的に、これは、.debをパッケージ化せずに、.so /.exeを提供する変更されたファイルの再構築プロセスのみを再実行するのに役立ちます。