perlでdtrace環境構築

<2010/03/27>
perl 5.10.1 について書きました http://d.hatena.ne.jp/handler/20100327/1269699798

    • -

Shibuya.pm #11 に行ってきて、DanさんのSandbox話の中の ptrace って自分は使ったことないな〜?
Solarisは? => dtrace で代用するのが普通? => ついでに perl環境作っとく?

ということで、とりあえずコンパイルしてみる。
既に、/opt/DTT に DTraceToolkit をインストール済みの状態から始めます。

Perl provider のお話は、/opt/DTT/Perl/Readme に書いてあります。
セットアップのやり方


1. Download and extract perl 5.8.8 (www.cpan.org)
2. Download Richard's patch
3. Apply Richard's patch (gpatch -p1 -i patchfile)
4. sh Configure
5. make perldtrace.h
6. /usr/sbin/dtrace -h -s perldtrace.d -o perldtrace.h
7. make

既に、/usr/local/bin/perlperl 5.10.0 を入れているので、こいつは $HOME/local/perl 以下に入れて、使いたい時だけフルパス指定で使えるようにします。
(perlのコマンドは、$HOME/local/perl/bin/perl になります。)

○1〜4


$ wget http://www.cpan.org/src/perl-5.8.8.tar.gz
$ wget http://rich.phekda.org/perl-dtrace/perl-5.8.8-dtrace-20070720.patch
$ gzip -cd perl-5.8.8.tar.gz | tar xf -
$ cd perl-5.8.8
$ gpatch -p1 -i ../perl-5.8.8-dtrace-20070720.patch
patching file Configure
patching file Makefile.SH
patching file config_h.SH
patching file cop.h
patching file perldtrace.d
patching file page-faults.d
patching file subs.d
patching file subs-old.d
patching file subs-tree.d
$

○5〜7
コンパイルのオプションはなんとなくで、深い意味はなし。
SunStudio を使っています。


$ export PATH=/usr/ccs/bin:$PATH
$ sh Configure -des -Dcc=/opt/SunStudioExpress/bin/cc -Dinc_version_list=none
-Dprefix=$HOME/local/perl
$ make perldtrace.h
make: Warning: Both `makefile' and `Makefile' exist
/usr/sbin/dtrace -h -s perldtrace.d -o perldtrace.h
$ /usr/sbin/dtrace -h -s perldtrace.d -o perldtrace.h
$ make
...
Everything is up to date. Type 'make test' to run test suite.
$ make test
...
t/op/caller...............................FAILED--no leader found
t/op/glob.................................FAILED--expected 10 tests, saw 0
ext/B/t/concise-xs........................# Looks like you planned 778 tests
but ran 1 extra.
FAILED--expected 778 tests, saw 779
...
Failed 3 test scripts out of 933, 99.68% okay.
...
$
$ make install

テストが3つほどコケてますが、無視して make install してしまいます。
/opt/DTT/Perl 以下のソースはこれから読みます。。。