Gentoo Prefix再び

新しくMacBook Pro 13-inchを購入したので、早速Gentoo Prefixを導入した。初の64bitマシンを手に入れたので、64bitでビルドしたぜ。これで、64bit Unix環境が手に入ったわけだ。

今回、セットアップしてると、Pythonの2.5から2.6への切り替えとか、findutils周りでエラー出た。どうも、bootstrap-prefix.shで導入されるPortage Treeが古いみたいで、事前にemerge --syncしてやることで、なんとかなった。

といっても、Gentoo PrefixのACCEPT_KEYWORDSはデフォルトが~x64-macosなので、unstableまっしぐら。タイミングによってはビルドできないんだよな。Gentooへの愛が試されるわけですね。わかります。

セットアップドキュメントの方も更新されてたみたいなので、またセットアップ用のスクリプトを置いとくよ。

#!/bin/bash

# Code Listing 1.1: Export EPREFIX variable
export EPREFIX="/Gentoo"

# Code Listing 1.2: Add Prefix paths to your PATH
export PATH="$EPREFIX/usr/bin:$EPREFIX/bin:$EPREFIX/tmp/usr/bin:$EPREFIX/tmp/bin:$PATH"
export CHOST="x86_64-apple-darwin9"

# Code Listing 1.3: Use the bootstrap script
curl -o /tmp/bootstrap-prefix.sh http://overlays.gentoo.org/proj/alt/browser/trunk/prefix-overlay/scripts/bootstrap-prefix.sh?format=txt
chmod 755 /tmp/bootstrap-prefix.sh
./bootstrap-prefix.sh $EPREFIX tree
./bootstrap-prefix.sh $EPREFIX/tmp make
./bootstrap-prefix.sh $EPREFIX/tmp wget
./bootstrap-prefix.sh $EPREFIX/tmp sed
./bootstrap-prefix.sh $EPREFIX/tmp python
./bootstrap-prefix.sh $EPREFIX/tmp coreutils6
./bootstrap-prefix.sh $EPREFIX/tmp findutils
./bootstrap-prefix.sh $EPREFIX/tmp tar15
./bootstrap-prefix.sh $EPREFIX/tmp patch9
./bootstrap-prefix.sh $EPREFIX/tmp grep
./bootstrap-prefix.sh $EPREFIX/tmp gawk
./bootstrap-prefix.sh $EPREFIX/tmp bash
./bootstrap-prefix.sh $EPREFIX portage

# Code Listing 1.4: Setup ld directions
export LDFLAGS="-Wl,-search_paths_first -L${EPREFIX}/usr/lib -L${EPREFIX}/lib"
export CPPFLAGS="-I${EPREFIX}/usr/include"
export CC="gcc -m64"
export CXX="g++ -m64"
export HOSTCC="gcc -m64"

# Code Listing 1.5: rehash in bash
hash -r

# ----- little hack -----
emerge --oneshot --nodeps rsync
emerge --sync
# -----------------------

# Code Listing 1.6: emerge sed and pax-utils
emerge --oneshot sed
emerge --oneshot pax-utils

# Code Listing 1.7: emerge bash and wget
emerge --oneshot --nodeps wget
emerge --oneshot bash

# Code Listing 1.8: emerge linker and compiler
emerge --oneshot --nodeps baselayout-prefix
emerge --oneshot --nodeps lzma-utils
emerge --oneshot --nodeps m4
emerge --oneshot --nodeps flex
emerge --oneshot --nodeps bison
emerge --oneshot --nodeps binutils-config
emerge --oneshot --nodeps binutils-apple
emerge --oneshot --nodeps gcc-config
emerge --oneshot --nodeps gcc-apple

# Code Listing 1.9: unset no longer needed environment variables
unseg LDFLAGS CPPFLAGS CHOST CC CXX HOSTCC

# Code Listing 1.10: emerge several tools
emerge --oneshot coreutils
emerge --oneshot findutils
emerge --oneshot tar
emerge --oneshot grep
emerge --oneshot patch
emerge --oneshot gawk
emerge --oneshot make
emerge --oneshot --nodeps file
emerge --oneshot --nodeps eselect

# Code Listing 1.11: emerge portage
env FEATURES="-collision-protect" emerge --oneshot portage

# Code Listing 1.12: remove tmp directory
rm -Rf $EPREFIX/tmp/*
hash -r

# Code Listing 1.13: Updating the tree
emerge --sync

# Code Listing 1.14: emerge system
emerge -u system

# Code Listing 1.15: Customising the Prefix installation - example
echo 'USE="unicode nls"' >> $EPREFIX/etc/make.conf
echo 'CFLAGS="-O2 -pipe -march=nocona"' >> $EPREFIX/etc/make.conf
echo 'CXXFLAGS="${CFLAGS}"' >> $EPREFIX/etc/make.conf
echo 'MAKEOPTS="-j4"' >> $EPREFIX/etc/make.conf

# Code Listing 1.16: doing the final system installation
emerge -e system