最新のコミットから直接rpmを作成するgit rpm
というコマンドを作ってみた。
git init
した直下にspecファイルが必要です。
インストール
githubに上げておいたのでそのままcloneして、ビルドします。
$ git clone git@github.com:ymko/git-rpm.git
$ cd git-rpm
$ ./git-rpm
書き込み完了: /home/ymko/tmp/git-rpm/rpm/SRPMS/git-rpm-1.00-1.el7.centos.src.rpm
書き込み完了: /home/ymko/tmp/git-rpm/rpm/RPMS/noarch/git-rpm-1.00-1.el7.centos.noarch.rpm
$ sudo su
# rpm -ivh rpm/RPMS/noarch/git-rpm-1.00-1.el7.centos.noarch.rpm
# exit
$ which git-rpm
/usr/bin/git-rpm
~/bin にパスが通っているならこちらでも可です。
$ git clone git@github.com:ymko/git-rpm.git
$ cd git-rpm
$ cp git-rpm ~/bin
rpm作成
このプロジェクト自体がrpmを作成を意図しているので、そのままサンプルになります。
$ git rpm
書き込み完了: /home/ymko/tmp/git-rpm/rpm/SRPMS/git-rpm-1.00-1.el7.centos.src.rpm
書き込み完了: /home/ymko/tmp/git-rpm/rpm/RPMS/noarch/git-rpm-1.00-1.el7.centos.noarch.rpm
git-rpmの中身
#!/bin/sh
specfile=`ls -1 | grep .spec | head -n 1`
name=`grep "Name:" $specfile | awk '{print $2}'`
version=`grep "Version:" $specfile | awk '{print $2}'`
pwd=`pwd`
mkdir -p rpm/SOURCES >/dev/null 2>&1
git archive --prefix ${name}-${version}/ HEAD | gzip > rpm/SOURCES/${name}-${version}.tar.gz
rpmbuild -ba $specfile --define "%_topdir $pwd/rpm"
参考
rpmパッケージをプロジェクト下のディレクトリに作成する方法 - ymkoの日記
http://d.hatena.ne.jp/ymko/20110204/1296827232
CentOS5では--rcfile オプションでできていたが、分離されたようで--defineオプションに変更
rpmbuild --showrc
Macro path: /usr/lib/rpm/macros:/usr/lib/rpm/macros.d/macros.:/usr/lib/rpm/platform/%{_target}/macros:/usr/lib/rpm/fileattrs/.attr:/usr/lib/rpm/redhat/macros:/etc/rpm/macros.*:/etc/rpm/macros:/etc/rpm/%{_target}/macros:~/.rpmmacros
オレオレrpmパッケージの作り方(基本編) — ディノオープンラボラトリ
http://openlab.dino.co.jp/2007/11/16/13162254.html