#!/bin/sh
git-archive --format=tar --prefix=gnubg-backgammonbase-edition-0.2/ -v HEAD | gzip > gnubg-backgammonbase-edition-0.2.tar.gz
rpmbuild -ta gnubg-backgammonbase-edition-0.2.tar.gz &> log
tar ballを作る機能はgitにあり(git-archive)、それをrpmbuildに渡しさえすればいい。
releaseのtagを打ったらそれ自動的に反映したversion stringを持ってほしいのだが。pythonのsetup.py bdist_rpmはどうやっているのだろう?とくに、subersionのrevisionを拾ってくる機能はありがたい。
gitではどうしたらよいのだろう。思いつくアイディアをつれづれなるままに書いてみる。
- version postfixを用意してあげる。
- gitがもつsha1をつかう→×。どれだか特定はできるが、順番がわからない。
- 日時を使う→×。古いものをcheckoutしてあとからpackageするかもしれない。
- incrementalなtagを用意してをつかう。→?
どうやってtagの生成を自動化するのか?
- version postfixをつける。
- dirやtar ballのfile名:前出のscriptに変数を導入すればOK
- spec file。こまった。spec fileを書き換える必要が出てくる。version 番号が埋め込まれているので。ひとつ方法としては、Makefile.amよろしく、動的に生成し、何らかの方法によってtar ballに挿入するか、rpmbuildにspec fileを別途渡すかするというもの。
とまあ、運用を視野に入れて物を作るのは面倒なのですよ。特にすべてyum一発インストールを維持しようと思うと。
もちろん、yumでインストールできるようにしてもpackageが正しくできているか検証する必要があるわけで、最近は仮想環境(VM fusion)をつかって検証しています。こいつはメンテ時の代用サーバもかねています。
あ~~あ。調べ物が多いなぁ。google先生があるだけマシなのだが。
2 件のコメント:
tar -vu gnubg-backgammonbase-edition-0.2/gnubg.spec -f gnubg-backgammonbase-edition-0.2.tar
とかして、gzipするまえにtarの中身のfileを置き換えてやればいい。permissionの問題が残るが。
git-archiveする前にspec fileを生成してdirを堀り、そこに入れておけばいい。
make fileを書くのかなぁ~。
tagまわりは明日やろう。
コメントを投稿