Allisson Azevedo 18a7385
%global sphinx_user sphinx
Allisson Azevedo 18a7385
%global sphinx_group sphinx
Allisson Azevedo 18a7385
%global sphinx_home %{_localstatedir}/lib/sphinx
Allisson Azevedo 18a7385
Allisson Azevedo 16d6691
Name:           sphinx
Allisson Azevedo 18a7385
Version:        0.9.9
Allisson Azevedo 18a7385
Release:        1%{?dist}
Allisson Azevedo 16d6691
Summary:        Free open-source SQL full-text search engine
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
Group:          Applications/Text
Allisson Azevedo 16d6691
License:        GPLv2+
Allisson Azevedo 16d6691
URL:            http://sphinxsearch.com
Allisson Azevedo 16d6691
Source0:        http://sphinxsearch.com/downloads/%{name}-%{version}.tar.gz
Allisson Azevedo 16d6691
Source1:        %{name}.init
Allisson Azevedo 18a7385
Patch0:         %{name}-%{version}-fix_static.patch
Allisson Azevedo 16d6691
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
BuildRequires:  mysql-devel
Allisson Azevedo 16d6691
BuildRequires:  postgresql-devel
Allisson Azevedo 16d6691
BuildRequires:  expat-devel
Allisson Azevedo 16d6691
#Requires:
Allisson Azevedo 16d6691
Allisson Azevedo 18a7385
#Initscripts
Allisson Azevedo 16d6691
Requires(post): chkconfig
Allisson Azevedo 18a7385
Requires(preun): chkconfig initscripts
Allisson Azevedo 18a7385
Allisson Azevedo 18a7385
# Users and groups
Allisson Azevedo 18a7385
Requires(pre): shadow-utils
Allisson Azevedo 16d6691
       
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
%description
Allisson Azevedo 16d6691
Sphinx is a full-text search engine, distributed under GPL version 2.
Allisson Azevedo 16d6691
Commercial licensing (eg. for embedded use) is also available upon request.
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
Generally, it's a standalone search engine, meant to provide fast,
Allisson Azevedo 16d6691
size-efficient and relevant full-text search functions to other
Allisson Azevedo 16d6691
applications. Sphinx was specially designed to integrate well with SQL
Allisson Azevedo 16d6691
databases and scripting languages.
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
Currently built-in data source drivers support fetching data either via
Allisson Azevedo 16d6691
direct connection to MySQL, or PostgreSQL, or from a pipe in a custom XML
Allisson Azevedo 16d6691
format. Adding new drivers (eg. to natively support some other DBMSes) is
Allisson Azevedo 16d6691
designed to be as easy as possible.
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
Search API is natively ported to PHP, Python, Perl, Ruby, Java, and also
Allisson Azevedo 16d6691
available as a pluggable MySQL storage engine. API is very lightweight so
Allisson Azevedo 16d6691
porting it to new language is known to take a few hours.
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
As for the name, Sphinx is an acronym which is officially decoded as SQL
Allisson Azevedo 16d6691
Phrase Index. Yes, I know about CMU's Sphinx project.
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
%package -n libsphinxclient
Allisson Azevedo 16d6691
Summary:        Pure C searchd client API library
Allisson Azevedo 16d6691
Group:          Development/Libraries
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
%description -n libsphinxclient
Allisson Azevedo 16d6691
Pure C searchd client API library
Allisson Azevedo 16d6691
Sphinx search engine, http://sphinxsearch.com/
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
%package -n libsphinxclient-devel
Allisson Azevedo 16d6691
Summary:        Development libraries and header files for libsphinxclient
Allisson Azevedo 16d6691
Group:          Development/Libraries
Allisson Azevedo 16d6691
Requires:       libsphinxclient = %{version}-%{release}
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
%description -n libsphinxclient-devel
Allisson Azevedo 16d6691
Pure C searchd client API library
Allisson Azevedo 16d6691
Sphinx search engine, http://sphinxsearch.com/
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
%prep
Allisson Azevedo 16d6691
%setup -q
Allisson Azevedo 18a7385
%patch0 -p1 -b .fix_static
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
# Fix wrong-file-end-of-line-encoding
Allisson Azevedo 16d6691
sed -i 's/\r//' api/ruby/spec/sphinx/sphinx_test.sql
Allisson Azevedo 16d6691
sed -i 's/\r//' api/java/mk.cmd
Allisson Azevedo 16d6691
sed -i 's/\r//' api/ruby/spec/fixtures/keywords.php
Allisson Azevedo 16d6691
sed -i 's/\r//' api/ruby/lib/sphinx/response.rb
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
%build
Allisson Azevedo 16d6691
%configure --sysconfdir=/etc/sphinx --with-mysql --with-pgsql
Allisson Azevedo 16d6691
make %{?_smp_mflags}
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
# Build libsphinxclient
Allisson Azevedo 16d6691
cd api/libsphinxclient/
Allisson Azevedo 16d6691
%configure
Allisson Azevedo 16d6691
make #%{?_smp_mflags}
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
%install
Allisson Azevedo 16d6691
rm -rf $RPM_BUILD_ROOT
Allisson Azevedo 16d6691
make install DESTDIR=$RPM_BUILD_ROOT INSTALL="%{__install} -p -c"
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
# Install sphinx initscript
Allisson Azevedo 16d6691
install -p -D -m 0755 %{SOURCE1} $RPM_BUILD_ROOT%{_initrddir}/searchd
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
# Create /var/log/sphinx
Allisson Azevedo 16d6691
mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/log/sphinx
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
# Create /var/run/sphinx
Allisson Azevedo 16d6691
mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/run/sphinx
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
# Create /var/lib/sphinx
Allisson Azevedo 16d6691
mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/sphinx
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
# Create sphinx.conf
Allisson Azevedo 16d6691
cp $RPM_BUILD_ROOT%{_sysconfdir}/sphinx/sphinx-min.conf.dist \
Allisson Azevedo 16d6691
    $RPM_BUILD_ROOT%{_sysconfdir}/sphinx/sphinx.conf
Allisson Azevedo 16d6691
    
Allisson Azevedo 16d6691
# Modify sphinx.conf
Allisson Azevedo 16d6691
sed -i 's/\/var\/log\/searchd.log/\/var\/log\/sphinx\/searchd.log/g' \
Allisson Azevedo 16d6691
$RPM_BUILD_ROOT%{_sysconfdir}/sphinx/sphinx.conf
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
sed -i 's/\/var\/log\/query.log/\/var\/log\/sphinx\/query.log/g' \
Allisson Azevedo 16d6691
$RPM_BUILD_ROOT%{_sysconfdir}/sphinx/sphinx.conf
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
sed -i 's/\/var\/log\/searchd.pid/\/var\/run\/sphinx\/searchd.pid/g' \
Allisson Azevedo 16d6691
$RPM_BUILD_ROOT%{_sysconfdir}/sphinx/sphinx.conf
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
sed -i 's/\/var\/data\/test1/\/var\/lib\/sphinx\/test1/g' \
Allisson Azevedo 16d6691
$RPM_BUILD_ROOT%{_sysconfdir}/sphinx/sphinx.conf
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
# Create /etc/logrotate.d/sphinx
Allisson Azevedo 16d6691
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d
Allisson Azevedo 16d6691
cat > $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/sphinx << EOF
Allisson Azevedo 16d6691
/var/log/sphinx/*.log {
Allisson Azevedo 16d6691
       weekly
Allisson Azevedo 16d6691
       rotate 10
Allisson Azevedo 16d6691
       copytruncate
Allisson Azevedo 16d6691
       delaycompress
Allisson Azevedo 16d6691
       compress
Allisson Azevedo 16d6691
       notifempty
Allisson Azevedo 16d6691
       missingok
Allisson Azevedo 16d6691
}
Allisson Azevedo 16d6691
EOF
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
# Install libsphinxclient
Allisson Azevedo 16d6691
cd api/libsphinxclient/
Allisson Azevedo 16d6691
make install DESTDIR=$RPM_BUILD_ROOT INSTALL="%{__install} -p -c"
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
# clean-up .la archives
Allisson Azevedo 16d6691
find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';'
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
# clean-up .a archives
Allisson Azevedo 16d6691
find $RPM_BUILD_ROOT -name '*.a' -exec rm -f {} ';'
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
%clean
Allisson Azevedo 16d6691
rm -rf $RPM_BUILD_ROOT
Allisson Azevedo 16d6691
Allisson Azevedo 18a7385
%pre
Allisson Azevedo 18a7385
getent group %{sphinx_group} >/dev/null || groupadd -r %{sphinx_group}
Allisson Azevedo 18a7385
getent passwd %{sphinx_user} >/dev/null || \
Allisson Azevedo 18a7385
useradd -r -g %{sphinx_group} -d %{sphinx_home} -s /bin/bash \
Allisson Azevedo 18a7385
-c "Sphinx Search" %{sphinx_user}
Allisson Azevedo 18a7385
exit 0
Allisson Azevedo 18a7385
Allisson Azevedo 16d6691
%post
Allisson Azevedo 16d6691
/sbin/chkconfig --add searchd
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
%preun
Allisson Azevedo 16d6691
if [ $1 = 0 ] ; then
Allisson Azevedo 16d6691
    /sbin/service searchd stop >/dev/null 2>&1
Allisson Azevedo 16d6691
    /sbin/chkconfig --del searchd
Allisson Azevedo 16d6691
fi
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
%post -p /sbin/ldconfig -n libsphinxclient
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
%postun -p /sbin/ldconfig -n libsphinxclient
Allisson Azevedo 18a7385
Allisson Azevedo 18a7385
%posttrans
Allisson Azevedo 18a7385
chown -R %{sphinx_user}:root %{_localstatedir}/log/sphinx/
Allisson Azevedo 18a7385
chown -R %{sphinx_user}:root %{_localstatedir}/run/sphinx/
Allisson Azevedo 18a7385
chown -R %{sphinx_user}:root %{_localstatedir}/lib/sphinx/
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
%files
Allisson Azevedo 16d6691
%defattr(-,root,root,-)
Allisson Azevedo 16d6691
%doc COPYING doc/sphinx.txt sphinx-min.conf.dist sphinx.conf.dist example.sql
Allisson Azevedo 16d6691
%dir %{_sysconfdir}/sphinx
Allisson Azevedo 16d6691
%config(noreplace) %{_sysconfdir}/sphinx/sphinx.conf
Allisson Azevedo 16d6691
%exclude %{_sysconfdir}/sphinx/*.conf.dist
Allisson Azevedo 16d6691
%exclude %{_sysconfdir}/sphinx/example.sql
Allisson Azevedo 16d6691
%{_initrddir}/searchd
Allisson Azevedo 16d6691
%config(noreplace) %{_sysconfdir}/logrotate.d/sphinx
Allisson Azevedo 16d6691
%{_bindir}/*
Allisson Azevedo 18a7385
%dir %attr(0755, %{sphinx_user}, root) %{_localstatedir}/log/sphinx
Allisson Azevedo 18a7385
%dir %attr(0755, %{sphinx_user}, root) %{_localstatedir}/run/sphinx
Allisson Azevedo 18a7385
%dir %attr(0755, %{sphinx_user}, root) %{_localstatedir}/lib/sphinx
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
%files -n libsphinxclient
Allisson Azevedo 16d6691
%defattr(-,root,root,-)
Allisson Azevedo 16d6691
%doc api/java api/ruby api/*.php api/*.py api/libsphinxclient/README
Allisson Azevedo 16d6691
%{_libdir}/libsphinxclient-0*.so
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
%files -n libsphinxclient-devel
Allisson Azevedo 16d6691
%defattr(-,root,root,-)
Allisson Azevedo 16d6691
%{_libdir}/libsphinxclient.so
Allisson Azevedo 16d6691
%{_includedir}/*
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
%changelog
Allisson Azevedo 18a7385
* Thu Feb 11 2010 Allisson Azevedo <allisson@gmail.com> 0.9.9-1
Allisson Azevedo 18a7385
- Update to 0.9.9 (#556997).
Allisson Azevedo 18a7385
- Added sphinx-0.9.9-fix_static.patch to fix FTBS.
Allisson Azevedo 18a7385
- Run sphinx searchd as non-root user (#541464).
Allisson Azevedo 18a7385
Allisson Azevedo 16d6691
* Wed Aug 12 2009 Allisson Azevedo <allisson@gmail.com> 0.9.8.1-3
Allisson Azevedo 16d6691
- Fixed macros consistency.
Allisson Azevedo 16d6691
- Modified make install to keep timestamps.
Allisson Azevedo 16d6691
- Added libsphinxclient package.
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
* Fri Aug  7 2009 Allisson Azevedo <allisson@gmail.com> 0.9.8.1-2
Allisson Azevedo 16d6691
- Added sysv init.
Allisson Azevedo 16d6691
- Added logrotate.d entry.
Allisson Azevedo 16d6691
Allisson Azevedo 16d6691
* Thu Jul 30 2009 Allisson Azevedo <allisson@gmail.com> 0.9.8.1-1
Allisson Azevedo 16d6691
- Initial rpm release.