Raspberry Pi上のArch Linux ARMでAURのAsteriskをdistccで素早くビルドする
distccを使って、AURパッケージをビルドしようとしていた。しかし、何故かローカルでビルドされて、どうやってもスレーブにコンパイルが振られなかった。結局のところ、-march=nativeがgccの引数に与えられていたのが原因だった模様だった。menuselectでBUILD_NATIVEを無効にすることでビルドすることができた。Ryzen 7 1700を積んでいるPCではHyper-Vを使って8コア割り当てて、仮想マシン上でArch Linuxを走らせて、distccdを動かしている。x86_64 CPUを8コア利用することビルドは10分以内で終わった。configureに2,3分、圧縮にも同じくらいかかっているので、コンパイル自体は5,6分くらいだろうか。Raspberry Pi 3だけでビルドすると20分はかかった。ヒートシンクを取り付けていないので加熱でサーマルスロットリングがかかって遅かったかもしれない。
スレーブ側(PC)
こちらで紹介されているAURパッケージを入れる。/etc/conf.d/distccd
を編集して、ローカルネットワークからジョブを送り込めるようにする。そして、 sudo systemctl start distccd-armv7h
を実行して、distccdを走らせておく。
マスター側(Raspberry Pi)
~/distccd/hosts
192.168.0.XX:3635,lzo,cpp
trizen -S asteriskを実行した。
pkgbuildを編集するか聞かれたら編集するを選んで、下記のようにする。
build() { cd ${pkgname}-${pkgver} ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --sbindir=/usr/bin make menuselect menuselect/menuselect --disable BUILD_NATIVE make -j12 }
あとは適当に続行すればよい。
追記:日本語音声を入れ忘れていた。
make menuselect menuselect/menuselect --enable CORE-SOUNDS-JA-WAV --enable CORE-SOUNDS-JA-ULAW make -j4