summaryrefslogtreecommitdiff
blob: ab730f5970080f8ebf4bbca2e307c44d503ca99b (plain)
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

inherit webapp eutils autotools confutils

DESCRIPTION="Web search engine software for intranet and internet servers."
HOMEPAGE="http://www.mnogosearch.org/"
SRC_URI="http://www.mnogosearch.org/Download/${P}.tar.gz"

LICENSE="GPL-2"
KEYWORDS="~amd64 ~x86"
WEBAPP_MANUAL_SLOT="yes"
SLOT="0"

CONFUTILS_MISSING_DEPS="db2 interbase oci8 sapdb solid sybase"

DBFLAGS="db2 firebird freetds interbase iodbc mysql oci8 odbc postgres sapdb solid sqlite sqlite3 sybase"
EXPERIMENTAL_FLAGS="mysqlfulltext"
IUSE="${DBFLAGS} chasen cjk doc indexer mecab msoffice pdf readline ssl unicode zlib"

COMMON_DEPEND="chasen? ( app-text/chasen )
	firebird? ( dev-db/firebird )
	freetds? ( dev-db/freetds )
	iodbc? ( dev-db/libiodbc dev-db/unixODBC )
	mecab?  ( app-text/mecab )
	mysql? ( virtual/mysql )
	odbc? ( dev-db/unixODBC )
	postgres? ( dev-db/libpq )
	readline? ( sys-libs/readline )
	sqlite? ( =dev-db/sqlite-2* )
	sqlite3? ( =dev-db/sqlite-3* )
	ssl? ( dev-libs/openssl )
	zlib? ( sys-libs/zlib )"
	# mysqlfulltext ( >=virtual/mysql-5.1 )

DEPEND="${COMMON_DEPEND}
	doc? ( app-text/openjade app-text/docbook-sgml-utils )"

RDEPEND="${COMMON_DEPEND}
	msoffice? ( app-text/catdoc )
	pdf? ( virtual/ghostscript )
	virtual/httpd-cgi"

pkg_setup() {
	confutils_warn_about_missing_deps

	# only die on missing DB support if user actually requires indexing
	for i in ${DBFLAGS} ; do
		use ${i} && dbs_enabled="${dbs_enabled} ${i}"
	done

	if [[ -z ${dbs_enabled} ]] ; then
		if use indexer ; then
			confutils_require_any ${DBFLAGS}
		else
			ewarn
			ewarn "No database selected - indexing part will not be compiled!"
			ewarn "Add one or more of ${DBFLAGS} to your USE if you want this feature."
			ewarn
			ebeep
			epause 3
		fi
	fi

	webapp_pkg_setup
}

src_unpack() {
	unpack ${A}
	cd "${S}"
	epatch "${FILESDIR}"/${P}-indexer.conf.patch

	# fix the documentation install path
	sed -i -e "s@/doc/@/share/doc/${PF}/html/@" doc/Makefile.{am,in} \
			|| die "sed failed on Makefile.{am,in}"

	# modify search.cgi to support vhosts
	sed -i -e 's@UdmStrdup(UDM_CONF_DIR)@UdmStrdup("../mnogosearch/")@' src/search.c \
		|| die "sed failed on search.c"

	# modify conf.c to support vhosts
	sed -i -e 's@UDM_CONF_DIR@"../mnogosearch/"@' src/conf.c \
		|| die "sed failed on conf.c"

	# enable external parser for MS Office Word and Excel documents
	if use msoffice ; then
		sed -i -e "s@^#Mime application/msword@Mime application/msword@" \
			-e "s@^#Mime application/vnd.ms-excel@Mime application/vnd.ms-excel@" \
			etc/indexer.conf-dist || die "sed failed on indexer.conf-dist"
	fi

	if use unicode ; then
		# modify indexer.conf for proper utf-8 display and indexing support
		sed -i -e '/^#Mime text\/x-postscript/s@text/plain@"text/plain; charset=utf-8"@' \
			-e '/^#Mime application\/pdf/s@text/plain@"text/plain; charset=utf-8"@' \
			-e "s@^#LocalCharset UTF-8@LocalCharset UTF-8@" \
			etc/indexer.conf-dist || die "sed failed on indexer.conf-dist"

		# modify search.htm for proper utf-8 display
		sed -i -e "/^LocalCharset/s@iso-8859-1@UTF-8@" \
			-e "/^BrowserCharset/s@iso-8859-1@UTF-8@" \
			etc/search.htm-dist || die "sed failed on search.htm-dist"
	fi

	# enable external parser for pdf and ps documents
	if use pdf ; then
		sed -i -e "s@^#Mime text/x-postscript@Mime text/x-postscript@" \
			-e "s@^#Mime application/pdf@Mime application/pdf@" \
			etc/indexer.conf-dist || die "sed failed on indexer.conf-dist"
	fi

	# rename the config files to provide a working default installation
	find "${S}/etc" -name 'Makefile.??' -exec sed -i -e "s@-dist@@" {} \; || die "sed -dist failed"
	for i in etc/*-dist ; do
		mv ${i} ${i/-dist/} || die "moving ${i} failed"
	done

	# and finally reconfigure now
	AT_M4DIR="build/m4" eautoreconf
}

src_compile() {
	econf \
		$(use_with chasen chasen /usr) \
		$(use_with cjk extra-charsets all) \
		$(use_with db2) \
		$(use_with doc docs) \
		$(use_with firebird ibase /opt) \
		$(use_with freetds freetds /usr) \
		$(use_with interbase ibase /opt) \
		$(use_with iodbc iodbc /usr) \
		$(use_with mecab) \
		$(use_with mysql) \
		$(use_with oci8 oracle8 ${ORACLE_HOME}) \
		$(use_with odbc unixODBC /usr) \
		$(use_with postgres pgsql /usr) \
		$(use_with readline) \
		$(use_with sapdb) \
		$(use_with solid) \
		$(use_with sqlite) \
		$(use_with sqlite3) \
		$(use_with sybase ctlib /opt) \
		$(use_with ssl openssl) \
		$(use_with zlib) \
		--datadir=/usr/share/${PN} \
		--sysconfdir=${MY_HOSTROOTDIR}/${PN} \
		--libdir=/usr/$(get_libdir)/${PN} \
		--includedir=/usr/include/${PN}

		# $(use_with mysqlfulltext mysql-fulltext-plugin ) \

	emake || die "compilation failed"
}

src_install() {
	webapp_src_preinst

	emake DESTDIR="${D}" install
	mv "${D}"/usr/bin/search.cgi ${D}/${MY_CGIBINDIR}

	webapp_postinst_txt en "${FILESDIR}"/postinstall-en.txt

	for CFG in $(find "${D}"/${MY_HOSTROOTDIR}/mnogosearch/*) ; do
		local configfile=${CFG/${D}/}
		webapp_configfile ${configfile}
	done

	webapp_src_install
}