%{!?use_lzo:%define use_lzo 0}
%{!?use_mecab:%define use_mecab 1}
%{?additional_configure_options:%define use_additional_configure_options 1}
%{!?additional_configure_options:%define use_additional_configure_options 0}

%global _initddir %{_sysconfdir}/init.d/

Name:		groonga
Version:	@VERSION@
Release:	1%{?dist}
Summary:	An Embeddable Fulltext Search Engine

Group:		Applications/Text
License:	LGPLv2
URL:		http://groonga.org/
Source0:	http://packages.groonga.org/source/groonga/groonga-%{version}.tar.gz

BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-%(%{__id_u} -n)
%if %{use_mecab}
BuildRequires:	mecab-devel
%endif
BuildRequires:	zlib-devel
%if %{use_lzo}
BuildRequires:	lzo-devel
%endif
BuildRequires:	pcre-devel
Requires:	%{name}-libs = %{version}-%{release}
Requires:	%{name}-plugin-suggest = %{version}-%{release}
#BuildRequires:	messagepack-devel
#BuildRequires:	zeromq-devel
#BuildRequires:	libevent-devel
Obsoletes:	%{name} < 1.2.2-0

%description
Groonga is an embeddable full-text search engine library.  It can
integrate with DBMS and scripting languages to enhance their search
functionality.  It also provides a standalone data store server based
on relational data model.

%package libs
Summary:	Runtime libraries for groonga
Group:		System Environment/Libraries
License:	LGPLv2 and (MIT or GPLv2)
Requires(post):	/sbin/ldconfig
Requires(postun):	/sbin/ldconfig

%description libs
This package contains the libraries for groonga

%package server-common
Summary:	Common packages for the groonga server and the groonga HTTP server
Group:		Applications/Text
License:	LGPLv2
Requires:	%{name} = %{version}-%{release}
Requires(pre):	shadow-utils

%description server-common
This package provides common settings for server use

%package server-gqtp
Summary:	Groonga GQTP server
Group:		Applications/Text
License:	LGPLv2
Requires:	%{name}-server-common = %{version}-%{release}
Requires(pre):	shadow-utils
Requires(post):	/sbin/chkconfig
Requires(preun):	/sbin/chkconfig
Requires(preun):	/sbin/service
Requires(postun):	/sbin/service
Obsoletes:	%{name} < 1.2.2-0
Obsoletes:	%{name}-server < 2.0.7-0

%description server-gqtp
This package contains the groonga GQTP server

%package server-http
Summary:	Groonga HTTP server (stable)
Group:		Applications/Text
License:	LGPLv2
Requires:	%{name}-server-common = %{version}-%{release}
Requires:	curl
Requires(pre):	shadow-utils
Requires(post):	/sbin/chkconfig
Requires(preun):	/sbin/chkconfig
Requires(preun):	/sbin/service
Requires(postun):	/sbin/service
Obsoletes:	%{name} < 1.2.2-0
Obsoletes:	%{name}-server < 2.0.7-0
Conflicts:	%{name}-httpd

%description server-http
This package contains the groonga HTTP server. It is stable but
has only requisite minimum features.

%package httpd
Summary:	Groonga HTTP server (experimental)
Group:		Applications/Text
License:	LGPLv2 and BSD
Requires:	%{name}-server-common = %{version}-%{release}
Conflicts:	%{name}-server-http

%description httpd
This package contains the groonga HTTP server. It is experimental
but has many features. Because it is based on nginx HTTP server.
It will obsolete groonga-server-http when it is stable.

%package doc
Summary:	Documentation for groonga
Group:		Documentation
License:	LGPLv2 and BSD

%description doc
Documentation for groonga

%package devel
Summary:	Libraries and header files for groonga
Group:		Development/Libraries
Requires:	%{name}-libs = %{version}-%{release}

%description devel
Libraries and header files for groonga

%if %{use_mecab}
%package tokenizer-mecab
Summary:	MeCab tokenizer for groonga
Group:		Applications/Text
Requires:	%{name}-libs = %{version}-%{release}
Requires:       mecab-dic

%description tokenizer-mecab
MeCab tokenizer for groonga
%endif

%package plugin-suggest
Summary:	Suggest plugin for groonga
Group:		Applications/Text
Requires:	%{name}-libs = %{version}-%{release}

%description plugin-suggest
Sugget plugin for groonga

%package munin-plugins
Summary:	Munin plugins for groonga
Group:		Applications/System
Requires:	%{name}-libs = %{version}-%{release}
Requires:	munin-node
Requires(post):	munin-node
Requires(post):	/sbin/service
Requires(postun):	/sbin/service

%description munin-plugins
Munin plugins for groonga

%prep
#% define optflags -O0
%setup -q


%build
%configure \
  --disable-static \
  --with-package-platform=redhat \
  --with-zlib \
%if %{use_lzo}
  --with-lzo \
%endif
%if %{use_mecab}
  --with-mecab \
%else
  --without-mecab \
%endif
  --with-munin-plugins \
%if %{use_additional_configure_options}
  %{additional_configure_options}
%endif

sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
make %{?_smp_mflags}


%install
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT INSTALL="install -p"
rm $RPM_BUILD_ROOT%{_libdir}/groonga/plugins/*/*.la
rm $RPM_BUILD_ROOT%{_libdir}/*.la

mv $RPM_BUILD_ROOT%{_datadir}/doc/groonga groonga-doc

mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/run/groonga
mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/groonga/db
mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/log/groonga

mv $RPM_BUILD_ROOT%{_datadir}/groonga/munin/ $RPM_BUILD_ROOT%{_datadir}/
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/munin/plugin-conf.d/
cat <<EOC > $RPM_BUILD_ROOT%{_sysconfdir}/munin/plugin-conf.d/groonga
[groonga_*]
  user groonga
  group groonga
  env.PATH %{_bindir}
  env.pid_file %{_localstatedir}/run/groonga/groonga.pid
  env.path %{_localstatedir}/lib/groonga/db/db
  env.host 127.0.0.1
  env.port 10041
  env.log_path %{_localstatedir}/log/groonga/query.log
EOC

%clean
rm -rf $RPM_BUILD_ROOT

%pre server-common
getent group groonga >/dev/null || groupadd -r groonga
getent passwd groonga >/dev/null || \
       useradd -r -g groonga -d %{_localstatedir}/lib/groonga -s /sbin/nologin \
	-c 'groonga' groonga
if [ $1 = 1 ]; then
	mkdir -p %{_localstatedir}/lib/groonga/db
	groonga -n %{_localstatedir}/lib/groonga/db/db shutdown > /dev/null
	chown -R groonga:groonga %{_localstatedir}/lib/groonga
	mkdir -p %{_localstatedir}/run/groonga
	chown -R groonga:groonga %{_localstatedir}/run/groonga
fi
exit 0

%post server-gqtp
/sbin/chkconfig --add groonga-server-gqtp

%post server-http
/sbin/chkconfig --add groonga-server-http

%post httpd
if [ $1 = 1 ] ; then
	mkdir -p %{_localstatedir}/log/groonga/httpd
	chown -R groonga:groonga %{_localstatedir}/log/groonga/httpd
elif [ $1 = 2 ] ; then
	/sbin/service groonga-httpd restart >/dev/null 2>&1 || :
fi

%post libs -p /sbin/ldconfig

%post munin-plugins
%{_sbindir}/munin-node-configure --shell --remove-also | grep -e 'groonga_' | sh
[ -f %{_localstatedir}/lock/subsys/munin-node ] && \
	/sbin/service munin-node restart > /dev/null 2>&1
:

%preun server-http
if [ $1 = 0 ] ; then
	/sbin/service groonga-server-http stop >/dev/null 2>&1 || :
	/sbin/chkconfig --del groonga-server-http
fi

%postun server-http
if [ $1 -ge 1 ] ; then
	/sbin/service groonga-server-http condrestart >/dev/null 2>&1 || :
fi

%preun server-gqtp
if [ $1 = 0 ] ; then
	/sbin/service groonga-server-http stop >/dev/null 2>&1 || :
	/sbin/chkconfig --del groonga-server-gqtp
fi

%postun server-gqtp
if [ $1 -ge 1 ] ; then
	/sbin/service groonga-server-gqtp condrestart >/dev/null 2>&1 || :
fi

%postun libs -p /sbin/ldconfig

%postun munin-plugins
if [ $1 -eq 0 ]; then
	[ -f %{_localstatedir}/lock/subsys/munin-node ] && \
		/sbin/service munin-node restart >/dev/null 2>&1
	:
fi


%files
%defattr(-,root,root,-)
%{_datadir}/man/man1/*
%{_datadir}/man/*/man1/*
%{_bindir}/groonga
%{_bindir}/groonga-benchmark

%files libs
%defattr(-,root,root,-)
%doc README AUTHORS COPYING
%{_libdir}/*.so.*
%dir %{_libdir}/groonga
%dir %{_libdir}/groonga/plugins
%dir %{_libdir}/groonga/plugins/tokenizers
%{_libdir}/groonga/plugins/table/table.so
%{_libdir}/groonga/plugins/query_expanders/tsv.so
%{_datadir}/groonga/
%config(noreplace) %{_sysconfdir}/groonga/synonyms.tsv

%files server-common

%files server-gqtp
%defattr(-,root,root,-)
%config(noreplace) %{_sysconfdir}/groonga/
%config(noreplace) %{_sysconfdir}/sysconfig/groonga-server-gqtp
%config(noreplace) %{_sysconfdir}/logrotate.d/groonga-server-gqtp
%{_initddir}/groonga-server-gqtp
%ghost %dir %{_localstatedir}/run/%{name}
%attr(0750,groonga,groonga) %dir %{_localstatedir}/lib/%{name}
%attr(0750,groonga,groonga) %dir %{_localstatedir}/lib/%{name}/db

%files server-http
%defattr(-,root,root,-)
%config(noreplace) %{_sysconfdir}/groonga/
%config(noreplace) %{_sysconfdir}/sysconfig/groonga-server-http
%config(noreplace) %{_sysconfdir}/logrotate.d/groonga-server-http
%{_initddir}/groonga-server-http
%ghost %dir %{_localstatedir}/run/%{name}
%attr(0750,groonga,groonga) %dir %{_localstatedir}/lib/%{name}
%attr(0750,groonga,groonga) %dir %{_localstatedir}/lib/%{name}/db

%files httpd
%defattr(-,root,root,-)
%config(noreplace) %{_sysconfdir}/groonga/httpd/*
%config(noreplace) %{_sysconfdir}/sysconfig/groonga-httpd
%config(noreplace) %{_sysconfdir}/logrotate.d/groonga-httpd
%{_initddir}/groonga-httpd
%{_sbindir}/groonga-httpd
%{_sbindir}/groonga-httpd-restart

%files doc
%defattr(-,root,root,-)
%doc README AUTHORS COPYING
%doc groonga-doc/*

%files devel
%defattr(-,root,root,-)
%{_includedir}/groonga/
%{_libdir}/*.so
%{_libdir}/pkgconfig/groonga*.pc

%files plugin-suggest
%defattr(-,root,root,-)
%{_bindir}/groonga-suggest-*
%dir %{_libdir}/groonga/plugins
%{_libdir}/groonga/plugins/suggest/suggest.so

%if %{use_mecab}
%files tokenizer-mecab
%defattr(-,root,root,-)
%{_libdir}/groonga/plugins/tokenizers/mecab.so
%endif

%files munin-plugins
%defattr(-,root,root,-)
%{_datadir}/munin/plugins/*
%config(noreplace) %{_sysconfdir}/munin/plugin-conf.d/*

%changelog
* Mon Jul 29 2013 HAYASHI Kentaro <hayashi@clear-code.com> - 3.0.6-1
- new upstream release.

* Sat Jun 29 2013 HAYASHI Kentaro <hayashi@clear-code.com> - 3.0.5-0
- new upstream release.

* Wed May 29 2013 HAYASHI Kentaro <hayashi@clear-code.com> - 3.0.4-0
- new upstream release.

* Mon Apr 29 2013 HAYASHI Kentaro <hayashi@clear-code.com> - 3.0.3-0
- Add additional_configure_options parameter.
- Make MeCab optional. Use use_mecab parameter for it.

* Fri Mar 29 2013 HAYASHI Kentaro <hayashi@clear-code.com> - 3.0.2-0
- new upstream release.

* Thu Feb 28 2013 HAYASHI Kentaro <hayashi@clear-code.com> - 3.0.1-0
- new upstream release.

* Sat Feb 09 2013 HAYASHI Kentaro <hayashi@clear-code.com> - 3.0.0-0
- new upstream release.

* Tue Jan 29 2013 HAYASHI Kentaro <hayashi@clear-code.com> - 2.1.2-0
- new upstream release.

* Sat Dec 29 2012 Kouhei Sutou <kou@clear-code.com> - 2.1.1-0
- new upstream release.

* Sat Dec 29 2012 HAYASHI Kentaro <hayashi@clear-code.com> - 2.1.0-0
- new upstream release.

* Thu Nov 29 2012 HAYASHI Kentaro <hayashi@clear-code.com> - 2.0.9-0
- new upstream release.

* Mon Oct 29 2012 Kouhei Sutou <kou@clear-code.com> - 2.0.8-0
- new upstream release.
- Remove needless "Requires". They will be added by rpmbuild automatically.
  Reported by by Daiki Ueno. Thanks!!!
- Fix license of server-gqtp.
- Fix license of server-http.
- Add more description to server-http and httpd.

* Sat Sep 29 2012 HAYASHI Kentaro <hayashi@clear-code.com> - 2.0.7-0
- new upstream release.
- Split groonga-server package into groonga-server-gqtp and
  groonga-server-http package.

* Wed Aug 29 2012 HAYASHI Kentaro <hayashi@clear-code.com> - 2.0.6-0
- new upstream release.
- Split common tasks for server use into groonga-server-common package.
- groonga-server and groonga-httpd require groonga-server-common package.

* Sun Jul 29 2012 Kouhei Sutou <kou@clear-code.com> - 2.0.5-0
- new upstream release.
- split groonga-httpd related files into groonga-httpd package.

* Fri Jun 29 2012 Kouhei Sutou <kou@clear-code.com> - 2.0.4-0
- new upstream release.
- groonga package does not require groonga-tokenizer-mecab package.

* Tue May 29 2012 Kouhei Sutou <kou@clear-code.com> - 2.0.3-0
- new upstream release.

* Sun Apr 29 2012 Kouhei Sutou <kou@clear-code.com> - 2.0.2-0
- new upstream release.

* Fri Mar 30 2012 Kouhei Sutou <kou@clear-code.com> - 2.0.1-2
- Use shutdown command for stop.

* Fri Mar 30 2012 Kouhei Sutou <kou@clear-code.com> - 2.0.1-1
- Fix bind address argument parameter.
  Patch by Masaharu IWAI. Thanks!!!

* Thu Mar 29 2012 Kouhei Sutou <kou@clear-code.com> - 2.0.1-0
- new upstream release.
- grntest -> groonga-benchmark.
- remove groong-tools package.

* Wed Feb 29 2012 Kouhei Sutou <kou@clear-code.com> - 2.0.0-0
- new upstream release.
- remove other permission from DB directory.
- install init.d related files directly.
- use HTTP as the default protocol.

* Sun Jan 29 2012 Kouhei Sutou <kou@clear-code.com> - 1.3.0-0
- new upstream release.
- groonga-server package does not require groonga-munin-plugins package.
  suggested by Masaharu IWAI. Thanks!!!
- groonga package does not require groonga-doc package.
  suggested by Masaharu IWAI. Thanks!!!

* Thu Dec 29 2011 Kouhei Sutou <kou@clear-code.com> - 1.2.9-0
- new upstream release.

* Tue Nov 29 2011 Kouhei Sutou <kou@clear-code.com> - 1.2.8-0
- new upstream release.
- enable zlib support.
- enable lzo support.
- add --with-package-platform=redhat configure option to install init script.
- add --with-munin-plugins cofnigure option to install Munin plugins.

* Sat Oct 29 2011 Kouhei Sutou <kou@clear-code.com> - 1.2.7-0
- new upstream release.

* Thu Sep 29 2011 Kouhei Sutou <kou@clear-code.com> - 1.2.6-0
- new upstream release.

* Mon Aug 29 2011 Kouhei Sutou <kou@clear-code.com> - 1.2.5-0
- new upstream release.

* Fri Jul 29 2011 Kouhei Sutou <kou@clear-code.com> - 1.2.4-0
- new upstream release.

* Wed Jun 29 2011 Kouhei Sutou <kou@clear-code.com> - 1.2.3-0
- new upstream release.
- add a new groong-tools package.

* Sun May 29 2011 Kouhei Sutou <kou@clear-code.com> - 1.2.2-0
- new upstream release.
- split server files into groonga-server package.

* Fri Apr 29 2011 Kouhei Sutou <kou@clear-code.com> - 1.2.1-0
- new upstream release.

* Tue Mar 29 2011 Kouhei Sutou <kou@clear-code.com> - 1.2.0-0
- new upstream release.

* Wed Feb 09 2011 Kouhei Sutou <kou@clear-code.com> - 1.1.0-0
- new upstream release.

* Wed Feb 02 2011 Kouhei Sutou <kou@clear-code.com> - 1.0.8-0
- new upstream release.

* Sat Jan 29 2011 Kouhei Sutou <kou@clear-code.com> - 1.0.7-0
- new upstream release.

* Fri Dec 31 2010 Kouhei Sutou <kou@clear-code.com> - 1.0.6-0
- new upstream release

* Wed Dec 29 2010 Kouhei Sutou <kou@clear-code.com> - 1.0.5-0
- new upstream release.

* Mon Nov 29 2010 Kouhei Sutou <kou@clear-code.com> - 1.0.4-1
- new upstream release

* Wed Nov 24 2010 Daiki Ueno <dueno@redhat.com> - 1.0.3-2
- %%ghost /var/run/*.

* Fri Oct 29 2010 Kouhei Sutou <kou@clear-code.com> - 1.0.3-1
- new upstream release.

* Thu Oct 09 2010 Kouhei Sutou <kou@clear-code.com> - 1.0.2-2
- merge Fedora changes.

* Thu Sep 09 2010 Kouhei Sutou <kou@clear-code.com> - 1.0.2-1
- new upstream release.

* Mon Sep 06 2010 Kouhei Sutou <kou@clear-code.com> - 1.0.1-1
- new upstream release.

* Thu Sep 02 2010 Kouhei Sutou <kou@clear-code.com> - 1.0.0-1
- split packages.

* Tue Aug 24 2010 Daiki Ueno <dueno@redhat.com> - 0.7.6-1
- initial packaging for Fedora
