hogeとはワイルドカードのようなものです。日々起こった、さまざまなこと −すなわちワイルドカード− を取り上げて日記を書く、という意味で名付けたのかというとそうでもありません。適当に決めたらこんな理由が浮かんできました。
12/21/2003 ふむ [長年日記]
tDiary 423日目
■ [Gentoo] ほ
むむ,テストパターンを生成するスクリプト がある! というわけで負けじと(?) このスクリプトにラッパーをかけて,自動的にテストさせるスクリプトを適当にでっちあげてみる.
#!/bin/bash
source /etc/init.d/functions.sh
for EBUILD in $@; do NAME="`basename ${EBUILD} .ebuild`"
grep IUSE ${EBUILD} | ruby usetest.rb | \ while read USE; do ebegin "Testing ebuild ${GOOD}${NAME} ${BRACKET}[ ${GOOD}${USE} ${BRACKET}] ${NORMAL}" eval "${USE} emerge =${NAME}" > /dev/null 2>&1 eend $? "Failed to emerge ${BAD}${NAME}${NORMAL} with ${BRACKET}[ ${BAD}${USE} ${BRACKET}]${NORMAL}" done done
これを実行すると,
root# ./usetest.sh /usr/portage.local/games-engines/onscripter/onscripter-20031129.ebuild * Testing ebuild onscripter-20031129 [ USE="oggvorbis avi mad" ] ... [ ok ] * Testing ebuild onscripter-20031129 [ USE="oggvorbis avi -mad" ] ... [ ok ] * Testing ebuild onscripter-20031129 [ USE="oggvorbis -avi mad" ] ... [ ok ] * Testing ebuild onscripter-20031129 [ USE="oggvorbis -avi -mad" ] ... [ ok ] * Testing ebuild onscripter-20031129 [ USE="-oggvorbis avi mad" ] ... * Failed to emerge onscripter-20031129 with [ USE="-oggvorbis avi mad" ] [ !! ]
* Testing ebuild onscripter-20031129 [ USE="-oggvorbis avi -mad" ] ... * Failed to emerge onscripter-20031129 with [ USE="-oggvorbis avi -mad" ] [ !! ]
* Testing ebuild onscripter-20031129 [ USE="-oggvorbis -avi mad" ] ... * Failed to emerge onscripter-20031129 with [ USE="-oggvorbis -avi mad" ] [ !! ]
* Testing ebuild onscripter-20031129 [ USE="-oggvorbis -avi -mad" ] ... * Failed to emerge onscripter-20031129 with [ USE="-oggvorbis -avi -mad" ] [ !! ]
うまく動かなかったやつは [ !! ] が出る*1.
見て分かるとおり(分かんねーよ),以下のような制限がある.
- 対象 ebuild が PORTDIR(_OVERLAY) なディレクトリになければならない (個人的に ebuild 直指定で emerge するのは嫌いなので)
- メッセージを全て殺すので,エラーがあったとしても何がなんだか分からない
- スゲー時間かかるくせにメッセージや進捗が表示されないのでまだかまだかとやきもきしてしまう
- 途中でやめれない (やめたかったら Ctrl-C を高橋名人もびっくりなくらい連打)
- エラー出ても die しないような ebuild だと超意味なしスクリプトと化す (ていうかエラー出たら die して下さい)
…ダメダメじゃん.
思いつく使い方としては,引数の ebuild は複数指定できるので,テストしたい ebuild を寝る前に一気に指定しておいて,エラーがあった分を後日検証するとか,そんな感じかな.
■ [Gentoo] というわけで
「メッセージをすべて殺す」と「途中でやめれない」をなんとかした (ような気がする) バージョン を作ってみました.無駄に長いのでファイルとして上げときます.
もうなんて言うかかなりやっつけに近いスクリプトですが僕のシェルプログラミング能力なんてこの程度です.てかもっと突っ込んだことやろうとしたら Python で portage.py 使ってやるのが吉かと.
■ [音楽] うげ
$ ls ~/data/MP3/HR-HM Accept/ Fire-Wind/ Nightwish/ Stratovarius/ Angra/ Gamma-Ray/ Nostradameus/ Symphony-X/ Arch-Enemy/ Gardenian/ Primal-Fear/ System-Of-A-Down/ At-The-Gates/ Green-Day/ Queensryche/ Ten/ At-Vance/ Hammer-Fall/ Rage/ Terra-Nova/ Axel-Rudi-Pell/ Helloween/ Rhapsody/ The-Encyclopedia-Of-German-Metal/ Bon-Jovi/ Highload/ Ring-Of-Fire/ Thunderhead/ Children-Of-Bodom/ Impellitteri/ Royal-Hunt/ Twilightning/ Daniele-Liverani/ Iron-Maiden/ Running-Wild/ V2/ Dark-Moor/ Iron-Savior/ Rush/ Valiance/ Defleshed/ Jordan-Rudess/ Santana/ Vision-Divine/ Delight/ Lana-Lane/ Savatage/ X/ Dream-Evil/ Luca-Turilli/ Secret-Sphere/ Yngwie/ Dream-Theater/ Manowar/ Sinner/ 陰陽座/ Drowning-Pool/ Metal1/ Slipknot/ 特撮/ Fair-Warning/ Mind-Odyssey/ Sonata-Arctica/
$ find ~/data/MP3/HR-HM -name *.mp3 | wc -l 1724
$ du -hs ~/data/MP3/HR-HM 8.6G /home/atzm/data/MP3/HR-HM
よくもまあこんだけ CD 買ったもんだな….
アルバムや曲目をリスティングするととんでもないことになるので省略.アルバムの数は↓
$ find ~/data/MP3/HR-HM -maxdepth 2 -mindepth 2 -type d | wc -l 147
*1 ちなみにこれは use oggvorbis || die を挿入してテストした結果なのでエラーが出て当然
ああ、これ欲しいなぁと思ってました。ただUSEが10個くらいあるやつだとemerge1000回か・・修行だな(^^;
本家に入れてもいいぐらいだと思いますが、どうですか(解決できそうな制限は解決してから)?
僕は全然構わないですが,テストパターンを生成する部分は bashi さんのスクリプトですので確認を取らないと….
制限については,ぶっちゃけ個人の好みなんですよね(^^;
「ここは○○の方が良いんでない?」ってのがあれば直しますが (あるいは好みに合わせて改造して下さっても構いません ;-).
「メッセージをすべて殺す」と「途中でやめれない」は、なんとかなるとうれしいなぁ。メッセージはオプションで出す出さないを選べるといいかも。
それと私はツールに関しては権限ないのでbugsに一度投稿してもらう必要がありますが・・。(これ自身がebuildになってくれるのがいいと思います)
ebuild にするとなると SRC_URI が微妙ですねぇ.
永久的にここにおいておけるわけじゃないので….
では gentoojp に置くということで ;-)
そですね,一瞬 files に入れてしまうかとも思いましたが GentooJP に置くのが一番かも.
私の拙いスクリプトで良ければ是非使ってやってください:-)
やっつけ仕事で作ったものなので問題があるかも知れませんが…。
おぉっ,ありがとうございます.
ありがたく使わせて頂きますね.:)