- update to 2.2.1

- sync with textproc/sphinxsearch
- use OPTIONS Helpers

Approved by:	mat
This commit is contained in:
Daniel Gerzo 2013-11-29 14:30:25 +00:00
parent f16431a499
commit d235c6956c
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=335181
8 changed files with 137 additions and 149 deletions

View file

@ -1,16 +1,19 @@
# Created by: Daniel Gerzo <danger@FreeBSD.org>
# $FreeBSD$
# Note: the Sphinx Storage Engine MySQL plugin is not supported by
# this port. You need a patched version of mysql server for that.
# See http://www.infracaninophile.co.uk/articles/sphinxse.html
PORTNAME= sphinxsearch
PORTVERSION= 2.0.1b
PORTREVISION= 2
PORTVERSION= 2.2.1
PORTEPOCH= 1
CATEGORIES= textproc databases
MASTER_SITES= http://sphinxsearch.com/files/
MASTER_SITES= http://sphinxsearch.com/files/ \
http://snowball.tartarus.org/dist/:libstemmer
PKGNAMESUFFIX?= -devel
DISTNAME= sphinx-2.0.1-beta
PATCH_DIST_STRIP=-p1
DISTNAME= sphinx-${PORTVERSION}-beta
DISTFILES= ${DISTNAME}${EXTRACT_SUFX}
MAINTAINER= danger@FreeBSD.org
COMMENT= Sphinx Full-Text Search Engine
@ -19,66 +22,73 @@ LICENSE= GPLv2
LATEST_LINK= sphinxsearch-devel
CONFLICTS= sphinxsearch-[0-9]* \
dpsearch-[0-9]* \
rdb-[0-9]* \
swish++-[0-9]* \
xaira-[0-9]*
# If expat is present on the system and configure finds it, it will
# unconditionally link the output binary against it. There's no way
# of turning this off. So for consistency, make sure it's always on.
LIB_DEPENDS= expat.6:${PORTSDIR}/textproc/expat2
# of turning this off. So for consistency, make sure it's always on.
LIB_DEPENDS= libexpat.so:${PORTSDIR}/textproc/expat2
OPTIONS_DEFINE= MYSQL PGSQL ICONV OPTIMIZED_CFLAGS ID64 UNIXODBC \
DOCS EXAMPLES
ID64_DESC= 64-bit document and word IDs
OPTIONS_DEFAULT= MYSQL ICONV
OPTIONS_DEFINE= ICONV ID64 LIBSTEMMER MYSQL OPTIMIZED_CFLAGS PGSQL \
SYSLOG UNIXODBC
OPTIONS_DEFAULT=ICONV MYSQL SYSLOG
NO_STAGE= yes
.include <bsd.port.options.mk>
# The port will successfully compile with both PGSQL and MYSQL support
# simultaneously. Not sure how useful that is in practice though.
.if ${PORT_OPTIONS:MMYSQL}
CONFIGURE_ARGS+= --with-mysql
USE_MYSQL= yes
.else
CONFIGURE_ARGS+= --without-mysql
.endif
.if ${PORT_OPTIONS:MPGSQL}
CONFIGURE_ARGS+= --with-pgsql
USE_PGSQL= yes
.else
CONFIGURE_ARGS+= --without-pgsql
.endif
.if ${PORT_OPTIONS:MICONV}
CONFIGURE_ARGS+= --with-iconv
USES+= iconv
.else
CONFIGURE_ARGS+= --without-iconv
.endif
.if ${PORT_OPTIONS:MOPTIMIZED_CFLAGS}
CXXFLAGS+= -O3 -fomit-frame-pointer
.endif
ICONV_CONFIGURE_WITH= iconv
ICONV_USES= iconv
ICONV_LDFLAGS= ${ICONV_LIB}
# Changes document and word IDs to a 64bit type, useful if you have
# more than about 4.2E9 such items to deal with. Means corresponding
# changes in DB schema. Disabled by default.
.if ${PORT_OPTIONS:MID64}
CONFIGURE_ARGS+= --enable-id64
ID64_DESC= Use 64-bit document and word IDs
ID64_CONFIGURE_ENABLE= id64
# Note: The snowball project doesn't release numbered versions of it's
# pre-processors. Instead, at arbitrary but fairly long intervals a
# snapshot of their source repository is turned into a tarball (always
# the same filename) and placed on their web site. It's like they
# want to make it as hard as possible for anyone to package and use
# their software.
#
# Adds support for two additional word stemmming pre-processors from
# the Snowball project (http://snowball.tartarus.org/) -- these
# essentially do exactly the same thing as the built in English,
# Russian and Czech stemmers but also support French, Spanish,
# Portuguese, Italian, Romanian, German, Dutch, Swedish, Norwegian,
# Danish, Finnish, Hungarian. Disabled by default.
LIBSTEMMER_DESC= Compile with libstemmer support
LIBSTEMMER_CONFIGURE_WITH=libstemmer
LIBSTEMMER_DISTNAME= libstemmer_c
LIBSTEMMER_DISTFILES= ${LIBSTEMMER_DISTNAME}.tgz:libstemmer
.if make(makesum) || defined(FETCH_ALL)
OPTIONS_SET_FORCE= LIBSTEMMER
.endif
.if ${PORT_OPTIONS:MUNIXODBC}
CONFIGURE_ARGS+= --with-unixodbc
LIB_DEPENDS+= odbc.2:${PORTSDIR}/databases/unixODBC
.else
CONFIGURE_ARGS+= --without-unixodbc
.endif
# The port will successfully compile with both PGSQL and MYSQL support
# simultaneously. Not sure how useful that is in practice though.
MYSQL_CONFIGURE_WITH= mysql
MYSQL_CONFIGURE_ON= --with-mysql-includes=${LOCALBASE}/include/mysql \
--with-mysql-libs=${LOCALBASE}/lib/mysql
MYSQL_USE= mysql
OPTIMIZED_CFLAGS_CXXFLAGS=-O3 -fomit-frame-pointer
PGSQL_CONFIGURE_WITH= pgsql
PGSQL_CONFIGURE_ON= --with-pgsql-includes=${LOCALBASE}/include \
--with-pgsql-libs=${LOCALBASE}/lib
PGSQL_USE= pgsql
SYSLOG_DESC= Enable logging via syslog
SYSLOG_CONFIGURE_WITH= syslog
UNIXODBC_CONFIGURE_WITH=unixodbc
UNIXODBC_LIB_DEPENDS= odbc:${PORTSDIR}/databases/unixODBC
CONFLICTS= sphinxsearch-[0-9]* dpsearch-[0-9]* rdb-[0-9]* \
swish++-[0-9]* xaira-[0-9]*
.include <bsd.port.options.mk>
USERS?= _sphinx
GROUPS?= _sphinx
@ -110,14 +120,17 @@ PORTEXAMPLES= *
.if ${PORT_OPTIONS:MDOCS}
DOCS= doc/sphinx.css doc/sphinx.html doc/sphinx.txt doc/sphinx.xml
DOCSRC= ${WRKSRC}/doc
MAN1SRC= indexer.1 indextool.1 search.1 spelldump.1
MAN8SRC= searchd.8
.endif
.if ${ARCH} == "ia64" || ${ARCH} == "powerpc" || ${ARCH} == "sparc64"
BROKEN= Does not compile on ia64, powerpc, or sparc64
post-extract:
.if ${PORT_OPTIONS:MLIBSTEMMER}
@( cd ${WRKDIR} && ${COPYTREE_SHARE} ${LIBSTEMMER_DISTNAME} ${WRKSRC} )
.endif
# Fix up the sample configuration file to correspond to FreeBSD norms
post-patch:
@${REINPLACE_CMD} \
-e "s!@CONFDIR@/log/searchd.pid!${SPHINX_RUN}/searchd.pid!" \
@ -125,34 +138,36 @@ post-patch:
-e "s!@CONFDIR@/log/searchd.log!${SPHINX_LOG}/searchd.log!" \
-e "s!@CONFDIR@!${SPHINX_DIR}!" \
${WRKSRC}/sphinx.conf.in
do-install: install-bin install-docs install-examples
install-bin:
${INSTALL_PROGRAM} ${WRKSRC}/src/indexer ${PREFIX}/bin/indexer
${INSTALL_PROGRAM} ${WRKSRC}/src/search ${PREFIX}/bin/search
${INSTALL_PROGRAM} ${WRKSRC}/src/searchd ${PREFIX}/sbin/searchd
${INSTALL_DATA} ${WRKSRC}/sphinx.conf.dist ${CFGFILE}.sample
install-docs:
.if ${PORT_OPTIONS:MDOCS}
@${MKDIR} ${DOCSDIR}
.for doc in ${DOCS}
${INSTALL_DATA} ${WRKSRC}/${doc} ${DOCSDIR}
${SED} -e 's/"1"/"8"/' ${DOCSRC}/searchd.1 > ${DOCSRC}/searchd.8
.for man in ${MAN1}
${SED} -i~ -e 's/\\fBsearchd\\fR(1)/\\fBsearchd\\fR(8)/' \
${DOCSRC}/${man}
.endfor
.endif
do-install: install-bin install-docs install-man install-examples
install-bin:
${INSTALL_PROGRAM} ${WRKSRC}/src/indexer ${STAGEDIR}${PREFIX}/bin/indexer
${INSTALL_PROGRAM} ${WRKSRC}/src/indextool ${STAGEDIR}${PREFIX}/bin/indextool
${INSTALL_PROGRAM} ${WRKSRC}/src/search ${STAGEDIR}${PREFIX}/bin/search
${INSTALL_PROGRAM} ${WRKSRC}/src/spelldump ${STAGEDIR}${PREFIX}/bin/spelldump
${INSTALL_PROGRAM} ${WRKSRC}/src/searchd ${STAGEDIR}${PREFIX}/sbin/searchd
${INSTALL_DATA} ${WRKSRC}/sphinx.conf.dist ${STAGEDIR}${CFGFILE}.sample
install-docs:
@${MKDIR} ${STAGEDIR}${DOCSDIR}
(cd ${WRKSRC} && ${INSTALL_DATA} ${DOCS} ${STAGEDIR}/${DOCSDIR})
install-man:
(cd ${WRKSRC} && ${INSTALL_MAN} ${MAN1SRC} ${STAGEDIR}${MANPREFIX}/man/man1)
(cd ${WRKSRC} && ${INSTALL_MAN} ${MAN8SRC} ${STAGEDIR}${MANPREFIX}/man/man8)
install-examples:
.if ${PORT_OPTIONS:MEXAMPLES}
@${MKDIR} ${EXAMPLESDIR}
.for example in ${EXAMPLES}
@cd ${WRKSRC} && ${COPYTREE_SHARE} ${example} ${EXAMPLESDIR}
.endfor
@${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
(cd ${WRKSRC} && ${COPYTREE_SHARE} ${EXAMPLES} ${STAGEDIR}${EXAMPLESDIR})
.endif
post-install-cfg:
@if [ ! -f ${CFGFILE} ]; then \
${CP} -p ${CFGFILE}.sample ${CFGFILE} ; \
fi
.include <bsd.port.mk>

View file

@ -1,2 +1,4 @@
SHA256 (sphinx-2.0.1-beta.tar.gz) = fe27152ee24224bcf2ab7293dabe826d8db69c35eca16edf1ca510e0a1f4bf81
SIZE (sphinx-2.0.1-beta.tar.gz) = 1761313
SHA256 (sphinx-2.2.1-beta.tar.gz) = 877b9e072b21c6d23f6808e004a7637cef7b186686a6cb0de97d99a9ed038898
SIZE (sphinx-2.2.1-beta.tar.gz) = 2717191
SHA256 (libstemmer_c.tgz) = 5adcf6432fd3d5ba51c8674d833d851b5aa6e532d52ff95e57102033edcd285f
SIZE (libstemmer_c.tgz) = 129496

View file

@ -1,20 +0,0 @@
--- src/sphinxstd.h~ 2011-04-01 16:50:14.000000000 +0000
+++ src/sphinxstd.h 2011-06-15 09:22:46.000000000 +0000
@@ -1922,6 +1922,8 @@
T ReadValue() const
{
assert ( m_pValue );
+ if (!m_pValue)
+ return 0;
Lock();
T val = *m_pValue;
Unlock();
@@ -1930,6 +1932,8 @@
void WriteValue ( const T& tNewValue )
{
assert ( m_pValue );
+ if (!m_pValue)
+ return;
Lock();
*m_pValue = tNewValue;
Unlock();

View file

@ -1,29 +0,0 @@
--- src/sphinxexpr.cpp.orig 2011-03-11 17:43:11.000000000 +0000
+++ src/sphinxexpr.cpp
@@ -1722,7 +1722,7 @@ public:
/// evaluate arg, return interval id
virtual int IntEval ( const CSphMatch & tMatch ) const
{
- T val = ExprEval ( this->m_pArg, tMatch ); // 'this' fixes gcc braindamage
+ T val = this->ExprEval ( this->m_pArg, tMatch ); // 'this' fixes gcc braindamage
ARRAY_FOREACH ( i, this->m_dValues ) // FIXME! OPTIMIZE! perform binary search here
if ( val<this->m_dValues[i] )
return i;
@@ -1753,7 +1753,7 @@ public:
/// evaluate arg, return interval id
virtual int IntEval ( const CSphMatch & tMatch ) const
{
- T val = ExprEval ( this->m_pArg, tMatch ); // 'this' fixes gcc braindamage
+ T val = this->ExprEval ( this->m_pArg, tMatch ); // 'this' fixes gcc braindamage
ARRAY_FOREACH ( i, m_dTurnPoints )
if ( val < Expr_ArgVsSet_c<T>::ExprEval ( m_dTurnPoints[i], tMatch ) )
return i;
@@ -1799,7 +1799,7 @@ public:
/// evaluate arg, check if the value is within set
virtual int IntEval ( const CSphMatch & tMatch ) const
{
- T val = ExprEval ( this->m_pArg, tMatch ); // 'this' fixes gcc braindamage
+ T val = this->ExprEval ( this->m_pArg, tMatch ); // 'this' fixes gcc braindamage
return this->m_dValues.BinarySearch ( val )!=NULL;
}

View file

@ -6,15 +6,15 @@
sphinx_usr=%%SPHINX_USR%%
sphinx_grp=%%SPHINX_GRP%%
sphinx_dir=%%SPHINX_DIR%%
sphinx_name=%%PORTNAME%%
portname=%%PORTNAME%%
case $2 in
POST-DEINSTALL)
cat <<EOMSG
The $sphinx_name port has been deleted. If you are not
upgrading and don't intend to use $sphinx_name any more
The $portname port has been deleted. If you are not
upgrading and don't intend to use $portname any more
then you may wish to delete the $sphinx_usr account,
and the $sphinx_grp group together with the working
directory $sphinx_dir; which can be done with the

View file

@ -61,9 +61,9 @@ start_precmd=%%PORTNAME%%_prestart
${%%PORTNAME%%_logdir}
fi
if [ ! -d ${%%PORTNAME%%_dir} ]; then
mkdir -m 755 -p ${%%PORTNAME%%_dir} ${%%PORTNAME%%_dir}/data
chown -R ${%%PORTNAME%%_user}:${%%PORTNAME%%_group} \
${%%PORTNAME%%_dir}
mkdir -m 755 -p ${%%PORTNAME%%_dir} ${%%PORTNAME%%_dir}/data
chown -R ${%%PORTNAME%%_user}:${%%PORTNAME%%_group} \
${%%PORTNAME%%_dir}
fi
}

View file

@ -1,14 +1,27 @@
Sphinx is a full-text search engine, distributed under GPL version
2. Commercial license is also available for embedded use.
Sphinx is an open source full text search server, designed from the
ground up with performance, relevance (aka search quality), and
integration simplicity in mind. It's written in C++ and works on Linux
(RedHat, Ubuntu, etc), Windows, MacOS, Solaris, FreeBSD, and a few
other systems.
Generally, it's a standalone search engine, meant to provide fast,
size-efficient and relevant fulltext search functions to other
applications. Sphinx was specially designed to integrate well with SQL
databases and scripting languages. Currently built-in data sources
support fetching data either via direct connection to MySQL, or from
an XML pipe.
Sphinx lets you either batch index and search data stored in an SQL
database, NoSQL storage, or just files quickly easily and or index and
search data on the fly, working with Sphinx pretty much as with a
database server.
As for the name, Sphinx is an acronym which is officially decoded as
SQL Phrase Index.
A variety of text processing features enable fine-tuning Sphinx for
your particular application requirements, and a number of relevance
functions ensures you can tweak search quality as well.
WWW: http://www.sphinxsearch.com/
Searching via SphinxAPI is as simple as 3 lines of code, and querying
via SphinxQL is even simpler, with search queries expressed in good
old SQL.
Sphinx clusters scale up to billions of documents and tens of millions
search queries per day, powering top websites such as Craigslist,
DailyMotion, NetLog, etc.
And last but not least, it's open-sourced under GPLv2, and the
community edition is free to use.
WWW: http://sphinxsearch.com/

View file

@ -1,9 +1,16 @@
bin/indexer
bin/indextool
bin/search
bin/spelldump
sbin/searchd
@unexec if cmp -s %D/etc/sphinx.conf.sample %D/etc/sphinx.conf; then rm -f %D/etc/sphinx.conf; fi
etc/sphinx.conf.sample
@exec if [ ! -f %D/etc/sphinx.conf ] ; then cp -p %D/%F %B/sphinx.conf; fi
%%PORTDOCS%%man/man1/indexer.1.gz
%%PORTDOCS%%man/man1/indextool.1.gz
%%PORTDOCS%%man/man1/search.1.gz
%%PORTDOCS%%man/man1/spelldump.1.gz
%%PORTDOCS%%man/man8/searchd.8.gz
%%PORTDOCS%%%%DOCSDIR%%/sphinx.css
%%PORTDOCS%%%%DOCSDIR%%/sphinx.html
%%PORTDOCS%%%%DOCSDIR%%/sphinx.txt