vine-spec-skeleton の self-build 用テンプレートを書いてみた

vine-spec-skeleton は、岩井さんがメンテナンスされている rpm の spec 生成ヘルパーです。

vine-spec-skeleton – VineSeed

vine-spec-skeleton は apt-get でインストールできます。

$ sudo apt-get install vine-spec-skeleton

今日は、その self-build 用テンプレートを書いてみました。

SelfBuild in projects/vine-spec-skeleton/trunk/lib/VineLinux/VSS/Skeleton – VineSeed

例えば、self-build-hoge だったら、
$ mkdir self-build-hoge
$ cd self-build-hoge
$ vine-spec-skeleton --type self-build hoge
を実行する。
$ ls
hoge-vl.spec
self-build-hoge-vl.spec

以下のような感じのテンプレートでいかがでしょうか?

hoge-vl.spec

Summary:	
Summary(ja): 	
Name:		hoge
Version:	1.0
Release: 	1%{?_dist_release}
Source0:	http://example.com/%{name}/%{version}/%{name}-%{version}.tar.bz2

#Patch0:	hoge-foo.patch

License:	
Group:		
URL:		http://example.com/

BuildRequires:	
BuildRequires:	
BuildRequires:	
# *-devel packages provided by other self-build-* should only be listed
# in self-build-%{name}.spec as Requires(post).
##BuildRequires:	
##BuildRequires:	
##BuildRequires:	
##Requires:	
Requires:	
# %if %{?_dist_release} == "vl5" || %{?_dist_release} == "vl6"
# Requires:	
# Requires(post):		
# %endif
# %if %{?_dist_release} == "vl4"
# Requires:	
# Requires(post):		
# %endif

BuildRoot:    %{_tmppath}/%{name}-%{version}-root

Distribution: Vine Linux
Vendor:       Project Vine
Packager:     munepi

%description


%description -l ja


# %package devel
# Summary: Development libraries for hoge
# Group: Development/Libraries
# Requires: %{name} = %{version}-%{release}
# Provides: hoge-devel

# %description devel
# hoge is a library for .

# This package contains development files for hoge.

%prep
%setup -q

%build
%configure \
    --disable-static \
    --enable-shared \
    ;
%__make %{?_smp_mflags}

%install
%{__rm} -rf ${RPM_BUILD_ROOT}
%makeinstall

# # remove unpackaged files
# rm -f $RPM_BUILD_ROOT%{_libdir}/*.{a,la}

%clean
%{__rm} -rf ${RPM_BUILD_ROOT}

# %post -p /sbin/ldconfig

# %postun -p /sbin/ldconfig

%files
%defattr(-,root,root)

# %files devel
# %defattr(-,root,root)
# %{_includedir}/
# %{_libdir}/

%changelog
* Sun Mar 21 2010 Munehiro Yamamoto <munepi _at_mark_ vinelinux.org>
- first release for Vine Linux

self-build-hoge-vl.spec

%define pkgname hoge
%define name	self-build-%{pkgname}
%define version 1.0
%define release	1%{?_dist_release}

%define sourceurl0	http://example.com/%{pkgname}/%{version}/%{pkgname}-%{version}.tar.bz2

Summary:	Package to automatically build %{pkgname} rpm package
Summary(ja): 	%{pkgname} の rpm パッケージを自動作成するパッケージ
Name:		%{name}
Version:	%{version}
Release: 	%{release}
Source0:	%{pkgname}-vl.spec

#Source10:	%{pkgname}-%{version}.tar.bz2

#Source100:	hoge-foo.patch

License:      
Group:		Restricted Software

##!! Requires(posttrans) not yet implemented. So we use (post) instead.
Requires(post):		self-build-setup >= 0.9.9

# (build)requies of target package.
Requires(post):		
Requires(post):		
Requires(post):		
Requires:	
# %if %{?_dist_release} == "vl5" || %{?_dist_release} == "vl6"
# Requires:	
# Requires(post):		
# %endif
# %if %{?_dist_release} == "vl4"
# Requires:	
# Requires(post):		
# %endif

BuildArch:    noarch
BuildRoot:    %{_tmppath}/%{name}-%{version}-root

Distribution: Vine Linux
Vendor:       Project Vine
Packager:     munepi

%description
hoge

If you install this package, it automaticaly downloads source
code, compile it, and create rpm packages of %{pkgname}-%{version}.
And the created rpm packages are automatically installed
if installation is executed by apt-get command or synaptic
package manager.

[Note]
This package requires many other packages to compile
targetsoftware. So it consume more disk space than usual.
Also installation takes logner time because of compilation.
(This will take a few minutes to quarter or half of an hour,
depends on building environment)

[About self-build package]
For some kind of software, distributing of binary package
may viorate the patent or law. Therefore we chose self-build
packge, create binary package on your machine, for such kind
of softwares instead of distributing binary package.

Please obey the national law when you use the created binary
packages. And if you want to use the softwares using patented 
thechnology, it may be required to get a permission, make an 
agreement or purchas a license. Please consider it with your
purpose or way of use and take appropriate action.

%description -l ja
hoge

このパッケージをインストールすると、自動的にソースコードを
ダウンロードしてコンパイルし、%{pkgname}-%{version}
の rpm パッケージを作成します。
また apt-get コマンドや synaptic パッケージマネージャから実行
した場合は、作成された rpm パッケージのインストールも自動的に
行います。

[注意]
コンパイルに必要な多くの関連パッケージを要求するので通常より
ディスクの領域を多く消費します。
またインストール時にコンパイルを行うため、通常より時間がかか
る場合があります。(環境にもよりますが数分から数十分程度)

[self-build パッケージについて]
ソフトウェアによってはバイナリパッケージの配布が特許や法律に
違反する可能性があるものがあります。その為、このような問題が
懸念されるソフトウェアについてはバイナリパッケージを直接配布
せずに、ユーザの環境でバイナリを作成する self-build パッケー
ジという方法を採っています。

作成されたバイナリパッケージの利用にあたっては、各ソフトウェ
アのライセンス、および利用する国の各種法令に従ってください。
また特許に関連するソフトウェアの場合、利用許諾や契約、ライ
センスの購入などが必要となる場合がありますので、利用する目的
や形態に応じて各自で判断し適切な対応を取ってください。


%prep
[ "%{version}-%{release}" != $(rpm -q --queryformat "%%{version}-%%{release}\n" --specfile %{SOURCE0} | tail -1) ] && exit 1

%setup -q -n %{origname}-%{origver}

%install
%{__rm} -rf ${RPM_BUILD_ROOT}
%{__install} -d ${RPM_BUILD_ROOT}/%{_datadir}/%{name}
%{__install} -m 644 %{SOURCE0} ${RPM_BUILD_ROOT}/%{_datadir}/%{name}
#%{__install} -m 644 %{SOURCE10} ${RPM_BUILD_ROOT}/%{_datadir}/%{name}
#%{__install} -m 644 %{SOURCE100} ${RPM_BUILD_ROOT}/%{_datadir}/%{name}

%clean
%{__rm} -rf ${RPM_BUILD_ROOT}

%posttrans
/usr/lib/rpm/self-build-rpm.sh %{name} %{pkgname}-vl.spec "%{sourceurl0}" buildlogsize
#/usr/lib/rpm/self-build-rpm.sh %{name} %{pkgname}-vl.spec buildlogsize

# /usr/lib/rpm/pre-allocate-rpm.sh %{pkgname}-%{version}-%{release} \
#                                  %{pkgname}-devel-%{version}-%{release}

%files
%defattr(-,root,root)
%{_datadir}/%{name}

%changelog
* Sun Mar 21 2010 Munehiro Yamamoto <munepi _at_mark_ vinelinux.org>
- first release for Vine Linux