Namazu-devel-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Synced from HEAD



Tadamasa Teranishi wrote:

> ということはですね。$MKNMZRCや$HOME/.mknmzrc が設定されている
> 環境では make check はそれらのパラメータの影響を受けてしまうという
> ことではないのでしょうか? それはそれでまずいような気がします。

make check時に無実のエラーが出るのはつらいので直しておきたいですね

> # 現状と変わりませんので、改悪という意味ではなくて、インストール前
> # の動作確認のための修正という趣旨からは外れてくるような気がします。
> 
自分ではMKNMZRCも$HOME/.mknmzrcも使っていないので
当面テストを楽にできるようにと、中途半端に考えていました。
当初の目的を果たすためにはこの2つのテストの意義を整理した上で
修正させていただくのがよいでしょう。

> =====================================================================
> 
> ところで、問題の $CONFDIR/mknmzrc ですが、これは Win32 ネイティブ版
> では、おそらく使われていません。
> また、MKNMZRC 環境変数は UNIX 版では使われていないでしょう。
> http://www.namazu.org/doc/manual.html.ja#mknmzrc
> にも登場しません。
> 
> 実装された経緯を知りませんが、Win32 版を作る際に $CONFDIR/mknmzrc
> の代わりとして便宜上、MKNMZRC 環境変数が導入されたのではないで
> しょうか。
> もし、そうなら MKNMZRC 環境変数が設定された場合はそちらを読み込み
> $CONFDIR/mknmzrc は無視するという変更を加えてはどうでしょう。
> 
> こうすることで、make check の時は MKNMZNORC を設定して、load_rcfiles
> を skip する。mknmz-10, mknmz-12 では MKNMZNORC を未定義に戻し、
> MKNMZRC, HOME を設定(不要ならダミーの値を設定)するということで、
> 目的が果たせるのではないでしょうか?
> そして、その方が MKNMZRC や HOME/.mknmzrc のテストを行うには都合が
> 良いはずです。
> 
> =====================================================================
> 
> さらに
> mknmz-10 は $HOME/.mknmzrc から読み込まないといけないのでしょうか?
> 
> $HOME/.mknmzrc が $CONFDIR/mknmzrc よりプライオリティが高いことを
> テストしているようにも見えるのですが、単に設定が上書きされる必要が
> あるから、より後で読み込まれる $HOME/.mknmzrc を使っているだけ
> なのではないかと思ったりします。もしそうなら -f に書き換えることが
> できます。
> 
> mknmz-10 は $HOME/.mknmzrc のテストが目的ということなら、-f で別の 
> rc ファイルも指定した場合のテストや、MKNMZRC に別の rc ファイルも
> 指定した場合のテストを行うべきではないでしょうか。
> ($CONFDIR/mknmzrc は差し替えると厄介だからテストしづらいので、
> ちょっと問題)
> -- 
> =====================================================================

下記のようにしたいと思います。diffを添付しています

・pl/conf.plと-fで指定したファイルは必ず読み込むが
 MKNMZNORCがあればそれ以外の全てのmknmzrcファイルの読み込みを止める。
 (make check時に既存環境から独立した状態にするために用いられる
  テスト用の変数であるとドキュメントに書きますか?)

・mknmz-12は-fオプションを用いてmknmzrcファイルを読み込むように修正する。
 mknmz-12はMKNMZRCをテストすることを目的としたスクリプトではないため
 この修正による影響はない。

・mknmz-10も-fオプションを用いてmknmzrcファイルを読むものに修正する。
 mknmz-10はmknmzrcと--allowオプションの優先順位の評価のテストであるが
 コマンドラインで指定した個別の設定がrcファイルで読まれたものよりも
 順位が高いことを調べているので-fに置き換えてもよい。

・上記の修正にあわせてparse_option内で-fで指定されたmknmzrcを読み込んだ
 後で他のオプションの値を代入するようにする。
 (rcファイルで上書きされることを知っていてオプションで指定する人はい
 ないのでこれで正しい動作になります。)

設定ファイルの読み込み順序による動作の検証については
0. $PKGDATADIR/pl/conf.pl
1. $MKNMZRC/mknmzrc (Win32ネイティブでのみ使用)
2. $(sysconfdir)/$(PACKAGE)/mknmzrc (Win32ネイティブでは使用を前提としていない)
  通常は /usr/local/etc/namazu/mknmzrc
3. ~/.mknmzrc (Win32ネイティブでは使用を前提としていない)
4. -f, --config=FILE オプションで FILE に指定した mknmzrc(等)
5. --allow オプション等コマンドラインで指定した個別の内容
という順序の優先順位が確保されていることをチェックするために
別途スクリプトを用意してあげることにして
その際にmknmz-10を発展的解消という事にしてはいかがでしょうか。
(先送りですね)

臼田幸生
Index: scripts/mknmz.in
===================================================================
RCS file: /storage/cvsroot/namazu/scripts/mknmz.in,v
retrieving revision 1.132
diff -u -r1.132 mknmz.in
--- scripts/mknmz.in	4 Mar 2004 10:44:24 -0000	1.132
+++ scripts/mknmz.in	7 Mar 2004 03:29:17 -0000
@@ -86,7 +86,7 @@
     util::set_lang();
     textdomain('namazu', $util::LANG_MSG);
 
-    load_rcfiles();
+    load_rcfiles() if !(defined $ENV{'MKNMZNORC'});
     load_modules();
     load_archivemodules();
     my ($output_dir, @targets) = parse_options();
@@ -1159,14 +1159,15 @@
     my $target_list = undef;
     my $index_lang = undef;
 
+    my %opt_conf;
 
 #    Getopt::Long::Configure('bundling');
     Getopt::Long::config('bundling');
     my %argopts = (
        	       '0|help'              => \$opt_help,
-	       '1|exclude=s'         => \$conf::EXCLUDE_PATH,
-	       '2|deny=s'            => \$conf::DENY_FILE,
-	       '3|allow=s'           => \$conf::ALLOW_FILE,
+	       '1|exclude=s'         => \$opt_conf{'EXCLUDE_PATH'},
+	       '2|deny=s'            => \$opt_conf{'DENY_FILE'},
+	       '3|allow=s'           => \$opt_conf{'ALLOW_FILE'},
 	       '4|update=s'          => \$update_index,
 	       '5|mhonarc'           => \$opt_mhonarc,
 	       '6|mtime=s'           => \$var::Opt{'mtime'},
@@ -1227,6 +1228,11 @@
 
     if ($opt_config) {
 	load_rcfile($ConfigFile = $opt_config);
+    }
+    foreach my $key (keys %opt_conf){
+	if (defined ($opt_conf{$key})) { 
+	     ${*{$conf::{$key}}{SCALAR}} = $opt_conf{$key};
+	}
     }
 
     if ($index_lang) {
Index: tests/mknmz-10
===================================================================
RCS file: /storage/cvsroot/namazu/tests/mknmz-10,v
retrieving revision 1.3
diff -u -r1.3 mknmz-10
--- tests/mknmz-10	16 Sep 2001 12:29:15 -0000	1.3
+++ tests/mknmz-10	7 Mar 2004 03:29:17 -0000
@@ -19,12 +19,12 @@
     rm -f idx13/NMZ.*
 fi
 
-HOME=`pwd`; export HOME
-tmprc="$HOME/.mknmzrc"
+pwd=`pwd`
+tmprc="$pwd/tmp.mknmzrc"
 echo '$conf::ALLOW_FILE=".*\\.txt"' > $tmprc
 
-../scripts/mknmz -O                    idx12 $TARGET >> $LOG 2>&1
-../scripts/mknmz --allow='.*\.html' -O idx13 $TARGET >> $LOG 2>&1
+../scripts/mknmz -f $tmprc -O                    idx12 $TARGET >> $LOG 2>&1
+../scripts/mknmz -f $tmprc --allow='.*\.html' -O idx13 $TARGET >> $LOG 2>&1
 rm $tmprc
 grep -v '\.txt'  idx12/NMZ.field.uri >> $LOG && exit 1
 grep '\.txt'     idx12/NMZ.field.uri >> $LOG || exit $?
Index: tests/mknmz-12
===================================================================
RCS file: /storage/cvsroot/namazu/tests/mknmz-12,v
retrieving revision 1.4
diff -u -r1.4 mknmz-12
--- tests/mknmz-12	18 Sep 2001 10:53:46 -0000	1.4
+++ tests/mknmz-12	7 Mar 2004 03:29:17 -0000
@@ -10,8 +10,8 @@
 IDXDIR=idx15
 TXTCOUNT=`ls $top_srcdir/tests/data/filter/*.txt|wc -l`
 FDIR=$top_srcdir/tests/data/filter
-MKNMZRC=`pwd`/mknmzrc-mknmz12
-export MKNMZRC
+pwd=`pwd`
+tmprc="$pwd/mknmzrc-mknmz12"
 
 if test ! -d $IDXDIR; then
     mkdir $IDXDIR
@@ -20,7 +20,7 @@
 fi
 
 echo "package conf; \$FILTERDIR='$FDIR'; 1;" > mknmzrc-mknmz12
-RESULTCOUNT=`../scripts/mknmz -C|egrep x-test|wc -l`
+RESULTCOUNT=`../scripts/mknmz -f $tmprc -C|egrep x-test|wc -l`
 rm -f mknmzrc-mknmz12
 test $RESULTCOUNT -eq 1 || exit $?
 
@@ -29,7 +29,7 @@
     mkdir     $IDXDIR
 fi
 
-../scripts/mknmz --allow='.*.txt' -O $IDXDIR $TARGET >> $LOG 2>&1
+../scripts/mknmz -f $tmprc --allow='.*.txt' -O $IDXDIR $TARGET >> $LOG 2>&1
 rm -f mknmzrc-mknmz12
 RESULTCOUNT=`wc -l < $IDXDIR/NMZ.field.uri`
 test $TXTCOUNT -eq $RESULTCOUNT