Oct 20, 2009

玄箱HG NetBSD distcc で混合pkgsrc作成環境 [computer]

NetBSDのベースシステムはクロスビルドが簡単にできるようになっているがpkgsrcはそれほど簡単ではない。

pkgsrcはdistccに対応しているのでdistccを使ってホストPC側のクロスコンパイラを使うようにすることができる。configure等は玄箱上のセルフ環境で行うのですべてが速くなるわけではないが、pkgsrcがかなり「使える」ようになる。

  • ホストPC側の設定
  • distccdを高速なホストPC側で動かす。distccのマニュアルによればdistccでクロスコンパイルを行う場合はターゲットアーキテクチャ用のクロスコンパイラを規則に従った名前にして...等あるが、ここではNetBSDのpkgsrcで使う関係上別の方法で対応する。

    ホスト側のコンパイラはNetBSDベースシステムのクロスビルドで使用したtoolchainのコンパイラを利用する。

    例えば/usr/local/evbppc/toolchain/bin以下にクロスコンパイラがあるとする。 (toolchainの作成時に例えば、

    # ./build.sh -T /usr/local/evbppc/toolchain -m evbppc
    
    等で作成しておく)

    # cd /usr/local/evbppc/toolchain/bin
    # ln -s powerpc--netbsd-gcc gcc
    # ln -s powerpc--netbsd-gcc cc
    # ln -s powerpc--netbsd-g++ g++
    # ln -s powerpc--netbsd-c++ c++
    

    distccdの起動時にPATHをクロスコンパイラのあるディレクトリにしておくようにする。 例えばホストのIPアドレスが 192.168.1.129 であるとして起動スクリプトで

    #!/bin/sh
    PATH=/usr/local/evbppc/toolchain/bin
    distccd -a 192.168.1.0/24 --user distcc --daemon \
    -P /var/run/distcc.pid --listen 192.168.1.129
    
    など。

    ちなみにホストPC側がFreeBSDの場合、portsからdistccをインストールするとデフォルトではIPv6のアドレスに対してbindされるためIPv4でネットワークを構築している場合、上記のように--listenでIPv4のアドレスを指定しないと使えない場合がある。

  • ターゲット(玄箱)側の設定
  • NetBSDのpkgsrcでコンパイラにdistccを使う場合なら/etc/mk.confに以下のような記述を 入れておけばよい。DISTCC_HOSTSはdistccでコンパイル行うホストのアドレスを書いておく(distccのマニュアル参照)。

    PKGSRC_COMPILER= distcc gcc
    DISTCC_HOSTS=    192.168.1.129
    

Posted at 23:54 in computer

Archives
Powered by
blosxom 2.0
and
modified by
blosxom starter kit