aboutsummaryrefslogtreecommitdiffstats
path: root/textproc/sphinxsearch/Makefile
blob: ab04b67944668abc5533a08294acfb344feac07c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# New ports collection makefile for:  Sphinx full-text search engine
# Date created:         12 November 2006
# Whom:                 Matthew Seaman <m.seaman@infracaninophile.co.uk>
#
# $FreeBSD$
#
# Note: the Sphinx Storage Engine MySQL plugin is not supported by
# this port.  You need a patched version of mysql server for that.

PORTNAME=   sphinxsearch
PORTVERSION=    0.9.7.r2
PORTREVISION=   1
CATEGORIES= textproc databases
MASTER_SITES=   http://www.sphinxsearch.com/downloads/
DISTNAME=   sphinx-${PORTVERSION:C@\.r([0-9]+)$@-rc\1@}

MAINTAINER= m.seaman@infracaninophile.co.uk
COMMENT=    Sphinx Full-Text Search Engine

OPTIONS=    MYSQL            "MySQL support"                   on  \
        PGSQL            "PostgreSQL support"              off \
        OPTIMIZED_CFLAGS "Use compiler optimization (-O3)" off

SPHINX_USR?=    _sphinx
SPHINX_UID?=    312
SPHINX_GRP?=    _sphinx
SPHINX_GID?=    312
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
CONFIGURE_TARGET=   --build=${MACHINE_ARCH}-portbld-freebsd${OSREL}
CONFIGURE_ENV+=     CC=${CC} CPPFLAGS="${CXXFLAGS}"
CFGFILE=    ${PREFIX}/etc/sphinx.conf
USE_RC_SUBR=    sphinxsearch.sh
SUB_LIST+=  PORTNAME=${PORTNAME}     \
        CFGFILE=${CFGFILE}       \
        SPHINX_USR=${SPHINX_USR} \
        SPHINX_UID=${SPHINX_UID} \
        SPHINX_GRP=${SPHINX_GRP} \
        SPHINX_GID=${SPHINX_GID} \
        SPHINX_DIR=${SPHINX_DIR} \
        SPHINX_RUN=${SPHINX_RUN} \
        SPHINX_LOG=${SPHINX_LOG}
SUB_FILES+= pkg-install pkg-deinstall

.if !defined(NOPORTDOCS)
EXAMPLES=   example.sql api/sphinxapi.php api/test.php api/test2.php
DOCS=       doc/sphinx.css doc/sphinx.html doc/sphinx.txt doc/sphinx.xml
.endif

.include <bsd.port.pre.mk>

# The port will successfully compile with both PGSQL and MYSQL support
# simultaneously.  Not sure how useful that is in practice though.

.if defined(WITH_MYSQL) && !defined(WITHOUT_MYSQL)
CONFIGURE_ARGS+=    --with-mysql
USE_MYSQL=      yes
.else
CONFIGURE_ARGS+=    --without-mysql
.endif

.if defined(WITH_PGSQL) && !defined(WITHOUT_PGSQL)
CONFIGURE_ARGS+=    --with-pgsql
USE_PGSQL=      yes
.else
CONFIGURE_ARGS+=    --without-pgsql
.endif

.if defined(WITH_OPTIMIZED_CFLAGS)
CXXFLAGS+=      -O3 -fomit-frame-pointer
.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

pre-install:
    @${SETENV} ${SCRIPTS_ENV} ${SH} ${PKGINSTALL} ${PKGNAME} PRE-INSTALL

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 !defined(NOPORTDOCS)
    @${MKDIR} ${DOCSDIR}
.for doc in ${DOCS}
    ${INSTALL_DATA} ${WRKSRC}/${doc} ${DOCSDIR}
.endfor
.endif

install-examples:
.if !defined(NOPORTDOCS)
    @${MKDIR} ${EXAMPLESDIR}
.for example in ${EXAMPLES}
    ${INSTALL_DATA} ${WRKSRC}/${example} ${EXAMPLESDIR}
.endfor
.endif

post-install: post-install-cfg
    @${SETENV} ${SCRIPTS_ENV} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL

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

.include <bsd.port.post.mk>