YAPC::Asiaで魅了されたPugsの世界。鉄は熱いうちに打てってことで早速手元のFC4にインストールしてみました。
Haskellのインストール
PugsをコンパイルするにはHaskellコンパイラとプラグインをインストール必要があります。
The Glasgow Haskell Compiler
でも面倒なのでFedoraでyumる方法もあります。
Fedora Haskell
/etc/yum.repos.d/haskell.repo
[haskell-stable]
name=Haskell Packages (stable)
baseurl=http://haskell.org/fedora/haskell/$releasever/$basearch
gpgkey=http://haskell.org/fedora/RPM-GPG-KEY
gpgcheck=1
$ yum install ghc
$ yum install hs-plugins-641
Parrotのインストール
Parrotをembedさせる場合はParrotをインストールします。
Parrot Virtual Machine - parrotcode
$ tar xzf parrot-0.4.2.tar.gz
$ cd parrot-0.4.2
$ perl ./Configure.pl
$ make
$ make test
$ make install
Parrotのライブラリは/usr/local/libにインストールされるのでFedoraの場合ライブラリパスに/usr/local/libを通す必要があります。
/etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/lib
$ /sbin/ldconfig
Pugsのインストール
いよいよPugsのインスールします。
☺唐鳳☻ / Perl6-Pugs-6.2.11
Perl5とParrotをembedさせるため環境変数をセットします。
$ export PUGS_EMBED=perl5,parrot
$ export PARROT_PATH=/usr/local/src/parrot-0.4.2
Perl5だけをembedさせるには
$ export PUGS_EMBED=perl5
ただ、INSTALLを読むと
Parrot is used to provide Perl6-style regular expressions.
Perl5-style regular expressions (eg, rx:perl5/foo/) can be used
without any parrot at all. Pugs can be built to use parrot external
(the default), or embedded. External is recommended.
ってことなので今回はPerl5だけembedさせました。
Pugsをコンパイルします。
$ perl Makefile.PL
$ make
...
<built-in>:0:1: lexical error
Build failed: 256 at util/build_pugs.pl line 86.
make: *** [pugs] エラー 2
あうち。
そんな時は
$ export LANG=C
で幸せになれます。
再度
$ make
ちなみに猛烈に時間がかかるので、せっかちな人は
$ make unoptimized
で、パフォーマンスは落ちるものの、コンパイルは早く終わるようです。
無事終了したら
$ make test
testの方が時間かかったりします。
ひたすら待った挙句
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
t/rules/from_perl6_rules/litvar.t 29 1 3.45% 3
t/unspecced/times.t 5 1 20.00% 5
(5 subtests UNEXPECTEDLY SUCCEEDED) (1434 subtests TODO), 1155 subtests skipped.
Failed 2/506 test scripts, 99.60% okay. 2/9076 subtests failed, 99.98% okay.
make: *** [test_dynamic] Error 255
あうち。
まぁtest自体にTODOが多いってことで今回は気にせず
$ make install
何か動かしてみます。
$ pugs -e "{ 'Hello, ', @^x}.('World').say"
Hello, World
感動。(T T)
これから色々試してみたいと思います。
ちなみに、コンパイルを待っている間、ネットをふらふらしてたら
404 Not Found : Bugs Manifesto
本日をもって、PugsおよびParrotは、Bugにに統合されることが決定しました。
コンパイルの待ち時間は何だったんだ・・・と、一瞬ヒヤッとしましたが、そ~ゆ~ことですね。