PUREPERL_ONLY=1 for pure Perl build

2013年のランカスター合意によれば、XS/PP両実装を持つモジュールは PUREPERL_ONLY=1 / --pureperl-only というコマンドラインオプションでXSをオプトアウトしたビルドをできるようにすべきだ、とのことです。そこで、Module::Install::XSUtil 0.44 では PUREPERL_ONLY=1 を指定できるようにしました。

なお、cpanminus 1.7からは --pp オプションで PUREPERL_ONLY を有効にしてインストールできるようになるようです。
Text::Xslate, Mouse, Data::MessagePackはすでに対応済みなので、cpanmが正式にリリースされれば簡単にpure Perlビルドでモジュールをインストールできます。

以下該当セクションと日本語訳:

Specifying pure-perl builds

Some distributions offer an "XS" version or a "Pure Perl" version that can be selected during configuration. Currently, each of these has their own way for users to indicate this, which makes it impossible for CPAN clients or other build tools to help users select automatically.

Going forward, the "spec" for Makefile.PL and Build.PL will include command line options to request a "pure Perl only" build. These will be:

  PUREPERL_ONLY=1 (for Makefile.PL)
  --pureperl-only (for Build.PL)

These may be set in the PERL_MM_OPT or PERL_MB_OPT environment variables just like any other command line option.

If present, distribution authors must ensure that the installed modules do not require loading XS (whether directly or via Inline) or dynamically generate any platform-specific code. The installed files must be able to run correctly if copied to another machine with the same Perl version but a different architecture (e.g. "fatpacking" an application). If this condition can not be met, configuration must exit with an error.
Pure-Perlビルドの指定

いくつかのディストリビューションは"XS"版と"Pure Perl"版をビルド前に選べるようになっている。現在のところ、それぞれのモジュールが独自のやり方でこれを選択するようになっており、CPANクライアントやビルドツールによる対応が不可能である。

将来的には、今回の合意に基づく仕様により Makefile.PL と Build.PL は以下のコマンドラインオプションをサポートし、"pure Perl only"ビルドを要求することができるようになる。

  PUREPERL_ONLY=1 (for Makefile.PL)
  --pureperl-only (for Build.PL)

これらは他のコマンドラインオプションと同様に、環境変数 PERL_MM_OPT と PERL_MB_OPT でも指定できる。

ディストリビューション作者は、これらが指定されたとき、インストールされるモジュールがXS(直接のみならずInline.pmなどによるものも含む)やその他のプラットフォーム依存のコードを生成しないようにすること。つまり、インストールされたファイルは、コピーするだけで他のマシンでも正しく動作するようにしなければならない。そのマシンは同じバージョンのPerlがインストールされていれば、アーキテクチャが異なってもよいものとする。もし条件が整わないならば、コンフィグレーションスクリプトはエラーで終了しなければならない。