[Groonga-commit] pgroonga/pgroonga at 1a4d2bd [master] Support building RPM package for CentOS 7

Back to archive index

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����������������������������...
下载 



More information about the Groonga-commit mailing list
Back to archive index