x86_64版Gentoo Linuxの32bitライブラリを自前で管理(chroot無しでemul-linux-x86-sdlをビルド)
準備として、「emul-linux-x86-sdl」をインストールしておく。
- 問題なくビルドできるもの
- smpeg(0.4.4-r9)とsdl-ttf(2.0.8)
- sdl-sound(1.0.1-r2 USE="mikmod mp3 mpeg vorbis -flac")
- sdl-mixer(1.2.7 USE="mikmod mp3 vorbis")
- インストールするebuildの例
問題なくビルドできるもの
- libsdl(1.2.11-r2 USE="X alsa esd opengl oss xv")
- openal(0.0.8-r2 USE="alsa esd mp3 sdl vorbis")
- sdl-net(1.2.6)
smpeg(0.4.4-r9)とsdl-ttf(2.0.8)
USE="-X"でエラー回避できる。得られるライブラリはどちらも同じ。smpegの「USE=opengl」は問題なし。sdl-sound(1.0.1-r2 USE="mikmod mp3 mpeg vorbis -flac")
USE="-flac"でビルド。USE=flacを付けるなら、32bitのFLACも必要になる。更に、lib64の修正をする。--- /usr/portage/media-libs/sdl-sound/sdl-sound-1.0.1-r2.ebuild.orig +++ /usr/portage/media-libs/sdl-sound/sdl-sound-1.0.1-r2.ebuild @@ -52,6 +52,9 @@ $(use_enable physfs) \ $(use_enable vorbis ogg) \ || die + if use amd64 && [[ "${ABI}" = "x86" ]]; then + find . -name Makefile | xargs sed -i -e 's/lib64/lib32/g' + fi emake || die "emake failed" }
sdl-mixer(1.2.7 USE="mikmod mp3 vorbis")
これもlib64の関係でリンクエラーになるのだが、MakefileにEXTRA_LDFLAGS = -L/usr/local/lib -lSDL -lpthread -L/usr/lib -lmikmod
のように探索パスが書かれている形により/usr/lib=/usr/lib64を検索するためなのか、リンクエラーになる。この部分を「lib32」へ置換することで回避。
--- /usr/portage/media-libs/sdl-mixer/sdl-mixer-1.2.7.ebuild.orig +++ /usr/portage/media-libs/sdl-mixer/sdl-mixer-1.2.7.ebuild @@ -46,6 +46,9 @@ $(use_enable mp3 music-mp3) \ $(use_enable vorbis music-ogg) \ || die + if use amd64 && [[ "${ABI}" = "x86" ]]; then + find . -name Makefile | xargs sed -i -e 's|-L/usr/lib|-L/usr/lib32|' + fi emake || die "emake failed" }
インストールするebuildの例
SDL関連のパッケージは/etc/env.d/以下にファイルを作らないので、USE="-nodevelop"で入れた場合の${ALLOWED}には「^${S}/etc/env.d」のパターンを含めていない。ファイル名: emul-linux-x86-sdl-9999.ebuild
# Copyright 1999-2007 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/app-emulation/emul-linux-x86-sdl/emul-linux-x86-sdl-10.1.ebuild,v 1.3 2007/07/12 06:39:56 mr_bones_ Exp $ inherit emul-libs SRC_URI="mirror://gentoo/libsdl-1.2.11-r2.tbz2 mirror://gentoo/openal-0.0.8-r2.tbz2 mirror://gentoo/sdl-image-1.2.5-r1.tbz2 mirror://gentoo/sdl-mixer-1.2.7.tbz2 mirror://gentoo/sdl-net-1.2.6.tbz2 mirror://gentoo/sdl-sound-1.0.1-r2.tbz2 mirror://gentoo/sdl-ttf-2.0.8.tbz2 mirror://gentoo/smpeg-0.4.4-r9.tbz2" LICENSE="LGPL-2 LGPL-2.1" KEYWORDS="-* ~amd64" IUSE="nodevelop" DEPEND="" RDEPEND=">=app-emulation/emul-linux-x86-xlibs-10.0 >=app-emulation/emul-linux-x86-soundlibs-10.0" src_unpack() { ! use nodevelop && ALLOWED="(^${S}/usr/lib32/pkgconfig|.*lib32.*\.l?a$)" emul-libs_src_unpack }
インストール例。
$ sudo mkdir /usr/local/overlays/local/app-emulation/emul-linux-x86-sdl/files -p $ sudo mv emul-linux-x86-sdl-9999.ebuild /usr/local/overlays/local/app-emulation/emul-linux-x86-sdl/ $ sudo cp [tbz2の保存先] /usr/portage/distfiles/ $ sudo emerge -avu emul-linux-x86-sdl