従来型patchからソース配付版への移行

移行ログ

  1. tritonn-1.0.2.mysql-5.0.41.senna-1.0.5からmysql-5.0.41.senna.diffを入手。
  2. mysql-5.0.41.tar.gzを展開。cdしておく。
  3. patch -p1 < mysql-5.0.41.senna.diffを実行。特に問題なくあたるはず。
  4. 従来通り、autotools、touchを実行してからconfigure、makeを実行する。
  5. make distを実行。新しいmysql-5.0.41.tar.gzができる。
  6. 本家のmysql-5.0.41.tar.gzと新しいmysql-5.0.41.tar.gzを同一ディレクトリに展開。新しい方は名前に.sennaをつけておく。
  7. diff -urdp mysql-5.0.41 mysql-5.0.41.senna を実行。-Nは付けない。mysql-5.0.41.senna-new.diffとでもしておく。→新型パッチの成果物。
  8. 再度、本家のmysql-5.0.41.tar.gzをどこかに展開、cdしておく。
  9. patch -p1 < mysql-5.0.41.senna-new.diffを実行。問題無くパッチがあたる〜^^。
  10. autotools/touchは不要。いきなりconfigure、makeを実行。
  11. make test-full-qaを実行。独自テストスイートを実行。
  12. make distを実行。→ソース配付版ができあがり
  13. make bin-distを実行。→あれれ、バイナリ配付版もできあがり??

開発用個別パッチ作成手順(予想)

  1. MySQLオリジナルソース配付版を入手。Tritonnソース配付版を入手。
  2. オリジナルソース配付版を展開する。mysql-5.0.41みたいなディレクトリ。シンボリックリンクorigを付与。
  3. Tritonnソースディレクトリを展開。mysql-5.0.41.sennaみたいなディレクトリ。シンボリックリンクsaveを付与。
  4. 再度Tritonnソースディレクトリを展開。mysql-5.0.41.senna.devみたいなディレクトリ。シンボリックリンクdevを付与。
  5. newを使って改造。バグ修正とか新しい機能の実装とか。
  6. 改造が終わったらその場でmake test-full-qaと独自テストスイートを実施。問題があれば1つ戻る。
  7. 必要に応じてmake bin-distを実行、性能評価を実施。問題があれば2つ戻る。
  8. newにてmake distを実行。
  9. 新しくできたtar.gzを展開してmysql-5.0.41.senna.newとし、シンボリックリンクnewを付与。
  10. diff -urdp save newを実行。diffをsourceforge.jpの該当タスクのところにuploadする。レポジトリの次期リリース用個別patch置き場に置いておく。

Tritonnの新しいリリース用ソース配付版の作成手順(予想)

  1. Tritonnソース配付版を入手。
  2. 次期リリース用個別patchを全てあてる。Hunk/Faildが出たら手動修正。
  3. autotools/touch/configure/makeを実行。コンパイルエラーが出たら修正。場合によっては特定のpatchを却下も。
  4. make test-full-qaと独自テストスイートを実行。問題があれば修正し、1つもどる。場合によっては特定のpatch却下。
  5. make distを実行

開発ベースをアップグレードする際の手順(予想)

  1. MySQLオリジナルソース配付版の新旧を入手。Tritonnソース配付版(旧)を入手。
  2. オリジナル(旧)とTritonn(旧)のdiffを取ってpatchを作成する。
  3. オリジナル(新)にpatchをあてる。configure/Makefile/lex.h/sql_yacc.ccなどの自動生成されるファイルへのHunk/Failedは無視。それ以外のファイルへのHunk/Failedは手動で修正する。
  4. autotools/touch/configure/makeを実行。コンパイルエラーが出たら1つ戻る。
  5. make test-full-qaと独自テストスイートを実行。問題があれば2つ戻る。
  6. make distを実行。
  7. 生成されたtarballを一度解凍し、ディレクトリ名をmysql-5.0.XXからmysql-5.0.XX.sennaに変更して再度tarball化。

感想

こうしてみると、独自テストスイートを"make test-full-qa"に相乗りできるようにすれば自動化が楽になりそうな雰囲気。

あと、subversion等のソースコード管理ツールはいまは使っていない^^ パッチが主体だったからとかmakeした後の環境でsvn commitするとエラーになるとかそんな理由があって。でもmake distを使えばsubversionへの移行もできるようになるかな?

あー、なんかすごくsubversionにいける気がしてきた!ついでにやっちまうかぁ。上記手順考えたけど、移行したら意味なしw まあいいや。