Kouhei Sutou
null+****@clear*****
Thu Jan 29 00:07:23 JST 2015
Kouhei Sutou 2015-01-29 00:07:23 +0900 (Thu, 29 Jan 2015) New Revision: 1a4d2bdeec7a4868ebcadaa16857c9d743743c95 https://github.com/pgroonga/pgroonga/commit/1a4d2bdeec7a4868ebcadaa16857c9d743743c95 Message: Support building RPM package for CentOS 7 Added files: packages/yum/Vagrantfile packages/yum/build-rpm.sh packages/yum/postgresql-pgroonga.spec.in Modified files: .gitignore README.md Rakefile Modified: .gitignore (+5 -1) =================================================================== --- .gitignore 2015-01-28 21:48:33 +0900 (e1bd936) +++ .gitignore 2015-01-29 00:07:23 +0900 (1da7bdc) @@ -3,4 +3,8 @@ *.tar.gz /regression.* /results/ -/pakcages/source/ +/packages/source/ +/packages/yum/.vagrant/ +/packages/yum/env.sh +/packages/yum/*.spec +/packages/yum/repositories/ Modified: README.md (+39 -4) =================================================================== --- README.md 2015-01-28 21:48:33 +0900 (69aa585) +++ README.md 2015-01-29 00:07:23 +0900 (b443e47) @@ -47,6 +47,44 @@ pg\_trgmとpg\_bigmが使っているGINやGiSTが対応しています。) ## インストール +次の環境用にはパッケージを用意しています。 + + * Ubuntu 14.10 + * CentOS 7 + +その他の環境ではソースからインストールしてください。 + +それぞれの環境でのインストール方法の詳細は以降のセクションで説明します。 + +### Ubuntu 14.10にインストール + +### CentOS 7にインストール + +`postgresql-pgroonga`パッケージをインストールします。 + + % sudo rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm + % sudo yum makecache + % sudo yum install -y postgresql-pgroonga + +PostgreSQLを起動します。 + + % sudo -H postgresql-setup initdb + % sudo -H systemctl start postgresql + +データベースを作成します。 + + % sudo -u postgres -H psql --command 'CREATE DATABASE pgroonga_test' + +(ここで`pgroonga_test`ユーザーを作成して、そのユーザーで接続するべき。) + +データベースに接続して`CREATE EXTENSION pgroonga`を実行します。 + + % sudo -u postgres -H psql -d pgroonga_test --command 'CREATE EXTENSION pgroonga' + +これでインストールは完了です。 + +### ソースからインストール + PostgreSQLをインストールします。 [Groongaをインストール](http://groonga.org/ja/docs/install.html)します。 @@ -77,10 +115,7 @@ PGroongaをビルドしてインストールします。 データベースに接続して`CREATE EXTENSION pgroonga`を実行します。 - % psql -d db - ... - db=# CREATE EXTENSION pgroonga; - CREATE EXTNESION + % psql -d db --command 'CREATE EXTENSION pgroonga;' ## 使い方 Modified: Rakefile (+87 -0) =================================================================== --- Rakefile 2015-01-28 21:48:33 +0900 (596c2b9) +++ Rakefile 2015-01-29 00:07:23 +0900 (633e389) @@ -2,6 +2,7 @@ package = "pgroonga" rsync_base_path = "packages �� packages.groonga.org:public" +gpg_uid = "45499429" def find_version(package) control_content = File.read("#{package}.control") @@ -55,4 +56,90 @@ namespace :package do sh("rsync", "-avz", "--progress", "--delete", "#{source_dir}/", rsync_path) end end + + namespace :yum do + distribution = "centos" + rpm_package = "postgresql-#{package}" + rsync_path = rsync_base_path + yum_dir = "#{packages_dir}/yum" + repositories_dir = "#{yum_dir}/repositories" + + directory repositories_dir + + env_sh = "#{yum_dir}/env.sh" + file env_sh => __FILE__ do + File.open(env_sh, "w") do |file| + file.puts(<<-ENV) +SOURCE_ARCHIVE=#{archive_name} +PACKAGE=#{rpm_package} +VERSION=#{version} +DEPENDED_PACKAGES=" +gcc +make +pkg-config +groonga-devel +postgresql-devel +" + ENV + end + end + + spec = "#{yum_dir}/#{rpm_package}.spec" + spec_in = "#{spec}.in" + file spec => spec_in do + spec_in_data = File.read(spec_in) + spec_data = spec_in_data.gsub(/@(.+)@/) do |matched| + case $1 + when "PACKAGE" + rpm_package + when "VERSION" + version + else + matched + end + end + File.open(spec, "w") do |spec_file| + spec_file.print(spec_data) + end + end + + desc "Build RPM packages" + task :build => [archive_name, env_sh, spec, repositories_dir] do + tmp_dir = "#{yum_dir}/tmp" + rm_rf(tmp_dir) + mkdir_p(tmp_dir) + cp(archive_name, tmp_dir) + tmp_distribution_dir = "#{tmp_dir}/#{distribution}" + mkdir_p(tmp_distribution_dir) + cp(spec, tmp_distribution_dir) + + cd(yum_dir) do + sh("vagrant", "destroy", "--force") + distribution_version = "7" + distribution_architecture = "x86_64" + id = "#{distribution}-#{distribution_version}-#{distribution_architecture}" + sh("vagrant", "up", id) + sh("vagrant", "destroy", "--force", id) + end + end + + desc "Update repositories" + task :update do + end + + desc "Download repositories" + task :download => repositories_dir do + sh("rsync", "-avz", "--progress", + "#{rsync_path}/#{distribution}/", + "#{repositories_dir}/#{distribution}") + end + + desc "Upload repositories" + task :upload => repositories_dir do + sh("rsync", "-avz", "--progress", + # "--delete", + "#{source_dir}/#{distribution}/", + "#{rsync_path}/#{distribution}") + end + end end Added: packages/yum/Vagrantfile (+22 -0) 100644 =================================================================== --- /dev/null +++ packages/yum/Vagrantfile 2015-01-29 00:07:23 +0900 (fc2cbf5) @@ -0,0 +1,22 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +# Vagrantfile API/syntax version. Don't touch unless you know what you're doing! +VAGRANTFILE_API_VERSION = "2" + +Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| + vms = [ + { + :id => "centos-7-x86_64", + :box_url => "http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_centos-7.0_chef-provisionerless.box", + }, + ] + + vms.each do |vm| + config.vm.define(vm[:id]) do |node| + node.vm.box = vm[:id] + node.vm.box_url = vm[:box_url] + node.vm.provision(:shell, :path => "build-rpm.sh") + end + end +end Added: packages/yum/build-rpm.sh (+71 -0) 100755 =================================================================== --- /dev/null +++ packages/yum/build-rpm.sh 2015-01-29 00:07:23 +0900 (68c6b98) @@ -0,0 +1,71 @@ +#!/bin/sh + +run() +{ + "$@" + if test $? -ne 0; then + echo "Failed $@" + exit 1 + fi +} + +rpmbuild_options= + +. /vagrant/env.sh + +distribution=$(cut -d " " -f 1 /etc/redhat-release | tr "A-Z" "a-z") +if grep -q Linux /etc/redhat-release; then + distribution_version=$(cut -d " " -f 4 /etc/redhat-release) +else + distribution_version=$(cut -d " " -f 3 /etc/redhat-release) +fi +distribution_version=$(echo ${distribution_version} | sed -e 's/\..*$//g') + +architecture="$(arch)" +case "${architecture}" in + i*86) + architecture=i386 + ;; +esac + +run rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm +run yum makecache + +run yum groupinstall -y "Development Tools" +run yum install -y rpm-build rpmdevtools tar ${DEPENDED_PACKAGES} + +if [ -x /usr/bin/rpmdev-setuptree ]; then + rm -rf .rpmmacros + run rpmdev-setuptree +else + run cat <<EOM > ~/.rpmmacros +%_topdir ${HOME}/rpmbuild +EOM + run mkdir -p ~/rpmbuild/SOURCES + run mkdir -p ~/rpmbuild/SPECS + run mkdir -p ~/rpmbuild/BUILD + run mkdir -p ~/rpmbuild/RPMS + run mkdir -p ~/rpmbuild/SRPMS +fi + +repository="/vagrant/repositories/${distribution}/${distribution_version}" +rpm_dir="${repository}/${architecture}/Packages" +srpm_dir="${repository}/source/SRPMS" +run mkdir -p "${rpm_dir}" "${srpm_dir}" + +# for debug +# rpmbuild_options="$rpmbuild_options --define 'optflags -O0 -g3'" + +cd + +if [ -n "${SOURCE_ARCHIVE}" ]; then + run cp /vagrant/tmp/${SOURCE_ARCHIVE} rpmbuild/SOURCES/ +else + run cp /vagrant/tmp/${PACKAGE}-${VERSION}.* rpmbuild/SOURCES/ +fi +run cp /vagrant/tmp/${distribution}/${PACKAGE}.spec rpmbuild/SPECS/ + +run rpmbuild -ba ${rpmbuild_options} rpmbuild/SPECS/${PACKAGE}.spec + +run mv rpmbuild/RPMS/*/* "${rpm_dir}/" +run mv rpmbuild/SRPMS/* "${srpm_dir}/" Added: packages/yum/postgresql-pgroonga.spec.in (+41 -0) 100644 =================================================================== --- /dev/null +++ packages/yum/postgresql-pgroonga.spec.in 2015-01-29 00:07:23 +0900 (79394b6) @@ -0,0 +1,41 @@ +# -*- rpm -*- + +Name: @PACKAGE@ +Version: @VERSION@ +Release: 1%{?dist} +Summary: Fast full-text search plugin for PostgreSQL based on Groonga + +Group: Applications/Text +License: PostgreSQL +URL: https://github.com/pgroonga/pgroonga +Source0: http://packages.groonga.org/source/pgroonga/pgroonga-%{version}.tar.gz + +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-%(%{__id_u} -n) +BuildRequires: groonga-devel +BuildRequires: postgresql-devel +Requires: groonga-libs +Requires: postgresql-server + +%description +This package provides a fast full-text search plugin for PostgreSQL. +It is based on Groonga. + +%prep +%setup -q -n pgroonga-%{version} + + +%build +make %{?_smp_mflags} + +%install +make install DESTDIR=$RPM_BUILD_ROOT INSTALL="install -p" + +%files +%doc README.md news.md COPYING +%{_libdir}/pgsql/*.so +%{_datadir}/pgsql/extension/*.control +%{_datadir}/pgsql/extension/*.sql + +%changelog +* Thu Jan 29 2015 Kouhei Sutou <kou �� clear-code.com> - 0.2.0-1 +- initial packaging for CentOS. -------------- next part -------------- HTML����������������������������...下载