Perl 5.11.0 がでてたのでコンパイルしてみた

とりあえずコンパイルしてみた.

気をつける点としては以下.

  • Developer Release なので -Dusedevel が必要
  • MacOS だと lib/locale.t がコケた
  • MacOS だったら DTrace 有効にしてみるか
    • perldoc INSTALL 参照
  • ついでにUniversal に
    • perldoc README.macosx 参照

MacOSX

$ wget http://search.cpan.org/CPAN/authors/id/J/JE/JESSE/perl-5.11.0.tar.bz2
$ tar jxf perl-5.11.0.tar.bz2
$ export SDK=/Developer/SDKs/MacOSX10.6.sdk
$ sh Configure -de -Dusedevel -Dusedtrace -Dprefix=$HOME/modules/perl-5.11.0 \
      -Accflags="-arch i686 -arch x86_64 -nostdinc -B$SDK/usr/include/gcc \
                               -B$SDK/usr/lib/gcc -isystem$SDK/usr/include \
                               -F$SDK/System/Library/Frameworks" \
      -Aldflags="-arch i686 -arch x86_64 -Wl,-syslibroot,$SDK" \
      2> c.err | tee c.log
$ make 2> m.err | tee m.log
$ env LANG=C make test 2> mt.err | tee mt.log
$ make install
      24     120    1911
(中略) # パスを通したりした
$ rehash
$ perl5.11.0 -e 'sub a {}; sleep 10; a'
$ sudo dtrace -s perl.d   # 別ターミナルで10秒以内に起動
dtrace: script 'perl.d' matched 8 probes
CPU     ID                    FUNCTION:NAME
  1  22188       Perl_pp_entersub:sub-entry -> a (-e:1)
  1  22192      Perl_pp_leavesub:sub-return <- a (-e:1)
^C
$ cat perl.d
perl*:::sub-entry, perl*:::sub-return
{
  printf("%s %s (%s:%d)", probename == "sub-entry" ? "->" : "<-",
            copyinstr(arg0), copyinstr(arg1), arg2);
}
$ sudo dtrace -l | awk '/perl/{print $3,$4,$5}' | column.pl
perl5.11.0 Perl_pp_sort       sub-entry
perl5.11.0 Perl_pp_dbstate    sub-entry
perl5.11.0 Perl_pp_entersub   sub-entry
perl5.11.0 Perl_pp_return     sub-return
perl5.11.0 Perl_pp_last       sub-return
perl5.11.0 Perl_dounwind      sub-return
perl5.11.0 Perl_pp_leavesub   sub-return
perl5.11.0 Perl_pp_leavesublv sub-return
$ cd $HOME/modules/perl-5.11.0
$ file bin/perl5.11.0
bin/perl5.11.0: Mach-O universal binary with 2 architectures
bin/perl5.11.0 (for architecture i386):      Mach-O executable i386
bin/perl5.11.0 (for architecture x86_64):    Mach-O 64-bit executable x86_64
$ arch -i386 perl5.11.0 -v|egrep 11
This is perl, v5.11.0 (*) built for darwin-2level
$ arch -x86_64 perl5.11.0 -v |egrep 11
This is perl, v5.11.0 (*) built for darwin-2level

どうも,lib/locale.t でFAIL するけど気にしない.*1

Debian

$ wget http://search.cpan.org/CPAN/authors/id/J/JE/JESSE/perl-5.11.0.tar.bz2
$ tar jxf perl-5.11.0.tar.bz2
$ cd perl-5.11.0
$ ./configure -de -Dusedevel -Dprefix=$HOME/moduels/perl-5.11.0 2> c.err | tee c.log
$ make 2> m.err | tee m.log
$ make test 2> mt.err | tee mt.log
$ make install

FreeBSD

$ wget http://search.cpan.org/CPAN/authors/id/J/JE/JESSE/perl-5.11.0.tar.bz2
$ tar jxf perl-5.11.0.tar.bz2
$ cd perl-5.11.0
$ ./configure -de -Dusedevel -Dprefix=$HOME/moduels/perl-5.11.0 2> c.err | tee c.log
$ make 2> m.err | tee m.log
$ make test 2> mt.err | tee mt.log
$ make install

参考

dtrace は,まだ最初の辺くらいしか読んでません.

*1:そもそもbe_BY.CP1131 がどこかわからない