%define logstash_dir /opt/logstash

Name:		logstash
Version:	0
Release:	1
License:	BSD
URL:		http://code.google.com/p/logstash
BuildRoot:	%{_tmppath}/%{name}-%{version}-%{release}-root-%(id -u)
Source0:	http://code.google.com/p/logstash/downloads/%{name}-%{version}.tar.gz
Summary:	Centralized log indexing and searching
Group:		Applications/System
BuildArch:      noarch

%description
LogStash

%package server
Summary:        LogStash parsing, indexing, and searching server
Requires:	%{name}-libs = %{version}-%{release}
Requires:       grok-ruby
Requires(pre):  shadow-utils
Requires(post): chkconfig
Requires(preun): chkconfig
Requires(preun): initscripts
Requires(postun): initscripts
Group:		Applications/System

%description server
LogStash daemon.

%package libs
Summary:	LogStash common Ruby libraries
Requires:	ruby >= 1.8.5
Group:		Applications/System

%description libs
LogStash Ruby libraries.

%package agent
Summary:	LogStash log file collection agent
Requires:	%{name}-libs = %{version}-%{release}
Requires(post): chkconfig
Requires(preun): chkconfig
Requires(preun): initscripts
Requires(postun): initscripts
Group:		Applications/System

%description agent
LogStash file collection agent.

%package web
Summary:	LogStash web query interface
Requires:	%{name}-libs = %{version}-%{release}
Group:		Applications/System

%description web
LogStash web query interface.

%prep
%setup

%install
rm -rf %{buildroot}
%{__mkdir_p} %{buildroot}%{logstash_dir}
%{__mkdir_p} %{buildroot}%{logstash_dir}/docs
%{__mkdir_p} %{buildroot}/etc/init.d
%{__mkdir_p} %{buildroot}/etc/sysconfig
%{__mkdir_p} %{buildroot}/var/logstash
tar cf - bin etc/*.yaml lib patterns web \
  | (cd %{buildroot}%{logstash_dir} && tar xf -)
install -c etc/redhat/logstash %{buildroot}/etc/init.d/logstash
install -c etc/redhat/logstash-agent %{buildroot}/etc/init.d/logstash-agent
install -c etc/redhat/logstash.sysconfig %{buildroot}/etc/sysconfig/logstash
install -c etc/redhat/logstash-agent.sysconfig \
        %{buildroot}/etc/sysconfig/logstash-agent
install -c docs/AgentConfiguration.wiki %{buildroot}%{logstash_dir}/docs/
install -c docs/Design.wiki %{buildroot}%{logstash_dir}/docs/
install -c docs/NetworkDesign.wiki %{buildroot}%{logstash_dir}/docs/
install -c docs/Scaling.wiki %{buildroot}%{logstash_dir}/docs/
install -c docs/ServerConfiguration.wiki %{buildroot}%{logstash_dir}/docs/

%clean
rm -rf $RPM_BUILD_ROOT

%files libs
%defattr(-, root, root, 0755)
%{logstash_dir}/lib/config
%{logstash_dir}/lib/log.rb
%{logstash_dir}/lib/log/json.rb
%{logstash_dir}/lib/log/text.rb
%{logstash_dir}/lib/logs.rb
%{logstash_dir}/lib/net/clients
%{logstash_dir}/lib/net/common.rb
%{logstash_dir}/lib/net/messages
%{logstash_dir}/lib/net.rb
%{logstash_dir}/lib/program.rb
%{logstash_dir}/lib/util.rb
%{logstash_dir}/lib/db/index.rb
%{logstash_dir}/lib/db/indexreader.rb
%{logstash_dir}/lib/programs/agent.rb

%files server
%defattr(-, root, root, 0755)
/etc/init.d/logstash
%config(noreplace) /etc/sysconfig/logstash
%{logstash_dir}/bin/list_log_keys.rb
%{logstash_dir}/bin/list_log_types.rb
%{logstash_dir}/bin/logstashd
%{logstash_dir}/bin/search.rb
%{logstash_dir}/docs/Design.wiki
%{logstash_dir}/docs/NetworkDesign.wiki
%{logstash_dir}/docs/Scaling.wiki
%{logstash_dir}/docs/ServerConfiguration.wiki
%{logstash_dir}/lib/log
%{logstash_dir}/lib/net/servers
%{logstash_dir}/patterns
%config(noreplace) %{logstash_dir}/etc/logstashd.yaml
%defattr(-, logstash, logstash, 0775)
/var/logstash

%files agent
%defattr(-, root, root, 0755)
/etc/init.d/logstash-agent
%config(noreplace) /etc/sysconfig/logstash-agent
%{logstash_dir}/bin/logstash-agent
%{logstash_dir}/docs/AgentConfiguration.wiki
%{logstash_dir}/lib/net/clients/agent.rb
%{logstash_dir}/lib/file/tail/since.rb
%config(noreplace) %{logstash_dir}/etc/logstash-agent.yaml

%files web
%defattr(-, root, root, 0755)
%{logstash_dir}/web

%pre server
getent group logstash &>/dev/null || groupadd -r logstash
getent passwd logstash &>/dev/null || \
  useradd -r -g logstash -d %{logstash_dir} -s /sbin/nologin \
    -c "LogStash Daemon" logstash

%post server
/sbin/chkconfig --add logstash

%post agent
/sbin/chkconfig --add logstash-agent

%preun server
if [ "$1" = 0 ] ; then
  /sbin/service logstash stop &>/dev/null
  /sbin/chkconfig --del logstash &>/dev/null || true
fi

%preun agent
if [ "$1" = 0 ] ; then
  /sbin/service logstash-agent stop &>/dev/null
  /sbin/chkconfig --del logstash-agent &>/dev/null || true
fi

%postun server
if [ "$1" -ge 1 ]; then
  /sbin/service logstash condrestart &>/dev/null || true
fi

%postun agent
if [ "$1" -ge 1 ]; then
  /sbin/service logstash-agent condrestart &>/dev/null || true
fi

%changelog
* Mon Oct 19 2009 Pete Fritchman <petef@databits.net> - 0.3.0-1
- Initial packaging