2009年2月17日火曜日

Linuxコマンド(patch)

環境:kubuntu 8.10

パッチの生成と適用
  1. 修正前のファイルをold.cとする。このold.cを新しいファイルにコピーする。新しいファイルをnew.cとする。cp old.c new.c
  2. newを修正する。
  3. その差分の情報が入ってあるパッチファイルを作成する。パッチファイルとdif.patchとする。diff -u old.c new.c > dif.patch
  4. 生成されたパッチファイルをold.cの入ってあるフォルダに入れてから、patch < パッチファイルを実行したら、修正は自動的に行われる。

tc-v850.cの不具合

NECのV850のクロス開発環境構築中、binutils-2.19のmakeでエラーが出た。

tc-v850.c:1508: error: format not as string literal and no format arguments
tc-v850.c:1510: error: format not as string literal and no format arguments

エラーが出たら、makeは止まってしまった。

tc-v850.cというソースファイルの1508&1510行目にバグが入っていると考えられる。このソースファイルは/binutils-2.19/gas/configに入ってある。早速開いてみると、1508行目に
as_warn (message);
1510行目に
as_warn_where (file, line, message);
が書いてある。引数の渡し方が悪いみたい。as_warn, as_warn_where関数はほかのところでどういう使い方をされているか調べてみた。例えば、1501行目に
as_warn ("%s: %s", str, message);
1503行目に
as_warn_where (file, line, "%s: %s", str, message);
が書いてある。こちらの方は正しい使い方をされているので、エラーが出ない。したがって、1508行目を下記のように直す。
as_warn ("%s",message);
1510行目を下記のように直す。
as_warn_where (file, line,"%s", message);
上記の修正を自動に行うパッチを公開した。使い方として、tc-v850.cの置いてあるフォルダ/binutils-2.19/gas/configに移動して、ダウンロードしたパッチを入れてから、
patch < パッチファイル
を実行すればOK

2009年2月10日火曜日

人月の神話

読み始めた。きっかけは、SESSAMEのは「ハードウエア出身のマネージャに分かっておいて欲しい七つのこと」。

第一章のThe Tar Pit(タールの沼)

獣が必死に沼から抜け出そうと描いてある。ソフトウエアのバグ地獄から抜け出そうという例えだ。

ソフトウエア産業は個人プレーヤーに代われることなく、組織プレーヤーで成り立つという著者の意見がある。プログラム(個人プレーヤー)≠システム(組織プレーヤー)というわけだ。

オープンソースは個人プレーヤーだという意見
もあるのですが・・・組織プレーヤーでしょうと私は思う。たくさんの人によって作り上げられているから。

第四章の貴族、民主政治とシステム設計

貴族だけでシステムのアーキテクチャを決めるのはよいか?それとも、民主政治のやり方で有識者でアーキテクチャを決めるのはよか?

2009年2月9日月曜日

Linuxコマンド(bunzip2)

bunzip2 < binutils-2.19.1.tar.bz2 | tar xvf -

アーカイブファイルをbunzip2というプログラムに入力されて解凍される。その標準出力をtar xvf の標準入力に引き渡す。

ところで、最後にある - は何?

2009年2月8日日曜日

WindowsでCVSを利用する

kubuntuでCVSを使おうとしたが、なぜかconnection refusedというエラーメッセージが返される。ロカールネットワーククライアント(ルータがロカールIPを振り分けてくれる)からアクセスするせいか?

cvs -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/ecos-h8 login

Logging in to :pserver:anonymous@cvs.sourceforge.jp:2401:/cvsroot/ecos-h8
CVS Password:

connect to cvs.sourceforge.jp:2401 failed: Connection refused

そこで、グローバルネットワーククライアント(ルートがグローバルIPを適当に振り分けてくれる)からアクセスしてみる。OSはWindowsなので、WinCVSを使う。

最新リリースはバージョン2.0.9(2007-01-30)。最終リリースから随分経ってきているね。

インストール終了後、起動したら、Pythonが見つからないというメッセージが出てくる。インストールをしてあるはずだが、バグでしょうか。

RemoteメニューからCreate a new repository...を選択し、CVSROOTに:pserver:anonymous@cvs.sourceforge.jp:2401:/cvsroot/ecos-h8を記入した。


やっぱり、接続が拒否された。

cvs [init aborted]: connect to cvs.sourceforge.jp:2401 failed: 対象のコンピュータによって拒否されたため、接続できませんでした。

対象のコンピュータが問題なのでしょうか?