チケット #43962 man ページが含まれない配布tarball テスト -------------------- クリーン環境整備(ローカル) -------------------- 最新クローン取得 ※ 過去に取得しているクローンリポジトリは極力用いないこと。本テスト条件に   反して、release ディレクトリが存在している可能性があるため。 git clone git://git.osdn.net/gitroot/linuxjm/jm.git test0001 当 test0001 ディレクトリを $(JMDIR) と表記する。 2回目以降を再処理する際には、以下を実行して環境クリーンアップ cd $(JMDIR) make clean rm -fr tmp/* -------------------- 現状 {manual,pod} ソースの状況確認 -------------------- $(JMDIR)/{manual,pod} 配下の全サブディレクトリ(=つまり翻訳パッケージ)において release または contrib サブディレクトリが存在していないものを確認する。 以下のスクリプトを生成して、全サブディレクトリを走査しつつ、 release または contrib サブディレクトリが存在すれば ○、そうでなければ ☓ を付したテキスト一覧を得る。 cd $(JMDIR) cat > getPkgInfo.sh <<"EOF" #!/bin/sh echo -e package\trelease/contrib for d in `ls -d {manual,pod}/*/`; do echo -n $d if test -d $d/release || test -d $d/contrib; then echo -e "\t○" else echo -e "\t☓" fi done EOF 上記スクリプトを実行 cd $(JMDIR) sh getPkgInfo.sh >log/E01_pkgInfo.txt [EVIDENCE E01] release/contrib を持たないパッケージの確認エビデンス log/E01_pkgInfo.txt 実際のサブディレクトリを目視確認して、 release/contrib ディレクトリの存在有無が正しいことを確認 上記 E01_pkgInfo.txt をコピー、リネームして E02_pkgInfo.txt とし、その各行最終に、目視確認した結果として release/contrib ディレクトリがあったかなかったかを書き入れる。 [EVIDENCE E02] release/contrib を持たないパッケージの確認エビデンス 上記スクリプトの処理が実際を適切に表していることの確認 log/E02_pkgInfo.txt -------------------- 依存パッケージ準備 -------------------- rpm インストール ※ これがない環境では原則テストはできない。 man2html ビルド クローンリポジトリ内にある man2html をビルドする。 cd $(JMDIR)/admin/man-1.6g ./configure --prefix=. make DESTDIR=. install ※ これにより $(JMDIR)/admin/man-1.6g/man2html/man2html が生成される。 ※ この実行ファイルを以下のスクリプト内で指定する。 -------------------- 現状不備の暫定的修正 -------------------- 現時点にて $(JMDIR)/www/rpm/jman_pages.spec のエンコーディングが EUC であり、 処理が通らないため、このテスト実施のために暫定変更する。そもそも変更を正規の ものにする必要あり。それは他にゆずる。 cd $(JMDIR)/www/rpm mv jman_pages.spec{,.orig} nkf -w jman_pages.spec.orig > jman_pages.spec -------------------- 処理実行のためのスクリプト準備 -------------------- logディレクトリを生成した上で、以下に示すスクリプトを生成する。 これは月次バッチ ($(JMDIR)/admin/cron/webupdate-all.sh) 相当の処理を実現する。 cd $(JMDIR) mkdir -p log cat >testexec.sh <<"EOF" #!/bin/sh LOGFILE=log/$(/bin/date +%Y%m%d-%H%M%S).txt rm admin/site/sitemap.xml make JMHOME=$PWD \ MAN2HTML=$PWD/admin/man-1.6g/man2html/man2html all | \ tee $LOGFILE 2>&1 EOF -------------------- 修正前の現状処理確認 -------------------- 処理実行 cd $(JMDIR) sh testexec.sh [EVIDENCE E03] ここでログ出力された log/YYYYMMDD-HHMMSS.txt を以下にリネーム。 E03_YYYYMMDD-HHMMSS.txt 最終生成された taball の一覧を取得する。 cd $(JMDIR) ls htdocs/per-pkg/* >log/E04_tarballInfo.txt [EVIDENCE E04] 生成された tarball 一覧 E04_tarballInfo.txt 上の E04_tarballInfo.txt コピーリネームして E05_tarballInfo.txt とし、 その各行末に E01_pkgInfo.txt を連結させて一覧生成。 E01_pkgInfo.txt と全く同一のものが tarball として生成されている。 [EVIDENCE E05] E05_tarballInfo.txt ※ なお pod/sudo だけは translation_list が非存在のため  tarball が生成されない結果となっている。これは例外とする。 -------------------- 環境クリーンアップ(ローカル) -------------------- cd $(JMGDIR) make clean rm -fr tmp/* rm -f htdocs/per-pkg/* -------------------- ソース修正(パッチ適用) -------------------- パッチファイル生成 cat >test0001.patch <<"EOF" diff --git a/bin/mkdist.perl b/bin/mkdist.perl index e654a417..0049be31 100755 --- a/bin/mkdist.perl +++ b/bin/mkdist.perl @@ -54,6 +54,9 @@ while(){ unless(/.*manual\/([^\/]*)\/translation_list/){next;} my $pkg=$1; + # release または contrib ディレクトリを持たないパッケージは処理対象としない + if (! -d "$CVSROOT/manual/$pkg/release" && ! -d "$CVSROOT/manual/$pkg/contrib") {next;} + system "mkdir -p $DISTROOT/manual/$pkg/"; system "cp $tl $DISTROOT/manual/$pkg"; EOF パッチ適用 patch -Np1 -i test0001.patch -------------------- ソース修正後の再処理 -------------------- 処理実行 cd $(JMDIR) sh testexec.sh [EVIDENCE E13] ここでログ出力された log/YYYYMMDD-HHMMSS.txt を以下にリネーム。 E13_YYYYMMDD-HHMMSS.txt 最終生成された taball の一覧を取得する。 cd $(JMDIR) ls htdocs/per-pkg/* >log/E14_tarballInfo.txt [EVIDENCE E14] 生成された tarball 一覧 E14_tarballInfo.txt ソース修正前後において、最終生成された tarball 一覧結果である 前述の EVIDENCE ファイル 2 つを diff 比較  E04_tarballInfo.txt (ソース修正前)  E14_tarballInfo.txt (ソース修正後) cd $(JMDIR) diff -u log/E{0,1}4_tarballInfo.txt > log/E24_diff.txt [EVIDENCE E24] ソース修正前後での生成 tarball の内容比較 (行頭に "-" があればソース修正後に生成されなかった tarball を表す。) log/E24_diff.txt 上記ファイルから、以下の条件が満たされているかどうかを目視確認する: 1. ソース修正前後にて、一覧からなくなった tarball (diff 行の先頭が  "-" であるもの) は、release/contrib を含まないパッケージであること。 2. release/contrib を含まないパッケージが、上において "-" として挙げ  られており、取りこぼしがないこと。 3. release/contrib を含むパッケージが "-" になっていないこと。  (従来から作られるべきもの=今回のソース修正で欠落させるつもりのない   ものは、ソース修正前後で変わらずに生成されていること。) 4. その他、無用に "+" になっているパッケージがないこと。 目視確認=> OK (エビデンスなし)