Package init

This commit is contained in:
xiaoweiwei 2020-03-06 16:00:16 +08:00
parent 360a03809d
commit 656cf7d8c3
5 changed files with 287 additions and 0 deletions

26
listen_local.patch Normal file
View File

@ -0,0 +1,26 @@
--- sphinx-2.2.11-release-orig/sphinx.conf.in 2019-09-05 08:57:23.608395395 -0400
+++ sphinx-2.2.11-release/sphinx.conf.in 2019-09-05 08:56:43.568117907 -0400
@@ -810,8 +810,8 @@
# listen = 192.168.0.1:9312
# listen = 9312
# listen = /var/run/searchd.sock
- listen = 9312
- listen = 9306:mysql41
+ listen = 127.0.0.1:9312
+ listen = 127.0.0.1:9306:mysql41
# log file, searchd run info is logged here
# optional, default is 'searchd.log'
--- sphinx-2.2.11-release-orig/sphinx-min.conf.in 2019-09-05 08:59:14.851388059 -0400
+++ sphinx-2.2.11-release/sphinx-min.conf.in 2019-09-05 08:59:44.248857589 -0400
@@ -49,8 +49,8 @@
searchd
{
- listen = 9312
- listen = 9306:mysql41
+ listen = 127.0.0.1:9312
+ listen = 127.0.0.1:9306:mysql41
log = @CONFDIR@/log/searchd.log
query_log = @CONFDIR@/log/query.log
read_timeout = 5

12
searchd.service Normal file
View File

@ -0,0 +1,12 @@
[Unit]
Description=Sphinx - SQL Full Text Search Engine
After=local-fs.target network.target
[Service]
User=sphinx
Type=forking
PIDFile=/run/sphinx/searchd.pid
ExecStart=/usr/bin/searchd --config /etc/sphinx/sphinx.conf
[Install]
WantedBy=multi-user.target

View File

@ -0,0 +1,22 @@
--- sphinx-2.0.3-release/api/libsphinxclient/sphinxclient.c~ 2011-11-13 06:40:26.000000000 -0600
+++ sphinx-2.0.3-release/api/libsphinxclient/sphinxclient.c 2012-02-14 13:45:50.444826859 -0600
@@ -290,7 +290,7 @@
}
-void sock_close ( int sock );
+static sock_close ( int sock );
#define safe_free(_ptr) \
--- sphinx-2.0.3-release/api/libsphinxclient/sphinxclient.c~ 2012-02-14 13:50:33.000000000 -0600
+++ sphinx-2.0.3-release/api/libsphinxclient/sphinxclient.c 2012-02-14 13:54:50.527389085 -0600
@@ -1253,7 +1253,7 @@
}
-void sock_close ( int sock )
+static sock_close ( int sock )
{
if ( sock<0 )
return;

Binary file not shown.

227
sphinx.spec Normal file
View File

@ -0,0 +1,227 @@
%global sphinx_user sphinx
%global sphinx_group sphinx
%global sphinx_home %{_localstatedir}/lib/sphinx
Name: sphinx
Version: 2.2.11
Release: 1
Summary: Free open-source SQL full-text search engine
License: GPLv2+
URL: http://sphinxsearch.com
Source0: http://sphinxsearch.com/files/%{name}-%{version}-release.tar.gz
Source1: searchd.service
Patch0001: %{name}-2.0.3-fix_static.patch
Patch0002: listen_local.patch
BuildRequires: gcc gcc-c++ expat-devel mariadb-connector-c-devel openssl-devel libpq-devel systemd
Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd
Requires(pre): shadow-utils
%description
Sphinx is a full-text search engine, distributed under GPL version 2.
Commercial licensing (e.g. for embedded use) is also available upon request.
Generally, it's a standalone search engine, meant to provide fast,
size-efficient and relevant full-text search functions to other
applications. Sphinx was specially designed to integrate well with SQL
databases and scripting languages.
Currently built-in data source drivers support fetching data either via
direct connection to MySQL, or PostgreSQL, or from a pipe in a custom XML
format. Adding new drivers (e.g. native support other DBMSes) is
designed to be as easy as possible.
Search API native ported to PHP, Python, Perl, Ruby, Java, and also
available as a plug-gable MySQL storage engine. API is very lightweight so
porting it to new language is known to take a few hours.
As for the name, Sphinx is an acronym which is officially decoded as SQL
Phrase Index. Yes, I know about CMU's Sphinx project.
%package -n libsphinxclient
Summary: Pure C search-d client API library
%description -n libsphinxclient
Pure C search-d client API library
Sphinx search engine, http://sphinxsearch.com/
%package -n libsphinxclient-devel
Summary: Development libraries and header files for libsphinxclient
Requires: libsphinxclient = %{version}-%{release}
%description -n libsphinxclient-devel
Pure C search-d client API library
Sphinx search engine, http://sphinxsearch.com/
%package java
Summary: Java API for Sphinx
BuildRequires: java-devel
Requires: java-headless jpackage-utils
%description java
This package provides the Java API for Sphinx,
the free, open-source full-text search engine,
designed with indexing database content in mind.
%package php
Summary: PHP API for Sphinx
Requires: php-common >= 5.1.6
%description php
This package provides the PHP API for Sphinx,
the free, open-source full-text search engine,
designed with indexing database content in mind.
%package_help
%prep
%autosetup -n %{name}-%{version}-release -p1
# Fix wrong-file-end-of-line-encoding
for f in \
api/java/mk.cmd \
api/ruby/test.rb \
api/ruby/spec/%{name}/%{name}_test.sql \
api/ruby/spec/%{name}/%{name}_test.sql \
; do
sed -i 's/\r$//' ${f};
done
# Fix file not UTF8
iconv -f iso8859-1 -t utf-8 doc/%{name}.txt > doc/%{name}.txt.conv && mv -f doc/%{name}.txt.conv doc/%{name}.txt
%build
%configure --sysconfdir=%{_sysconfdir}/%{name} --with-mysql --with-pgsql --enable-id64
make %{?_smp_mflags}
pushd api/libsphinxclient
%configure
make #%{?_smp_mflags}
popd
make -C api/java
%install
%make_install
install -p -D -m 0644 %{SOURCE1} $RPM_BUILD_ROOT%{_unitdir}/searchd.service
# Create /var/log/sphinx
mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/log/%{name}
# Create /var/run/sphinx
mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/run/%{name}
# Create /var/lib/sphinx
mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/%{name}
# Create sphinx.conf
cp $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/%{name}-min.conf.dist \
$RPM_BUILD_ROOT%{_sysconfdir}/%{name}/%{name}.conf
# Modify sphinx.conf
sed -i 's|/var/log/searchd.log|%{_localstatedir}/log/%{name}/searchd.log|g' \
$RPM_BUILD_ROOT%{_sysconfdir}/%{name}/%{name}.conf
sed -i 's|/var/log/query.log|%{_localstatedir}/log/%{name}/query.log|g' \
$RPM_BUILD_ROOT%{_sysconfdir}/%{name}/%{name}.conf
sed -i 's|/var/log/searchd.pid|%{_localstatedir}/run/%{name}/searchd.pid|g' \
$RPM_BUILD_ROOT%{_sysconfdir}/%{name}/%{name}.conf
sed -i 's|/var/data|%{_localstatedir}/lib/sphinx|g' \
$RPM_BUILD_ROOT%{_sysconfdir}/%{name}/%{name}.conf
# Create /etc/logrotate.d/sphinx
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d
cat > $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/%{name} << EOF
%{_localstatedir}/log/%{name}/*.log {
weekly
rotate 10
copytruncate
delaycompress
compress
notifempty
missingok
}
EOF
# Create tmpfile run configuration
mkdir -p $RPM_BUILD_ROOT%{_tmpfilesdir}
cat > $RPM_BUILD_ROOT%{_tmpfilesdir}/%{name}.conf << EOF
d /run/%{name} 755 %{name} root -
EOF
# Install libsphinxclient
pushd api/libsphinxclient/
make install DESTDIR=$RPM_BUILD_ROOT INSTALL="%{__install} -p -c"
popd
# install the java api
mkdir -p $RPM_BUILD_ROOT%{_javadir}
install -m 0644 api/java/%{name}api.jar \
$RPM_BUILD_ROOT%{_javadir}/%{name}.jar
ln -s %{_javadir}/%{name}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}api.jar
# install the php api
# "Non-PEAR PHP extensions should put their Class files in /usr/share/php."
# - http://fedoraproject.org/wiki/Packaging:PHP
install -d -m 0755 $RPM_BUILD_ROOT%{_datadir}/php
install -m 0644 api/%{name}api.php $RPM_BUILD_ROOT%{_datadir}/php
# clean-up .la archives
find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';'
# clean-up .a archives
find $RPM_BUILD_ROOT -name '*.a' -exec rm -f {} ';'
%pre
getent group %{sphinx_group} >/dev/null || groupadd -r %{sphinx_group}
getent passwd %{sphinx_user} >/dev/null || \
useradd -r -g %{sphinx_group} -d %{sphinx_home} -s /bin/bash \
-c "Sphinx Search" %{sphinx_user}
exit 0
%post
%systemd_post searchd.service
%preun
%systemd_preun searchd.service
%ldconfig_scriptlets -n libsphinxclient
%postun
%systemd_postun_with_restart searchd.service
%posttrans
chown -R %{sphinx_user}:root %{_localstatedir}/log/%{name}/
chown -R %{sphinx_user}:root %{_localstatedir}/run/%{name}/
chown -R %{sphinx_user}:root %{_localstatedir}/lib/%{name}/
%triggerun -- sphinx < 2.0.3-1
# Save the current service runlevel info
# User must manually run systemd-sysv-convert --apply httpd
# to migrate them to systemd targets
/usr/bin/systemd-sysv-convert --save searchd >/dev/null 2>&1 ||:
# Run these because the SysV package being removed won't do them
/sbin/chkconfig --del searchd >/dev/null 2>&1 || :
/bin/systemctl try-restart searchd.service >/dev/null 2>&1 || :
%files
%defattr(-, root, root)
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
%config(noreplace) %{_sysconfdir}/%{name}/%{name}.conf
%exclude %{_sysconfdir}/%{name}/*.conf.dist
%exclude %{_sysconfdir}/%{name}/example.sql
%{_bindir}/*
%{_unitdir}/searchd.service
%{_tmpfilesdir}/%{name}.conf
%dir %{_sysconfdir}/sphinx
%dir %attr(0755, %{sphinx_user}, root) %{_localstatedir}/log/%{name}
%dir %attr(0755, %{sphinx_user}, root) %{_localstatedir}/run/%{name}
%dir %attr(0755, %{sphinx_user}, root) %{_localstatedir}/lib/%{name}
%files -n libsphinxclient
%defattr(-, root, root)
%{_libdir}/libsphinxclient-0*.so
%files -n libsphinxclient-devel
%defattr(-, root, root)
%{_libdir}/libsphinxclient.so
%{_includedir}/*
%files java
%defattr(-, root, root)
%{_javadir}/*
%files php
%defattr(-, root, root)
%{_datadir}/php/*
%files help
%defattr(-, root, root)
%doc COPYING doc/sphinx.txt sphinx-min.conf.dist sphinx.conf.dist example.sql api/java api/ruby api/*.php api/*.py
%doc api/libsphinxclient/README api/java/README
%{_mandir}/man1/*
%changelog
* Fri Mar 06 2020 openEuler Buildteam <buildteam@openeuler.org> - 2.2.11-1
- Package init