x86_64版Gentoo Linuxの32bitライブラリを自前で管理(chroot無しでemul-linux-x86-soundlibsをビルド)
準備として、「emul-linux-x86-soundlibs」をインストールしておく。
- 問題なくビルドできたもの
- alsa-lib(1.0.15 USE="midi -python")
- aRts(3.5.5 USE="alsa esd jack mp3 vorbis")
- libsndfile(1.0.17-r1 USE="alsa -flac")
- 32bit版LADSPAプラグイン
- インストールするebuildの例
- emul-linux-x86-medialibsについて
問題なくビルドできたもの
- alsa-oss(1.0.14)
- audiofile(0.2.6-r3)
- esound(0.2.38 USE="alsa tcpd")
- jack-audio-connection-kit(0.103.0 USE="alsa jack-tmpfs mmx sse")
- libmikmod(3.1.11-r2 USE="alsa esd")
- libogg(1.1.3)
- libvorbis(1.2.0)
alsa-lib(1.0.15 USE="midi -python")
64bitと32bitのバージョンの大きな違いにより、WineでALSA lib pcm_softvol.c:889:(_snd_pcm_softvol_open) Unknown field max_dB
というメッセージが出るようになっていたが、新しいバージョンを入れることで、この問題は解決。
まず、
In file included from /usr/include/python2.4/Python.h:60, from python.c:22: /usr/include/python2.4/pyport.h:616:2: error: #error "LONG_BIT definition appear s wrong for platform (bad gcc/glibc config?)."
のエラーを回避するため、Pythonのサポートを切ることができるようにebuildを修正し、
--- /usr/portage/media-libs/alsa-lib/alsa-lib-1.0.15.ebuild.orig +++ /usr/portage/media-libs/alsa-lib/alsa-lib-1.0.15.ebuild @@ -17,7 +17,7 @@ LICENSE="GPL-2 LGPL-2.1" SLOT="0" KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc ~x86" -IUSE="doc debug alisp midi" +IUSE="doc debug alisp midi python" RDEPEND=">=media-sound/alsa-headers-${PV}" DEPEND="${RDEPEND} @@ -59,6 +59,7 @@ $(use_enable alisp) \ $(use_enable midi instr) \ $(use_enable midi seq) $(use_enable midi aload) \ + $(use_enable python) \ "--with-pcm-plugins=${ALSA_PCM_PLUGINS}" \ --disable-dependency-tracking \ || die "configure failed"
これまでと同様にdigestを取ったら、USE="-python"指定をしてビルドする。
(2008/5/14)alsa-lib 1.0.16-r1から「python」のUSEフラグが付くようになっているため、修正する必要はなくなっている。
aRts(3.5.5 USE="alsa esd jack mp3 vorbis")
64bit版のQT3とkdelibsが必要で、「emul-linux-x86-baselibs-9999」をUSE="-nodevelop"でインストールし、
--- /usr/portage/kde-base/arts/arts-3.5.5.ebuild.orig +++ /usr/portage/kde-base/arts/arts-3.5.5.ebuild @@ -73,7 +73,23 @@ export BINDNOW_FLAGS="$(bindnow-flags)" - kde_src_compile + if use amd64 && [[ "${ABI}" = "x86" ]]; then + kde_src_compile myconf configure + find . -name Makefile | xargs sed -i -e 's/lib64/lib32/g' + sed -i \ + -e 's|\(libkmedia2_idl_la_LIBADD =\)|\1 $(top_builddir)/mcop/libmcop.la $(top_builddir)/flow/libartsflow_idl.la|' \ + -e 's|\(libkmedia2_la_LIBADD =\)|\1 $(top_builddir)/mcop/libmcop.la $(top_builddir)/flow/libartsflow_idl.la|' \ + -e 's|\(libsoundserver_idl_la_LIBADD =\)|\1 $(top_builddir)/mcop/libmcop.la $(FLOWLIBS)|' \ + -e 's|\(libartsgslplayobject_la_LIBADD =\)|\1 $(libsoundserver_idl_la_LIBADD)|' \ + -e 's|\(libartswavplayobject_la_LIBADD =\)|\1 $(libsoundserver_idl_la_LIBADD)|' \ + soundserver/Makefile + sed -i \ + -e 's|\(libartscbackend_la_LIBADD =\)|\1 $(top_builddir)/mcop/libmcop.la $(top_builddir)/soundserver/libkmedia2_idl.la $(top_builddir)/flow/libartsflow_idl.la|' \ + artsc/Makefile + kde_src_compile make + else + kde_src_compile + fi } src_install() {
の修正をし、
$ sudo bash -c 'CHOST=i686-pc-linux-gnu ABI=x86 FEATURES="noman noinfo" PKGDIR=[tbz2の出力先] MAKE="make LIBTOOL=/usr/bin/libtool32" emerge -avBO arts'
で何とかビルドできたが、ここまで苦労してビルドするほどのものでもないような気もする。
libsndfile(1.0.17-r1 USE="alsa -flac")
USE="-flac"を付ける。32bit版LADSPAプラグイン
$ sudo bash -c 'CHOST=i686-pc-linux-gnu ABI=x86 FEATURES="noman noinfo" PKGDIR=[tbz2の出力先] LD="ld -m elf_i386" emerge -avBO ladspa-sdk ladspa-cmt caps-plugins fil-plugins mcp-plugins rev-plugins tap-plugins'
で
- ladspa-sdk(1.12-r2)
- ladspa-cmt(1.15)
- caps-plugins(0.3.0-r1)
- fil-plugins(0.0.1)
- mcp-plugins(0.3.0)
- rev-plugins(0.2.1)
- tap-plugins(0.7.0)
上記プラグインは全てビルドできるが、swh-plugins(0.4.14)は外部ライブラリfftwを要求するため、今回は外した。
これらを後でインストールして使用するためには、LADSPA_PATHの編集が必要。
ファイル名: /etc/env.d/60ladspa
LADSPA_PATH=/usr/lib64/ladspa:/usr/lib32/ladspa
インストールするebuildの例
ファイル名: emul-linux-x86-soundlibs-9999# 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-soundlibs/emul-linux-x86-soundlibs-10.0-r1.ebuild,v 1.3 2007/03/02 15:04:01 blubb Exp $ inherit emul-libs SRC_URI="mirror://gentoo/alsa-lib-1.0.15.tbz2 mirror://gentoo/alsa-oss-1.0.14.tbz2 arts? ( mirror://gentoo/arts-3.5.5.tbz2 ) mirror://gentoo/audiofile-0.2.6-r3.tbz2 mirror://gentoo/esound-0.2.38.tbz2 mirror://gentoo/jack-audio-connection-kit-0.103.0.tbz2 mirror://gentoo/libmikmod-3.1.11-r2.tbz2 mirror://gentoo/libogg-1.1.3.tbz2 mirror://gentoo/libsndfile-1.0.17-r1.tbz2 mirror://gentoo/libvorbis-1.2.0.tbz2 ladspa? ( mirror://gentoo/caps-plugins-0.3.0-r1.tbz2 mirror://gentoo/fil-plugins-0.0.1.tbz2 mirror://gentoo/ladspa-cmt-1.15.tbz2 mirror://gentoo/ladspa-sdk-1.12-r2.tbz2 mirror://gentoo/mcp-plugins-0.3.0.tbz2 mirror://gentoo/rev-plugins-0.2.1.tbz2 mirror://gentoo/tap-plugins-0.7.0.tbz2 )" LICENSE="as-is BSD GPL-2 LGPL-2 LGPL-2.1" KEYWORDS="-* ~amd64" IUSE="arts ladspa nodevelop" RDEPEND=">=app-emulation/emul-linux-x86-baselibs-10.0 arts? ( >=app-emulation/emul-linux-x86-qtlibs-10.0 ) !<app-emulation/media-libs-1.1" src_unpack() { allowed_common="^${S}/usr/bin/esddsp|^${S}/usr/kde/.*/bin/artsdsp|^${S}/usr/bin/aoss" use nodevelop && allowed="${allowed_common}" \ || allowed="${allowed_common}|^${S}/usr/lib32/pkgconfig|.*lib32.*\.l?a$" use ladspa && ALLOWED="(${allowed}|/usr/lib*/ladspa)" \ || ALLOWED="(${allowed})" emul-libs_src_unpack for f in ${S}/usr/bin/esddsp ${S}/usr/bin/aoss ${S}/usr/kde/*/bin/artsdsp ; do mv -f "$f"{,32} done if use ladspa; then mv ${S}/usr/lib/ladspa/* ${S}/usr/lib32/ladspa/ rm ${S}/usr/lib/ladspa/ -fr fi }
インストール例。
$ sudo mkdir /usr/local/overlays/local/app-emulation/emul-linux-x86-soundlibs/files -p $ sudo mv emul-linux-x86-soundlibs-9999.ebuild /usr/local/overlays/local/app-emulation/emul-linux-x86-soundlibs/ $ sudo cp [tbz2の保存先] /usr/portage/distfiles/ $ sudo emerge -avu emul-linux-x86-soundlibs
emul-linux-x86-medialibsについて
全て問題なくビルドでき、独立した記事にするほどではないため、ここに書くことにする。- fribidi(0.10.7)
- lame(3.97-r1)
- libdv(1.0.0-r2 USE="xv -sdl")
- libmad(0.15.1b-r2)
- libtheora(1.0_alpha6-r1 USE="encode")
- xvid (1.1.3)
ファイル名: emul-linux-x86-medialibs-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-medialibs/emul-linux-x86-medialibs-10.2.ebuild,v 1.3 2007/03/10 20:25:53 beandog Exp $ inherit emul-libs SRC_URI="mirror://gentoo/fribidi-0.10.7.tbz2 mirror://gentoo/lame-3.97-r1.tbz2 mirror://gentoo/libdv-1.0.0-r2.tbz2 mirror://gentoo/libmad-0.15.1b-r2.tbz2 mirror://gentoo/libtheora-1.0_alpha6-r1.tbz2 mirror://gentoo/xvid-1.1.3.tbz2" LICENSE="GPL-2 LGPL-2.1 as-is BSD" KEYWORDS="-* ~amd64" IUSE="nodevelop" DEPEND="" RDEPEND=">=app-emulation/emul-linux-x86-baselibs-10.2 >=app-emulation/emul-linux-x86-soundlibs-2.5-r2 >=app-emulation/emul-linux-x86-xlibs-10.0 !<media-video/mplayer-bin-1.0_rc1-r2" src_unpack() { ! use nodevelop && ALLOWED="(^${S}/usr/lib32/pkgconfig|.*lib32.*\.l?a$)" emul-libs_src_unpack }