= cdbs (Common Debian Build System) の使い方 = あまりドキュメントが豊富ではないので,ここにメモしておく. 多くの人が言うように,Makefile を追っていけばだいたいわかるが, Makefile を追えないと使えないということでは,cdbs の意味がない. あるていどのドキュメントは必要である. == 典型的な使用例 == Makefile を使っているソフトの場合 (Depends: debhelper (>= 4.1.0)) {{{ #!/usr/bin/make -f include /usr/share/cdbs/1/class/makefile.mk include /usr/share/cdbs/1/rules/debhelper.mk }}} Autotools を使っているソフトの場合 {{{ #!/usr/bin/make -f include /usr/share/cdbs/1/rules/debhelper.mk include /usr/share/cdbs/1/class/autotools.mk }}} == 変数 == * DEB_DESTDIR * binary-install 時につかうパッケージのインストール先($(CURDIR)/debian/packagename) == メモ == * cdbs の Makefile は「1」とかいうディレクトリの下に置いてあるがこれはバージョン * 将来 API が変更になるかもしれないが,そうなったときはバージョンを上げて,古いバージョンを残しておく * 古いバージョンを読み込んでいるパッケージも問題なく動作する * 互換性をあまり気にせずにいろんな試みを導入できる * /usr/share/cdbs/1/rules/buildcore.mk が中心のファイル * 他のファイルを使うときに依存関係でかならず読み込まれる * これに対するフックでさまざまな機能を実装 * class * どのようにしてソフトをビルドするか * rule * どのようにしてパッケージを作るか * クラスの継承 * autotools.mk は makefile.mk を継承している * clean に追加するときは clean:: ターゲットに * :: をつけるときは既存のターゲットに追加のようだ == CDBS の問題点 == cdbs 0.4.49 では、autotools.mk を使ったときの configure 環境変数 (DEB_CONFIGURE_SCRIPT_ENV)に「CC="$(CC)" CXX="$(CXX)"」が含まれている。 これが指定されている場合、libtool がこの値を使ってしまうため、コンパイル時に 以下のようなエラーが出る。 {{{ libtool: compile: unable to infer tagged configuration libtool: compile: specify a tag with `--tag' }}} これを避けるためには、環境変数を指定せずに configure を起動する必要がある。 そのため、debian/rules で以下のように指定する。これは、 /usr/share/cdbs/1/class/autotools-vars.mk で指定されている値から、CC と CXX を省いたものである。 {{{ DEB_CONFIGURE_SCRIPT_ENV = CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" }}} == 参考リンク == * [http://sugi.nemui.org/doc/cdbs/cdbs-trans-1st.html CDBS 移行への 1st step]