1

XS を使用して C ライブラリにバインドする Perl モジュールに取り組んでいます。ビルドすると、次のような警告メッセージが表示されますUse of uninitialized value $num in subtraction (-) at /usr/lib/perl5/vendor_perl/5.14.2/ExtUtils/ParseXS.pm line 1769, <GEN8> line 90.

これは、 ExtUtils::Constantによって生成されたコードによってトリガーされます。INCLUDE: const-xs.incFoo.xsの行をコメント アウトすると、警告が削除されます。しかし、バグがExtUtils::ParseXSにあるのか ExtUtils::Constantにあるのかはわかりません。

ExtUtils::Constant 0.23、ExtUtils::ParseXS 3.15、Module::Build 0.38、および Perl 5.14.2 を使用しています。

外部 C ライブラリを必要としないかなり小さなテスト ケースに切り詰めることができましたが、ここに投稿するにはまだ大きすぎます。GitHub repoに配置しました。バグを再現するには、リポジトリを複製し、タイプperl Build.PLしてから./Build. 君は見るべきだ:

$ perl Build.PL
Regenerating constants...
Created MYMETA.yml and MYMETA.json
Creating new 'Build' script for 'Foo' version '0.01'
$ ./Build 
Building Foo
Use of uninitialized value $num in subtraction ...
gcc ... -o lib/Foo.o lib/Foo.c
ExtUtils::Mkbootstrap::Mkbootstrap('blib/arch/auto/Foo/Foo.bs')
gcc ... -o blib/arch/auto/Foo/Foo.so lib/Foo.o

ExtUtils::Constant がインストールされている場合にのみ、「Regenerating constants...」が表示されます。生成されたファイルをレポに追加したので、バグを再現するためにそれは必要ありません。

問題が何であれ、含まれているテストがパスするため、コードの動作が停止するようには見えません。

更新:これをRT#112776として報告しました。コンセンサスは ExtUtils::ParseXS のバグであると思われますが、解決策は明確ではありません。

4

0 に答える 0