vine-spec-skeleton の self-build 用テンプレートを書いてみた
vine-spec-skeleton は、岩井さんがメンテナンスされている rpm の spec 生成ヘルパーです。
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