aboutsummaryrefslogblamecommitdiff
path: root/textproc/sphinxsearch/Makefile
blob: baa2780de23ec39c1cb2e8163adc03ca4c26fe56 (plain) (tree)
1
2
3
4
5
6
7
8
9
                            
           
 
                                                                  
                                                                  
                                                              

                            
                     
                                  
                                              
                                             
                                          
 
                                   

                                              

                     

                                                                    
                                                                     
                                                 
 
                                                                    
                               










                                                        
 
                                                                      
                                           
 
                   
                              



                                                                      
                          


                                                                          




                                       
                          


                                                                    




                                       
                          
                                    
                             
                                    



                                       
                                     


                                                


                                                                     
                         


                                     
                             
                                       
                                                           



                                          
                           




                                        













                                                                      
                                                                      





                                                             
                               



                                            
 










                                                                  
                           
                                         
                            

                                          






                                          
                             



                               
                         
                                                                            


                                                          

      
             
                               
                            
                                                                                

                                   
 
                                                                     
           
                           
                                                                            
                                                                            

                                                                            
                                    






                                                                        
 
                                                                 

            


                                                                          
                                                                          
                                                                         
                                                                       

             
                         





                                                   









                                                                    
                 
                             

                                
                                                                    


       
                 



                                                   
                      
# Created by: Matthew Seaman
# $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.9
CATEGORIES=	textproc databases
MASTER_SITES=	http://sphinxsearch.com/files/
DISTNAME=	sphinx-${PORTVERSION}-release
DISTFILES=	${DISTNAME}${EXTRACT_SUFX}

MAINTAINER=	matthew@FreeBSD.org
COMMENT=	Sphinx Full-Text Search Engine

LICENSE=	GPLv2

# 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:${PORTSDIR}/textproc/expat2

OPTIONS_DEFINE=	ICONV ID64 LIBSTEMMER MYSQL OPTIMIZED_CFLAGS PGSQL \
		SYSLOG UNIXODBC

#ICONV_DESC=		Iconv support
ID64_DESC=		use 64-bit document and word IDs
LIBSTEMMER_DESC=	compile with libstemmer support
#MYSQL_DESC=		MySQL support
#OPTIMIZED_CFLAGS_DESC=	Use compiler optimization (-O3)
#PGSQL_DESC=		PostgreSQL support
SYSLOG_DESC=		enable logging via syslog
UNIXODBC_DESC=		unixODBC support

OPTIONS_DEFAULT=	ICONV MYSQL SYSLOG

CONFLICTS=	sphinxsearch-devel-[0-9]* dpsearch-[0-9]* rdb-[0-9]* \
		swish++-[0-9]* xaira-[0-9]*

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 \
			--with-mysql-includes=${LOCALBASE}/include/mysql \
			--with-mysql-libs=${LOCALBASE}/lib/mysql
USE_MYSQL=		yes
.else
CONFIGURE_ARGS+=	--without-mysql
.endif

.if ${PORT_OPTIONS:MPGSQL}
CONFIGURE_ARGS+=	--with-pgsql \
			--with-pgsql-includes=${LOCALBASE}/include \
			--with-pgsql-libs=${LOCALBASE}/lib
USE_PGSQL=		yes
.else
CONFIGURE_ARGS+=	--without-pgsql
.endif

.if ${PORT_OPTIONS:MICONV}
CONFIGURE_ARGS+=	--with-iconv
USES+=			iconv
LDFLAGS+=		${ICONV_LIB}
.else
CONFIGURE_ARGS+=	--without-iconv
.endif

.if ${PORT_OPTIONS:MOPTIMIZED_CFLAGS}
CXXFLAGS+=		-O3 -fomit-frame-pointer
.endif

# 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
.endif

.if ${PORT_OPTIONS:MUNIXODBC}
CONFIGURE_ARGS+=	--with-unixodbc
LIB_DEPENDS+=		odbc:${PORTSDIR}/databases/unixODBC
.else
CONFIGURE_ARGS+=	--without-unixodbc
.endif

.if ${PORT_OPTIONS:MSYSLOG}
CONFIGURE_ARGS+=	--with-syslog
.else
CONFIGURE_ARGS+=	--without-syslog
.endif

# 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.

.if ${PORT_OPTIONS:MLIBSTEMMER} || make(makesum) || defined(FETCH_ALL)
MASTER_SITES+=	http://snowball.tartarus.org/dist/:libstemmer
LIBSTEMMER_TGZ=	libstemmer_c.tgz
DISTFILES+=	${LIBSTEMMER_TGZ}:libstemmer
EXTRACT_ONLY=	${DISTNAME}${EXTRACT_SUFX}
.endif

.if ${PORT_OPTIONS:MLIBSTEMMER}
CONFIGURE_ARGS+=	--with-libstemmer
.else
CONFIGURE_ARGS+=	--without-libstemmer
.endif

USERS?=		_sphinx
GROUPS?=	_sphinx

SPHINX_DIR?=	/var/db/${PORTNAME}
SPHINX_RUN?=	/var/run/${PORTNAME}
SPHINX_LOG?=	/var/log/${PORTNAME}

# Yes, the conflation of CPPFLAGS and CXXFLAGS is deliberate.  No,
# don't ask.

GNU_CONFIGURE=	yes
CPPFLAGS+=	${CXXFLAGS}
CFGFILE=	${PREFIX}/etc/sphinx.conf
USE_RC_SUBR=	sphinxsearch
SUB_LIST+=	PORTNAME=${PORTNAME}	 \
		CFGFILE=${CFGFILE}	 \
		SPHINX_USR=${USERS}	 \
		SPHINX_GRP=${GROUPS}	 \
		SPHINX_DIR=${SPHINX_DIR} \
		SPHINX_RUN=${SPHINX_RUN} \
		SPHINX_LOG=${SPHINX_LOG}
SUB_FILES+=	pkg-deinstall

.if ${PORT_OPTIONS:MEXAMPLES}
EXAMPLES=	example.sql api
PORTEXAMPLES=	*
.endif

.if ${PORT_OPTIONS:MDOCS}
DOCS=		doc/sphinx.css doc/sphinx.html doc/sphinx.txt doc/sphinx.xml
MAN1=		indexer.1 indextool.1 search.1 spelldump.1
MAN8=		searchd.8
DOCSRC=		${WRKSRC}/doc
.endif

post-extract:
.if ${PORT_OPTIONS:MLIBSTEMMER}
	@( cd ${WRKSRC} && \
	    ${EXTRACT_CMD} ${EXTRACT_BEFORE_ARGS} ${DISTDIR}/${LIBSTEMMER_TGZ} \
	    ${EXTRACT_AFTER_ARGS} )
.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!"	   \
	    -e "s!@CONFDIR@/log/query.log!${SPHINX_LOG}/sphinx-query.log!" \
	    -e "s!@CONFDIR@/log/searchd.log!${SPHINX_LOG}/searchd.log!"	   \
	    -e "s!@CONFDIR@!${SPHINX_DIR}!"				   \
	    ${WRKSRC}/sphinx.conf.in
.if ${PORT_OPTIONS:MDOCS}
	${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   ${PREFIX}/bin/indexer
	${INSTALL_PROGRAM} ${WRKSRC}/src/indextool ${PREFIX}/bin/indextool
	${INSTALL_PROGRAM} ${WRKSRC}/src/search	   ${PREFIX}/bin/search
	${INSTALL_PROGRAM} ${WRKSRC}/src/spelldump ${PREFIX}/bin/spelldump
	${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}
.endfor
.endif

install-man:
.if ${PORT_OPTIONS:MDOCS}
.for man in ${MAN1}
	${INSTALL_MAN} ${DOCSRC}/${man} ${MANPREFIX}/man/man1/${man}
.endfor
.for man in ${MAN8}
	${INSTALL_MAN} ${DOCSRC}/${man} ${MANPREFIX}/man/man8/${man}
.endfor
.endif

install-examples:
.if ${PORT_OPTIONS:MEXAMPLES}
	@${MKDIR} ${EXAMPLESDIR}
.for example in ${EXAMPLES}
	@cd ${WRKSRC} && ${COPYTREE_SHARE} ${example} ${EXAMPLESDIR}
.endfor
.endif

post-install-cfg:
	@if [ ! -f ${CFGFILE} ]; then \
	  ${CP} -p ${CFGFILE}.sample ${CFGFILE} ; \
	fi

.include <bsd.port.mk>