YAPC::Asiaで魅了されたPugsの世界。鉄は熱いうちに打てってことで早速手元のFC4にインストールしてみました。
Haskellのインストール
PugsをコンパイルするにはHaskellコンパイラとプラグインをインストール必要があります。
The Glasgow Haskell Compiler
でも面倒なのでFedoraでyumる方法もあります。
Fedora Haskell
[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.confinclude ld.so.conf.d/*.conf /usr/local/lib
$ /sbin/ldconfig
Pugsのインストール
いよいよPugsのインスールします。
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にに統合されることが決定しました。
コンパイルの待ち時間は何だったんだ・・・と、一瞬ヒヤッとしましたが、そ~ゆ~ことですね。

コメントする