カレンダー
前月2020年 11月翌月
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
WordPress カテゴリ一覧
WordPress 最近のコメント
WordPress 最近の投稿
WordPress 月別過去ログ

2007年7月23日(月曜日)

Cライブラリの動的ロードに失敗するのが原因でテストが失敗する件

カテゴリー: - watanabe @ 17時07分11秒
perlにはCライブラリを動的にロードする機構があります。
でも、テストのときはこの動的ロードが無効になっています。
例:
% PERL_DL_NONLAZY=1 perl -I blib/lib -I blib/arch  -le 'require APR::Request::Apache2; print "ok";'
Can't load '/usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so' for module APR::Request::Apache2: /usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so: undefined symbol: modperl_xs_sv2request_rec at /usr/lib/perl/5.8/DynaLoader.pm line 225.
 at -e line 1
Compilation failed in require at -e line 1.
% PERL_DL_NONLAZY=0 perl -I blib/lib -I blib/arch  -le 'require APR::Request::Apache2; print "ok";'
ok
mod_perlを使っていたテストをmod_perl2に変更している最中に、
このPERL_DL_NONLAZY環境変数が原因でテストが失敗することがあったのでとりあえずの対応方法 これを
use strict;
use Test::More;
こうします
use strict;
BEGIN { $ENV{PERL_DL_NONLAZY} = 0; }
use Test::More;
perlrunから引用
    PERL_DL_NONLAZY
                Set to one to have perl resolve all undefined symbols when
                it loads a dynamic library. The default behaviour is to
                resolve symbols when they are used. Setting this variable is
                useful during testing of extensions as it ensures that you
                get an error on misspelled function names even if the test
                suite doesn't call it.
もっとましな方法がないのかと思う今日この頃。

TrackBacks

このコメントのRSS

TrackBack URL : http://www.toshiki.net/x/modules/wordpress/wp-trackback.php/62

この投稿には、まだコメントが付いていません

コメント

投稿された内容の著作権はコメントの投稿者に帰属します。

19 queries. 0.028 sec.
Powered by WordPress Module based on WordPress ME & WordPress