Gentoo Linux Ebuild
-datadir= を試してみてほしい。
前回$(shell /usr/bin/wx-config)を試した時、すぐにビルド問題について騒ぎになった。当時は調査する時間がなかった。
$(shell /usr/bin/wx-config)の問題の一つは、そこにたまたまあるどのバージョン(wx 2.8)やどの設定(非 UTF-8)の wxWidgets でも拾ってしまうことだ。-lwx_gtk2ud-2.9 は正しい設定にのみ一致する。wxWidgets が間違った設定でビルドされていると失敗する。
思い出せば、freenodeの#wxwidgetsでチャットした時、そこの開発者はなぜそれが使われているのか困惑していました。
なぜ困惑していたか言っていたか?
私のシステムではパスが/usr/include/wx-2.9/wx/wx.hだからです
なぜそこにあるのか?OS に含まれていたのか、それともビルドする必要があったのか?ビルドした場合、なぜ別の場所にインストールされるのか不思議だ。
wxWidgets 2.9 はついに Debian パッケージとして利用可能になり始めたのか?
おそらくこうすべきだろう:
INCLUDEPATHS=
-I”/usr/local/include/wx-2.9”
-I”/usr/local/lib/wx/include/gtk2-unicode-debug-static-2.9”
-I”/usr/include/wx-2.9”
-I”/usr/lib/wx/include/gtk2-unicode-debug-static-2.9”
繰り返すが、これらのパスは 2.9 のみであることを確認し、2.8 では失敗するようにするのに役立つ。
wxWidgets 2.8 には ANSI と UTF-16 があり、どちらも我々には不適切だ。パッケージとして簡単に入手できるため魅力的だが、多くの人が 2.9 を makefile にハードコードし始めるまでフラストレーションを感じていた。
いくつか:
- ヘッダーを直す必要があることを覚えておいてくれ。
- wxgtk は GUI をビルドするときだけ必要で、デーモンには不要だ(USE フラグで切り替えられるようにしてくれ)
- gtk+は wxgtk の依存だから、自分で要求するな。
- eselect 経由で他のプログラムが wxwidgets をどう使っているかを確認してくれ(同じシステムに 2.6 と 2.8 をスロットで共存できる、必要なのは 2.9 だ)
- /home/bticoin?
- Makefile から最適化フラグを取り除いて、ユーザーに指定させろ(あるいは適切に除去しろ)
- 静的コードをビルドするな。動的コードをビルドする Makefile を持っている。欲しければ送れる。多少手を入れる必要はあるが。
参考になる読み物:
http://devmanual.gentoo.org/
http://www.gentoo.org/proj/en/devrel/handbook/handbook.xml
前回 $(shell /usr/bin/wx-config) を試したとき、それに関するビルド問題ですぐに騒ぎになった。当時は調査する時間がなかった。
$(shell /usr/bin/wx-config) の問題の一つは、たまたまそこにあるwxWidgetsの任意のバージョン(wx 2.8)と任意の構成(非UTF-8)を拾ってしまうことだ。-lwx_gtk2ud-2.9は正しい構成にしかマッチしない。wxWidgetsが間違った構成でビルドされていれば失敗する。
参考までに、Gentoo には特定の wxWidgets バージョンに対して以下の回避策がある:
$ eselect wxwidgets list
Available wxWidgets profiles:
[1] gtk2-ansi-release-2.6
[2] gtk2-unicode-2.9 *
[3] gtk2-unicode-release-2.6
[4] gtk2-unicode-release-2.8
$ /usr/bin/wx-config —version 2.9.1
# eselect wxwidgets set 1
Setting wxWidgets profile to gtk2-ansi-release-2.6
$ /usr/bin/wx-config —version 2.6.4 他のディストロについては分からないが。
サトシ・ナカモトの投稿(2010年8月27日 00:49 UTC)これは私のシステムではパスが /usr/include/wx-2.9/wx/wx.h だからだ
なぜそこにあるのか? OSに含まれていたのか、それとも自分でビルドしたのか? もし自分でビルドしたのなら、なぜ別の場所に置かれるのか不思議だ。
bonsaikitten の IRC より:
<bonsaikitten> necrodearia: それは正しい場所だからそこにある
<bonsaikitten> necrodearia: /usr/local にないのは、そこが正しい場所ではないからだ
<bonsaikitten> さらなる質問はFHSを読めば解決するかもしれない
http://www.pathname.com/fhs/
Gentoo Linux は(99.99%の)パッケージをソースからコンパイルするように設計されているので、そう、私は Gentoo Linux のパッケージ管理ソフトウェアである Portage の ebuild を使って wxGTK をコンパイルした。
BioMikeの投稿(2010年8月27日 05:22 UTC)
- ヘッダーを直す必要があることを覚えておいてくれ。
これが分からない。どのヘッダー?
BioMikeの投稿(2010年8月27日 05:22 UTC)
- /home/bticoin?
bitcoin をどこでスペルミスしたか分からない。どのファイル?
BioMikeの投稿(2010年8月27日 05:22 UTC)
- Makefileから最適化フラグを取り除いて、ユーザーに指定させろ(あるいは適切に除去しろ)
「最適化フラグ」が何を指すのかはっきりしない。
BioMikeの投稿(2010年8月27日 05:22 UTC)
- 静的コードをビルドするな。動的コードをビルドするMakefileを持っている。欲しければ送れる。多少手を入れる必要はあるが。
コードのどの部分が静的で、動的に変換できるのかが分からない。誰もやっていないようだったので ebuild を準備しただけだ。ebuild を完璧にできるほどのスキルはないが、誰か他に改善に貢献したい人がいれば、git リポジトリを用意した: http://github.com/mizerydearia/bitcoin_gentoo_ebuild
BioMikeの投稿(2010年8月27日 05:22 UTC)
- ヘッダーを直す必要があることを覚えておいてくれ。
これが分からない。どのヘッダー?
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/app-mobilephone/lightblue/lightblue-0.4.ebuild,v 1.3 2010/03/27 17:57:36 arfrever Exp $
このヘッダーだ 😉
mizerydeariaの投稿(2010年8月27日 08:03 UTC)BioMikeの投稿(2010年8月27日 05:22 UTC)
- /home/bticoin?
bitcoinをどこでスペルミスしたか分からない。どのファイル?
私のミスだ。/home/bitcoin と書こうとしていた。私の言いたかったのは、これは /var/lib/bitcoin にすべきだ、ということだ。
mizerydeariaの投稿(2010年8月27日 08:03 UTC)BioMikeの投稿(2010年8月27日 05:22 UTC)
- Makefileから最適化フラグを取り除いて、ユーザーに指定させろ(あるいは適切に除去しろ)
「最適化フラグ」が何を指すのかはっきりしない。
“-msse2 -O3 -march=amdfam10” のようなものだ。Gentoo ユーザーは通常、これらを /etc/make.conf で自分で指定する。
mizerydeariaの投稿(2010年8月27日 08:03 UTC)BioMikeの投稿(2010年8月27日 05:22 UTC)
- 静的コードをビルドするな。動的コードをビルドするMakefileを持っている。欲しければ送れる。多少手を入れる必要はあるが。
コードのどの部分が静的で、動的に変換できるのかが分からない。誰もやっていないようだったのでebuildを準備しただけだ。ebuildを完璧にできるほどのスキルはない。ただ、誰か他に改善に貢献したい人がいれば、gitリポジトリを用意した:
http://github.com/mizerydearia/bitcoin_gentoo_ebuild
それは手伝える。もう一つあると良いのは、起動時にデーモンを起動・停止する init.d スクリプトだ。