bitkeeperからソースを落としてパッケージング
MySQLはbitkeeperのWebサイトを見れば最新のソースから過去のソースまで全て見れるし、
http://mysql.bkbits.net/
bkf (Bitkeeper Free Client)を使えばそのソースコードを丸ごとダウンロードすることもできます。
以前はサーバの負荷が高かったためか過去のリビジョンを指定してダウンロードすることはできない状態がつづいていましたが、今は-rオプションをつければどのリビジョンでも可能です。
bkf clone -r1.2476 bk://mysql.bkbits.net/mysql-5.0-community hoge
で、このbitkeeperから落としたソースというのは、普段、tarball形式でダウンロードしてくるソースと実は違いまして、、、
という感じになっています。
Linux向けのソースはbkからcloneした後、以下の手順で実は作成されて、配布されていると思われます。
- BUILD/autorun.sh
- BUILD/compile-dist
- make
- make dist
一方、Windows向けのソースは以下のように作成されていると思われます。
- BUILD/autorun.sh
- BUILD/compile-dist
- make
- scripts/make_win_src_distribution
ここで、うちみたいにMySQLの改造をしてる人にとっては大きな問題だったりするのが、
- 改造対象はある特定のリリースにしたい。bitkeeperにある最新とかあるリリースの間とかはいや。だってpatch作るのが面倒になるから。
- LinuxだけでなくWindowsでもビルドできるようにしたい
という点です。
前者は単にbitkeeper版ではなく、tarballを入手して使えばいいのですが、tarball版だと、、
- Linux向けtarball版にはmake_win_src_distributionの実行に必要なファイル(VC++Files)が無い。
- Windows用zipにはもちろんLinux向けソースを生成する機能は無い
ということで「LinuxだけでなくWindowsでもビルドできるようにしたい」というのが満たせないです。
そこで、じゃあbitkeeperから落としたらいいじゃないか、という話になるのですが、それが本エントリの結論、というかこれがいいたかっただけともいう。
BitkeeperのWebページをたどってtagとrevisionの関係を調べましょう。
http://mysql.bkbits.net:8080/mysql-5.0-community/?PAGE=tags
例えばMySQL 5.0.41ならこれ。
http://mysql.bkbits.net:8080/mysql-5.0-community/?PAGE=cset&REV=mysql-5.0.41
それによると"ChangeSet@1.2476"とのことなので、後は以下のようにしてbkf cloneすればおk。
bkf clone -r1.2476 bk://mysql.bkbits.net/mysql-5.0-community hoge
で、BUILD/autorun.shすれば、make_win_src_distribution動作可能なLinuxソースパッケージみたいな感じになるので後は好きなように改造するなり既存パッチをあてるなりして、そこからmake distあるいはmake_win_src_distributionをやればLinux/Win向けのソースパッケージができる。