トップ «前の日記(12/20/2003) 最新 次の日記(12/22/2003)» 編集

本 日 の h o g e

hogeとはワイルドカードのようなものです。日々起こった、さまざまなこと −すなわちワイルドカード− を取り上げて日記を書く、という意味で名付けたのかというとそうでもありません。適当に決めたらこんな理由が浮かんできました。

更新情報の取得には rdflirs を使ってもらえると嬉しいです.


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

[小ネタ] 超世界地図

もう何がなんだかさっぱりわかんねえ.でもアリアハンとナジミの塔に笑った.

from エロチック街道

*1 ちなみにこれは use oggvorbis || die を挿入してテストした結果なのでエラーが出て当然

本日のツッコミ(全8件) [ツッコミを入れる]
なかの (12/21/2003 04:41)

ああ、これ欲しいなぁと思ってました。ただUSEが10個くらいあるやつだとemerge1000回か・・修行だな(^^;
本家に入れてもいいぐらいだと思いますが、どうですか(解決できそうな制限は解決してから)?

atzm (12/21/2003 05:00)

僕は全然構わないですが,テストパターンを生成する部分は bashi さんのスクリプトですので確認を取らないと….

制限については,ぶっちゃけ個人の好みなんですよね(^^;
「ここは○○の方が良いんでない?」ってのがあれば直しますが (あるいは好みに合わせて改造して下さっても構いません ;-).

なかの (12/21/2003 05:31)

「メッセージをすべて殺す」と「途中でやめれない」は、なんとかなるとうれしいなぁ。メッセージはオプションで出す出さないを選べるといいかも。
それと私はツールに関しては権限ないのでbugsに一度投稿してもらう必要がありますが・・。(これ自身がebuildになってくれるのがいいと思います)

atzm (12/21/2003 12:09)

ebuild にするとなると SRC_URI が微妙ですねぇ.
永久的にここにおいておけるわけじゃないので….

usata (12/21/2003 14:08)

では gentoojp に置くということで ;-)

atzm (12/21/2003 20:17)

そですね,一瞬 files に入れてしまうかとも思いましたが GentooJP に置くのが一番かも.

bashi (12/22/2003 13:57)

私の拙いスクリプトで良ければ是非使ってやってください:-)
やっつけ仕事で作ったものなので問題があるかも知れませんが…。

atzm (12/23/2003 22:56)

おぉっ,ありがとうございます.
ありがたく使わせて頂きますね.:)