吉野与志
仁
![]() |
普段 Debian を使っている皆さんはご存知とは思いますが、 近々デフォルトになる予定で squeeze の release goal である Debian ソースパッケージのフォーマット “3.0 (quilt)” の復習をしたいと思います。
まずは “3.0 (quilt)” の前に、 いままで一般に使われてきたフォーマット (“1.0”) を簡単にまとめます。
1.0では、 ソースパッケージは以下の 3 ファイルで構成されます。
なお、 正確には1.0は 2 種類あって、 上の通常のパッケージのほかに “Debian native な” パッケージがあります。 Debian native パッケージは次の 2 ファイルで構成されます。
ここで、 *.orig.tar.gzには、 通常上流の元のソースツリーが含まれます。 *.diff.gzには、 ソースパッケージからパッ ケ ー ジ な ど を ビ ル ド す る の に 必 要 な ス ク リ プ ト な ど が 入 った debian/ディレクトリや、 上流のソースに対するパッケージメン テナの変更が含まれます。
と説明してきましたが、 このファイル構成には
などの問題点があります。
そこで、 さまざまな方法が検討されました。
1 は、 これにより上流が bz2 で配布していても gz に圧縮し直さなければならなかったりしていました。 *.orig.tar.gzの 中身が上流のアーカイブの実体である、 といった方法なども(ちょっと無駄ですが...) 使われてきました。 この方法はビルド時 にその tarball を展開して作業します。 cdbs にはこの方法へのサポートもあります。
2 は 1 と同様の方法で複数の tarball が入った*.orig.tar.gzを用意したりしていました。
3 は、 当たっているパッチのそれぞれがどんな意図で行われたのかがわからない、 ということ、 また、 debian/以下のファイ ルも上流ソースへのパッチも一緒くたになってしまっていること、 が問題でした。 そこで、 まとまった意味のある単位に分割さ れたパッチをまず用意しておき、 それらをdebian/patches/下に配置し、 その細かいパッチをビルド時に当てる/外すフ レームワーク (patch system) が利用されています。 これには dpatch や quilt などがあります。 なお、 こ の細かいパッチのそれぞれには、 先頭にパッチの意図を説明する文章を記述することが推奨されています ( http://dep.debian.net/deps/dep3/)。
4 は、 バイナリファイルの diff を取ろうとしても普通の patch ではできないことが原因なので、 uuencode などでテキストに 落として patch を取る、 といった手法が用いられてきました。
このような問題を解決するために新たなソースパッケージのフォーマットも検討されました。 それが “3.0 (quilt)” フォー マット(と “3.0 (native)” フォーマット) です。
3.0 (quilt)は次の 3 つ以上のファイルで構成されます。
なお、 1.0にあった Debian native パッケージに相当する 3.0 (native)は次の 2 ファイルで構成され ます。
ここで、 まず、 tar の拡張子部分ext に gz のほか、 bz2, lzma, xz が利用できるようになりました。 これにより問題 1 が解決 されました(3.0 (native)における主な変更点はこれです) 。
また、 component の部分を適当に変えることにより複数の tarball をきちんと扱えるようになりました。 これが問題 2 を解 決します。
次に、 debian/下のファイルはすべて*.debian.tar.gzに入れることになりました。 これですべてが混ざった状態は なくなりました。 さらに、 debian/patches/下のパッチが、 パッチシステム quilt と基本的に同じ方法で dpkg-source(1)によって “ソースパッケージの展開時に” 自動的に当たるようになりました。 これにより、 ビルド時 にパッチを当てるようにdebian/rulesファイルを記述する必要はなくなりましたし、 debian/control ファイルに Build-Depends: quiltなどと書く必要もなくなりました。 これらによって問題 3 は解決されま した。
問題 4 については、 debian/下のファイルを diff として保持することはもはやなくなったので解決し、 *.debian.tar.ext に直にバイナリファイルを配置できます。
この3.0 (quilt)フォーマットは、 Debian のアーカイブが巨大化していっているため、 gzip より lzma (lenny 当時で、 現在 なら xz) を使って圧縮すればサイズを抑えられるといった理由で、 lenny 以降でより推進されるようになりました。 Debian にあるソースパッケージすべてが 3.0 (quilt)化可能になったら(潰すべき minor/wishlist バグが http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=hertzog@debian.org;tag=3.0-quilt-by-default にあ ります) 、 dpkg はデフォルトで3.0 (quilt)フォーマットでソースパッケージをビルドするように変更される、 とのことで す。 というわけでこれから作るパッケージは 3.0 化しましょう。
具体例として、 まず gzip ソースパッケージ (1.3.12-9) を3.0 (quilt)化してみました。 このソースパッケージ は直に patch を当てた形式を取っていました。 dpkg-source(1)による展開時のメッセージで分かります:
$ apt-get source gzip
パッケージリストを読み込んでいます... 完了 依 存 関 係 ツ リ ー を 作 成 し て い ま す 状態情報を読み取っています... 完了 479kB のソースアーカイブを取得する必要があります。 取 得 :1 http://ftp.jp.debian.org testing/main gzip 1.3.12-9 (dsc) [1,647B] 取得:2 http://ftp.jp.debian.org testing/main gzip 1.3.12-9 (tar) [462kB] 取得:3 http://ftp.jp.debian.org testing/main gzip 1.3.12-9 (diff) [15.7kB] 479kB を 1s で取得しました (250kB/s) dpkg-source: info: extracting gzip in gzip-1.3.12 dpkg-source: info: unpacking gzip_1.3.12.orig.tar.gz dpkg-source: info: applying gzip_1.3.12-9.diff.gz dpkg-source: info: upstream files that have been modified: gzip-1.3.12/.gbp.conf gzip-1.3.12/deflate.c gzip-1.3.12/gzip.1 (snip) |
現在のデフォルトは1.0なので、 3.0 (quilt)と明示してからソースパッケージを作ります。
$ cd gzip-1.3.12/
$ mkdir -p debian/source $ echo ’3.0 (quilt)’ > debian/source/format $ debuild -S -us -uc dpkg-buildpackage -rfakeroot -d -us -uc -S dpkg-buildpackage: set CFLAGS to default value: -g -O2 (snip) dpkg-source -b gzip-1.3.12 dpkg-source: info: using source format ‘3.0 (quilt)’ dpkg-source: info: building gzip using existing ./gzip_1.3.12.orig.tar.gz dpkg-source: info: local changes stored in gzip-1.3.12/debian/patches/debian-changes-1.3.12-9, the modified files are: gzip-1.3.12/.gbp.conf gzip-1.3.12/deflate.c (snip) dpkg-source: info: building gzip in gzip_1.3.12-9.debian.tar.gz dpkg-source: info: building gzip in gzip_1.3.12-9.dsc dpkg-genchanges -S >../gzip_1.3.12-9_source.changes (snip) |
と、 とりあえず昔の diff.gz (の上流ソースへのパッチ部分) に相当する 1 つのパッチを自動で出力してくれます。 この大き なパッチそのままではこのフォーマットにした意味がほとんどないので分けましょう。 また、 パッチの説明文テンプ レートも debian/changelogを基にして付けてくれるので、 修正して正しい説明にしましょう。 (今回は共に 省略)
バイナリパッケージをビルドしてみます。
$ debuild -b -us -uc
dpkg-buildpackage -rfakeroot -D -us -uc -b dpkg-buildpackage: set CFLAGS to default value: -g -O2 dpkg-buildpackage: set CPPFLAGS to default value: dpkg-buildpackage: set LDFLAGS to default value: dpkg-buildpackage: set FFLAGS to default value: -g -O2 dpkg-buildpackage: set CXXFLAGS to default value: -g -O2 dpkg-buildpackage: source package gzip dpkg-buildpackage: source version 1.3.12-9 dpkg-buildpackage: source changed by Bdale Garbee <bdale@gag.com> dpkg-buildpackage: host architecture amd64 dpkg-checkbuilddeps: Unmet build dependencies: mingw32 dpkg-buildpackage: warning: Build dependencies/conflicts unsatisfied; aborting. dpkg-buildpackage: warning: (Use -d flag to override.) debuild: fatal error at line 1330: dpkg-buildpackage -rfakeroot -D -us -uc -b failed |
Build-Dependsを満たして、 ビルドします。
$ mk-build-deps
dh_testdir (snip) dpkg-deb: ‘../gzip-build-deps_1.0_all.deb’ にパッケージ ‘gzip-build-deps’ を構築しています。 The package has been created. Attention, the package has been created in the current directory, not in ".." as indicated by the message above! $ sudo dpkg -i gzip-build-deps_1.0_all.deb 未選択パッケージ gzip-build-deps を選択しています。 (データベースを読み込んでいます ... 現在 203017 個のファイルとディレクトリがインストールされています。 ) (gzip-build-deps_1.0_all.deb から) gzip-build-deps を展開しています... dpkg: 依存関係の問題により gzip-build-deps の設定ができません: gzip-build-deps は以下に依存 (depends) します: mingw32 ... しかし: パッケージ mingw32 はまだインストールされていません。 dpkg: gzip-build-deps の処理中にエラーが発生しました (--install): 依存関係の問題 - 設定を見送ります 以 下 の パ ッケ ー ジ の 処 理 中 に エ ラ ー が 発 生しました : gzip-build-deps $ sudo aptitude install gzip-build-deps パッケージリストを読み込んでいます... 完了 (snip) タスクの記述を読み込んでいます... 完了 現在の状態: 依存関係破損が 0 個 [-1]。 $ debuild -b -us -uc dpkg-buildpackage -rfakeroot -D -us -uc -b dpkg-buildpackage: set CFLAGS to default value: -g -O2 (snip) dpkg-deb: ‘../gzip_1.3.12-9_amd64.deb’ にパッケージ ‘gzip’ を構築しています。 dpkg-genchanges -b >../gzip_1.3.12-9_amd64.changes dpkg-genchanges: binary-only upload - not including any source code dpkg-buildpackage: binary only upload (no source included) Now running lintian... W: gzip: missing-dependency-on-install-info Finished running lintian. |
次に、 パッチシステムとして quilt を使っていた bash-completion パッケージを 3.0 (quilt)化してみま した。
パッチシステムでは、 ビルド前はパッチは当たっていないので、 自動でツリーにパッチが当てられてソースパッケージがビルド されます。
$ apt-get source bash-completion
パッケージリストを読み込んでいます... 完了 (snip) $ cd bash-completion-1.1/ $ mkdir -p debian/source $ echo ’3.0 (quilt)’ > debian/source/format $ debuild -S -us -uc dpkg-buildpackage -rfakeroot -d -us -uc -S dpkg-buildpackage: set CFLAGS to default value: -g -O2 (snip) fakeroot debian/rules clean dh --with quilt clean dh_testdir dh_auto_clean dh_quilt_unpatch 適用されているパッチはありません dh_clean dpkg-source -b bash-completion-1.1 dpkg-source: info: using source format ‘3.0 (quilt)’ dpkg-source: warning: patches have not been applied, applying them now (use --no-preparation to override) dpkg-source: info: applying 01-fix_550943.patch dpkg-source: info: applying 02-fix_552109.patch dpkg-source: info: applying 03-fix_552631.patch dpkg-source: info: building bash-completion using existing ./bash-completion_1.1.orig.tar.gz dpkg-source: info: building bash-completion in bash-completion_1.1-3.debian.tar.gz dpkg-source: info: building bash-completion in bash-completion_1.1-3.dsc dpkg-genchanges -S >../bash-completion_1.1-3_source.changes (snip) |
今回は問題ありませんでしたが、 3.0 (quilt)は quilt とは微妙に異なり、 すべてpatch -p1として扱われるので path を 適当に調整する必要があるかもしれません。
パッチは展開時に当たるので、 debian/rules内でパッチを当てている部分はもう要りません。 このソースパッケージは dh(1)を使用していたので簡単でした。
--- debian/rules 2010-03-18 10:50:30.000000000 +0900
+++ debian/rules.new 2010-03-18 10:54:53.000000000 +0900 @@ -21,11 +21,11 @@ build: build-stamp build-stamp: - dh --with quilt build + dh build touch $@ clean: - dh --with quilt $@ + dh $@ install: install-stamp install-stamp: build |
quilt には通常はBuild-Dependsしません。
--- debian/control 2010-03-18 10:50:30.000000000 +0900
+++ debian/control.new 2010-03-18 10:57:00.000000000 +0900 @@ -3,7 +3,7 @@ Priority: standard Maintainer: Bash Completion Maintainers <bash-completion-devel@lists.alioth.debian.org> Uploaders: David Paleino <dapal@debian.org> -Build-Depends: debhelper (>= 7.0.50), quilt (>= 0.46-7~) +Build-Depends: debhelper (>= 7.0.50) Build-Depends-Indep: perl Standards-Version: 3.8.3 Vcs-Git: git://git.debian.org/git/bash-completion/debian.git |
今度は初めから3.0 (quilt)です。
$ debuild -S -us -uc
dpkg-buildpackage -rfakeroot -d -us -uc -S (snip) fakeroot debian/rules clean dh clean dh_testdir dh_auto_clean dh_clean dpkg-source -b bash-completion-1.1 dpkg-source: info: using source format ‘3.0 (quilt)’ dpkg-source: info: building bash-completion using existing ./bash-completion_1.1.orig.tar.gz dpkg-source: info: building bash-completion in bash-completion_1.1-3.debian.tar.gz dpkg-source: info: building bash-completion in bash-completion_1.1-3.dsc dpkg-genchanges -S >../bash-completion_1.1-3_source.changes dpkg-genchanges: not including original source code in upload dpkg-buildpackage: binary and diff upload (original source NOT included) Now running lintian... Finished running lintian. |
バイナリパッケージをビルドします。
$ debuild -b -us -uc
dpkg-buildpackage -rfakeroot -D -us -uc -b dpkg-buildpackage: set CFLAGS to default value: -g -O2 (snip) dpkg-deb: ‘../bash-completion_1.1-3_all.deb’ にパッケージ ‘bash-completion’ を構築しています。 dpkg-genchanges -b >../bash-completion_1.1-3_amd64.changes dpkg-genchanges: binary-only upload - not including any source code dpkg-buildpackage: binary only upload (no source included) Now running lintian... Finished running lintian. |
次に、 実際には複数のソースアーカイブを使用している ptex-bin ソースパッケージ (3.1.11+0.04b-0.1) を3.0 (quilt)化し てみました。
ptex-bin ソースパッケージは、 実際にはptex-src-*.tar.gzとjmpost-*.tar.gzの 2 つの上流 tarball から構成されま す。 さらに Build-Depends: ptex-buildsupportとなっていますが、 この ptex-buildsupport パッケージは tetex-src-*-stripped.tar.gzのみが含まれる、 ほぼビルド専用のパッケージです。 すなわち、 3 つの上流 tarball が使 われています。 その上、 このソースパッケージにはdebian/patches/ディレクトリがありますが、 quilt や dpatch といった近代的なものではなくビルド時に patch を debian/rules内で直接呼ぶ構成になっていま した。
$ apt-get source ptex-bin
$ apt-get source ptex-buildsupport |
適当に名前を変えます。 ここでは
$ mv ptex-bin-3.1.11+0.04b/ptex-src-3.1.11.tar.gz ptex-bin_3.1.11+0.04b+3.0.orig.tar.gz
$ mv ptex-bin-3.1.11+0.04b/jmpost-0.04b.tar.gz ptex-bin_3.1.11+0.04b+3.0.orig-jmpost.tar.gz $ mv ptex-buildsupport-3.0/tetex-src-3.0-stripped.tar.gz ptex-bin_3.1.11+0.04b+3.0.orig-tetex-stripped.tar.gz |
としました。 3.0 (quilt)では、 *.orig.tar.ext がまずメインで展開され、 そのソースツリーにcomponent ディレクト リが掘られてその下に各*.orig-component.tar.ext が展開されます。 また、 component には英数字とハイフンのみが使え ます。
$ mkdir ptex-bin-3.1.11+0.04b+3.0
$ cd ptex-bin-3.1.11+0.04b+3.0/ $ cp -a ../ptex-bin-3.1.11+0.04b/debian . $ mkdir -p debian/source $ echo ’3.0 (quilt)’ > debian/source/format $ dch -v 3.1.11+0.04b+3.0-0.1 (適当に changelog 追加) $ debuild -S -us -uc dpkg-buildpackage -rfakeroot -d -us -uc -S dpkg-buildpackage: set CFLAGS to default value: -g -O2 dpkg-buildpackage: set CPPFLAGS to default value: dpkg-buildpackage: set LDFLAGS to default value: dpkg-buildpackage: set FFLAGS to default value: -g -O2 dpkg-buildpackage: set CXXFLAGS to default value: -g -O2 dpkg-buildpackage: source package ptex-bin dpkg-buildpackage: source version 3.1.11+0.04b+3.0-0.1 dpkg-buildpackage: source changed by YOSHINO Yoshihito <yy.y.ja.jp@gmail.com> fakeroot debian/rules clean dh_testdir dh_testroot rm -f build-stamp configure-stamp # Add here commands to clean up after the build process. # Remove teTeX source directory. rm -rf tetex-src-3.0 dh_clean dh_clean: Compatibility levels before 5 are deprecated. dpkg-source -b ptex-bin-3.1.11+0.04b+3.0 dpkg-source: info: using source format ‘3.0 (quilt)’ dpkg-source: info: building ptex-bin using existing ./ptex-bin_3.1.11+0.04b+3.0. orig-jmpost.tar.gz ./ptex-bin_3.1.11+0.04b+3.0.orig-tetex-stripped.tar.gz ./ptex -bin_3.1.11+0.04b+3.0.orig.tar.gz dpkg-source: warning: ignoring deletion of file kanji.defines dpkg-source: warning: ignoring deletion of file pconvert dpkg-source: warning: ignoring deletion of file tftopl.ch (snip) dpkg-source: info: building ptex-bin in ptex-bin_3.1.11+0.04b+3.0-0.1.debian.tar .gz dpkg-source: info: building ptex-bin in ptex-bin_3.1.11+0.04b+3.0-0.1.dsc dpkg-genchanges -S >../ptex-bin_3.1.11+0.04b+3.0-0.1_source.changes |
とりあえず空のソースツリーで作ったのでソースがないという warning はスルーします。
$ cd ..
$ dpkg-source -x ptex-bin_3.1.11+0.04b+3.0-0.1.dsc dpkg-source: warning: extracting unsigned source package (ptex-bin_3.1.11+0.04b+3.0-0.1.dsc) dpkg-source: info: extracting ptex-bin in ptex-bin-3.1.11+0.04b+3.0 dpkg-source: info: unpacking ptex-bin_3.1.11+0.04b+3.0.orig.tar.gz dpkg-source: info: unpacking ptex-bin_3.1.11+0.04b+3.0.orig-jmpost.tar.gz dpkg-source: info: unpacking ptex-bin_3.1.11+0.04b+3.0.orig-tetex-stripped.tar.gz dpkg-source: info: unpacking ptex-bin_3.1.11+0.04b+3.0-0.1.debian.tar.gz $ cd - $ ls -F COPYRIGHT README.txt jbibtex.ch mkconf ptexextra.h COPYRIGHT.jis configure* jbibtex.defines pconvert* ptexhelp.h Changes.txt debian/ jmpost/ pdvitype.ch tetex-stripped/ Files jbibd.sed kanji.c pltotf.ch tftopl.ch INSTALL.txt jbibextra.c kanji.defines ptex-base.ch usage.c Makefile.in jbibextra.h kanji.h.in ptexextra.c version.c |
メインのソースのトップディレクトリでそのままビルドできるようなものはいいですが、 ptex-src-*.tar.gzはそうではな いので微妙ですね... ともかく、 今回はビルド用ディレクトリを掘ってビルドできるようにdebian/rulesの変更が必要で した。
普段パッチシステム quilt を使っていればほとんど変更の必要はありませんが、 このパッケージはパッチは分かれているものの 自力で色々やっているのでまず quilt 化が必要でした。
全パッチを-p1化した上で、 debian/rulesに書かれている通りの順番でパッチをquilt import && quilt pushしまし た。 quilt では同じパッチ名はダメのようですね。
$ cd debian/
$ mv patches patches.old $ sed -i ’s@^\(---\|+++\) @&ptex-bin-3.1.11+0.04b+3.0/tetex-stripped/@’ patches.old/teTeX/*.patch $ sed -i ’s@^\(---\|+++\) @&ptex-bin-3.1.11+0.04b+3.0/@’ patches.old/*.patch $ sed -i ’s@^\(---\|+++\) @&ptex-bin-3.1.11+0.04b+3.0/jmpost/@’ patches.old/jmpost/*.patch $ mv patches.old/Makefile.in.patch patches.old/pTeX_Makefile.in.patch $ mv patches.old/jmpost/Makefile.in.patch patches.old/jmpost/jmpost_Makefile.in.patch $ quilt import patches.old/teTeX/*.patch patches.old/*.patch patches.old/jmpost/*.patch パッチ patches.old/teTeX/Makefile.in.patch を取り込んでいます (Makefile.in.patch として保存されます) パッチ patches.old/teTeX/common.mk.patch を取り込んでいます (common.mk.patch として保存されます) パッチ patches.old/teTeX/config.h.patch を取り込んでいます (config.h.patch として保存されます) パッチ patches.old/teTeX/depend.mk.patch を取り込んでいます (depend.mk.patch として保存されます) パッチ patches.old/teTeX/splitup.c.patch を取り込んでいます (splitup.c.patch として保存されます) パッチ patches.old/teTeX/web2c.depend.mk.patch を取り込んでいます (web2c.depend.mk.patch として保存されます) パッチ patches.old/pTeX_Makefile.in.patch を取り込んでいます (pTeX_Makefile.in.patch として保存されます) パッチ patches.old/jmpost/jmpost_Makefile.in.patch を取り込んでいます (jmpost_Makefile.in.patch として保存されます) $ cd .. $ env QUILT_PATCHES=debian/patches quilt push -a パッチ Makefile.in.patch を適用しています patching file tetex-stripped/texk/web2c/web2c/Makefile.in パッチ common.mk.patch を適用しています patching file tetex-stripped/texk/make/common.mk パッチ config.h.patch を適用しています patching file tetex-stripped/texk/web2c/config.h パッチ depend.mk.patch を適用しています patching file tetex-stripped/texk/web2c/lib/depend.mk パッチ splitup.c.patch を適用しています patching file tetex-stripped/texk/web2c/web2c/splitup.c パッチ web2c.depend.mk.patch を適用しています patching file tetex-stripped/texk/web2c/web2c/depend.mk パッチ pTeX_Makefile.in.patch を適用しています patching file Makefile.in パッチ jmpost_Makefile.in.patch を適用しています patching file jmpost/Makefile.in 現在位置はパッチ jmpost_Makefile.in.patch です $ rm -r debian/patches.old/ |
tarball をもう展開する必要はありません。 ビルド用ディレクトリにコピーすることにします。 パッチを当てる必要もないので その辺も削ります。
--- debian/rules 2010-03-18 12:01:15.000000000 +0900
+++ debian/rules.new 2010-03-18 13:19:09.000000000 +0900 @@ -6,29 +6,14 @@ # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 -#################### -# Things you should change when new upstream version is available. - -# Minimal teTeX source tarball. -# You should install ptex-buildsupport package beforehand. -TETEX_SRC_TARBALL=/usr/src/tetex-src-3.0-stripped.tar.gz - # teTeX source directory. -TETEX_SRC_DIR=tetex-src-3.0 - -# pTeX source tarball. -PTEX_SRC_TARBALL=ptex-src-3.1.11.tar.gz +TETEX_SRC_DIR=tetex-src # pTeX source directory. -PTEX_SRC_DIR=ptex-src-3.1.11 - -# Japanized MetaPost tarball. -JMPOST_SRC_TARBALL=jmpost-0.04b.tar.gz +PTEX_SRC_DIR=ptex-src # Japanized MetaPost source directory. -JMPOST_SRC_DIR=jmpost-0.04b - -#################### +JMPOST_SRC_DIR=jmpost-src DEB_HOST_GNU_TYPE := $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) @@ -42,31 +27,14 @@ configure: configure-stamp configure-stamp: dh_testdir - # Unpack tarballs. - tar xfz $(TETEX_SRC_TARBALL) + cp -al tetex-stripped $(TETEX_SRC_DIR) mkdir $(TETEX_SRC_DIR)/texk/kpathsea_tetex mv $(TETEX_SRC_DIR)/texk/kpathsea/c-proto.h $(TETEX_SRC_DIR)/texk/kpathsea_tetex/ rm -rf $(TETEX_SRC_DIR)/texk/kpathsea ln -s /usr/include/kpathsea $(TETEX_SRC_DIR)/texk/kpathsea - tar xfz $(PTEX_SRC_TARBALL) -C $(TETEX_SRC_DIR)/texk/web2c - tar xfz $(JMPOST_SRC_TARBALL) -C $(TETEX_SRC_DIR)/texk/web2c/$(PTEX_SRC_DIR) - - # Apply patches to teTeX source - for f in debian/patches/teTeX/*.patch; do \ - patch -p0 -d $(TETEX_SRC_DIR) < $$f; \ - done - - # Apply patches to pTeX source (should be named as *.patch) - # Put patches in debian/patches. - (for f in debian/patches/*.patch ; do \ - patch -p0 -d $(TETEX_SRC_DIR)/texk/web2c/$(PTEX_SRC_DIR) < $$f ; \ - done) - - # Apply patches to Japanized MetaPost source (should be named as *.patch) - # Put patches in debian/patches/jmpost. - (for f in debian/patches/jmpost/*.patch ; do \ - patch -p0 -d $(TETEX_SRC_DIR)/texk/web2c/$(PTEX_SRC_DIR)/$(JMPOST_SRC_DIR) < $$f ; \ - done) + mkdir $(TETEX_SRC_DIR)/texk/web2c/$(PTEX_SRC_DIR) + for f in ‘find . -maxdepth 1 -type f‘; do cp -al $$f $(TETEX_SRC_DIR)/texk/web2c/$(PTEX_SRC_DIR); done + cp -al jmpost $(TETEX_SRC_DIR)/texk/web2c/$(PTEX_SRC_DIR)/$(JMPOST_SRC_DIR) # Copy texmf.cnf from your system. cp /usr/share/texmf/web2c/texmf.cnf \ |
ptex-buildsupport は不要になりました。
--- debian/control 2010-03-18 12:01:15.000000000 +0900
+++ debian/control.new 2010-03-18 13:23:09.000000000 +0900 @@ -2,7 +2,7 @@ Section: tex Priority: optional Maintainer: Masayuki Hatta (mhatta) <mhatta@debian.org> -Build-Depends: debhelper (>> 4.0.0), texlive-binaries, texlive-extra-utils, texlive-metapost, flex, bison, libkpathsea-dev, \ ptex-base (>= 2.4), ptex-buildsupport (>= 3.0), libtool +Build-Depends: debhelper (>> 4.0.0), texlive-binaries, texlive-extra-utils, texlive-metapost, flex, bison, libkpathsea-dev, \ ptex-base (>= 2.4), libtool Standards-Version: 3.7.3 Package: ptex-bin |
$ debuild -S -us -uc
dpkg-buildpackage -rfakeroot -d -us -uc -S dpkg-buildpackage: set CFLAGS to default value: -g -O2 (snip) |
試しにdpkg-source -xしてみます。
$ dpkg-source -x ptex-bin_3.1.11+0.04b+3.0-0.1.dsc
dpkg-source: warning: extracting unsigned source package (ptex-bin_3.1.11+0.04b+3.0-0.1.dsc) dpkg-source: info: extracting ptex-bin in ptex-bin-3.1.11+0.04b+3.0 dpkg-source: info: unpacking ptex-bin_3.1.11+0.04b+3.0.orig.tar.gz dpkg-source: info: unpacking ptex-bin_3.1.11+0.04b+3.0.orig-jmpost.tar.gz dpkg-source: info: unpacking ptex-bin_3.1.11+0.04b+3.0.orig-tetex-stripped.tar.gz dpkg-source: info: unpacking ptex-bin_3.1.11+0.04b+3.0-0.1.debian.tar.gz dpkg-source: info: applying Makefile.in.patch dpkg-source: info: applying common.mk.patch dpkg-source: info: applying config.h.patch dpkg-source: info: applying depend.mk.patch dpkg-source: info: applying splitup.c.patch dpkg-source: info: applying web2c.depend.mk.patch dpkg-source: info: applying pTeX_Makefile.in.patch dpkg-source: info: applying jmpost_Makefile.in.patch |
無事当たりました。 バイナリパッケージをビルドします。
$ debuild -b -us -uc
dpkg-buildpackage -rfakeroot -D -us -uc -b dpkg-buildpackage: set CFLAGS to default value: -g -O2 (snip) dpkg-buildpackage: warning: Build dependencies/conflicts unsatisfied; aborting. dpkg-buildpackage: warning: (Use -d flag to override.) debuild: fatal error at line 1330: dpkg-buildpackage -rfakeroot -D -us -uc -b failed $ mk-build-deps (snip) $ sudo dpkg -i ptex-bin-build-deps_1.0_all.deb (snip) $ sudo aptitude install ptex-bin-build-deps (snip) $ debuild -b -us -uc dpkg-buildpackage -rfakeroot -D -us -uc -b dpkg-buildpackage: set CFLAGS to default value: -g -O2 (snip) dh_builddeb dh_builddeb: Compatibility levels before 5 are deprecated. dpkg-deb: ‘../ptex-bin_3.1.11+0.04b+3.0-0.1_amd64.deb’ にパッケージ ‘ptex-bin’ を構築しています。 dpkg-deb: ‘../jbibtex-bin_3.1.11+0.04b+3.0-0.1_amd64.deb’ にパッケージ ‘jbibtex-bin’ を構築しています。 dpkg-deb: ‘../jmpost_3.1.11+0.04b+3.0-0.1_amd64.deb’ にパッケージ ‘jmpost’ を構築しています。 dpkg-genchanges -b >../ptex-bin_3.1.11+0.04b+3.0-0.1_amd64.changes dpkg-genchanges: binary-only upload - not including any source code dpkg-buildpackage: binary only upload (no source included) Now running lintian... W: jmpost: binary-without-manpage usr/bin/pmakempx W: jbibtex-bin: copyright-without-copyright-notice Finished running lintian. |
無事できました。
Debian 勉強会資料
2010 年3 月20 日 初版第1 刷発行
東 京 エ リ ア
Debian 勉強会 (編集・印刷・発行)
__________________________