October 25, 2007

rdocで生成されるyamlのファイルがへん? (続き)

えらく時間がかかってしまったけど、とりあえず先日の問題の結果だけ。

diff -ruN ruby-1.8.5.orig/lib/rdoc/rdoc.rb ruby-1.8.5/lib/rdoc/rdoc.rb
--- ruby-1.8.5.orig/lib/rdoc/rdoc.rb 2006-08-05 07:00:25.000000000 +0900
+++ ruby-1.8.5/lib/rdoc/rdoc.rb 2007-10-25 18:17:03.000000000 +0900
@@ -136,7 +136,7 @@
result = []

patterns.split.each do |patt|
- candidates = Dir.glob(File.join(in_dir, patt))
+ candidates = Dir.glob(File.join(in_dir, patt)).sort
result.concat(normalized_file_list(options, candidates))
end
result
@@ -184,7 +184,7 @@
# we may well contain subdirectories which must
# be tested for .document files
def list_files_in_directory(dir, options)
- normalized_file_list(options, Dir.glob(File.join(dir, "*")), false, optio
ns.exclude)
+ normalized_file_list(options, Dir.glob(File.join(dir, "*")).sort, false,
options.exclude)
end

こんな感じで、.documentの結果および与えられたパスの結果を一定にすることで、回避。適度に:nodoc::startdoc::stopdoc:で制御するとあってしかるべきファイルまでなくなる副作用があるぽいので、rdocそのものを大幅に改良しないとだめな気がする。問題の発生する状況からして、あまりそのへん考えられていなかったような気がするけど。

October 24, 2007

XKBまわりのトラブル再び

しばらく再起動もしないで放置してたんだが、ちょっとしたことでrebootを余儀なくされた。が、しかし。なんか反応しないキーが多数。いやむしろ割り当てもなんかおかしい。よくよく見てみるとkbdドライバではなくevdevで拾ったやつが有効になってた。そりゃまあPS/2のキーボードとかマウスもevdevで拾うけど、どうなのよ。しかも、kbdドライバで指定したCoreKeyboardのオプションをどうみても継承してるように見えるのに、XKBまわりの設定はデフォルト値が使われちゃってて実質設定なしでX動かしてるような状態に近い。

Xの入力まわりのhotplugサポートが云々とかでぐちゃぐちゃなようなので、結局evdevのドライバを消して現状回復。ノートでUSBキーボードとかマウスは使ってないから問題なし。
相変わらずgdmではAlt+Ctrl+Fnでコンソールに切り替えられないけど。

October 22, 2007

暑い…

移転先のビルでは、18:30を過ぎると空調が止まる。最寄りの席のマシンの台数と発熱量で、自分のまわりが死ぬほど暑い。Tシャツ一枚でも暑い。たまらん。

unable to open slave

skypeを実行した時にログにどわーっとでてくるエラー。

ALSA lib pcm_dmix.c:864:(snd_pcm_dmix_open) unable to open slave
ALSA lib pcm_dsnoop.c:558:(snd_pcm_dsnoop_open) unable to open slave

これのせいで実際うまく動いてくれない。ぐぐってみたらこんなのを発見。肝はStep 8ぽい。

STEP 8

As root, edit /usr/share/alsa/cards/HDA-Intel.conf (or whatever the ALSA configuration file is called for your soundcard) and change:

  capture.pcm {
type plug
slave.pcm {
@func concat
strings [ "dsnoop:" $CARD ]
}

to

  capture.pcm {
type plug
slave.pcm {
@func concat
strings [ "hw:" $CARD ]
}

i.e. replace "dsnoop:" with "hw:"



October 18, 2007

rdocで生成されるyamlのファイルがへん?

multilibの都合で、例えばi386とx86_64で同一パス上にインストールされるようなファイルは中身は同じでなければならない、という条件があって、これが違うとrpmはファイルが衝突してると怒るわけだけれども、rdocで生成されるなんちゃら.yamlのファイルでi386とx86_64で結果が違うという問題に遭遇した。

ちなみに結果は以下のとおり:
system/Kernel/warn-i.yaml at i386:
--- !ruby/object:RI::MethodDescription
aliases: []

block_params:
comment:
full_name: Kernel#warn
is_singleton: false
name: warn
params: (msg)
visibility: public


system/Kernel/warn-i.yaml at x86_64:
--- !ruby/object:RI::MethodDescription
aliases: []

block_params:
comment:
- !ruby/struct:SM::Flow::P
body: Display the given message (followed by a newline) on STDERR unless warni
ngs are disabled (for example with the -W0 flag).
full_name: Kernel#warn
is_singleton: false
name: warn
params: |
warn(msg) => nil

visibility: public


ちょっとした一例にすぎないけど、まあこんな感じ。
元となっているerror.c内のコメントをみるとx86_64側が正しい結果に見える。実際のところparse時にはコメントの情報はちゃんと得られているようで、error.c単体をrdocに食わせればそれっぽく出力されるけど、他のメソッドで微妙な抜けや順序が違うなどの問題もでたりするので、ちょっとまだ調査中。