未来のいつか/hyoshiokの日記

hyoshiokの日々思うことをあれやこれや

コードをいじる

ひさしぶりにコードをいじっちゃったりしているもんだから妙にテンションが高い。ぐわー。通常OSSをいじるといっても、既存のコードをごにょごにょするだけなので、
$ diff -urP 元のディレクトリ 新規にいじっているディレクトリ > XXXX.patch
みたいな感じでパッチを作ればいい。
今回のプロジェクトでは既存のコードの変更だけでなく、新規にファイルを追加する。ファイルを追加するとMakefileとかconfigureファイルとかもいじらないといけないので若干面倒なことになる。OSSの場合、そこら辺の設定ファイルの作成などは標準的なツールautoconf/automake/libtoolなどでやる。

GNU Autoconf/Automake/Libtool

GNU Autoconf/Automake/Libtool

ここら辺は当該OSSのINSTALLなどのドキュメントに書いてあるのでそれを参考にする。パターンとしてはconfig.m4などに新規に作成したファイルに関する処理などを記述してaclocal;autoheader;automake;autoconfなどをする。付属のドキュメントなどを眺めればそれらのツールの使い方などが書かれている。どうしてもわからない時はコミュニティのメーリングリストに聞いてみるのも手だ。コミュニティは新規の開発者を常に求めているから開発初心者の質問にも丁寧に答えてくれる。今回もわたしはコミュニティの重鎮から丁寧にビルドの方法などを教えてもらった。どうもありがとうございました(ぺこり)
さてそのようにしてビルドをするとconfigureファイルやらMakefileやらがこれまた大量に生成されてしまい、単純なdiff -urP XXXX XXXX-hack なんてした日には大変なことになる。
わたしはxemacsを使ってファイルを編集しているので find -name '*~'して編集したファイル名を求めそれで diff を取っている*1。なんか原始的なので良い方法ないものか?ともかくdiffをとるコマンドを入れたスクリプトファイルを作ってそれを流す。$ ./XXXX-diff > XXXX.patchみたいな感じである。

*1:emacsはファイルのバックアップを*~と言うファイル名で保存する