summaryrefslogtreecommitdiff
path: root/www/rt40/Makefile
blob: ed6cab4f65ab874b6c72b2d9ece6195ea22cfa5d (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
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
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
# $FreeBSD$

PORTNAME=	rt
PORTVERSION=	4.0.16
CATEGORIES=	www
MASTER_SITES=	http://download.bestpractical.com/pub/rt/release/ \
		SF/requesttracker/

MAINTAINER=	matthew@FreeBSD.org
COMMENT=	RT is an industrial-grade ticketing system written in Perl

CONFLICTS=	rt-3.8* brlcad-[0-9]*
LATEST_LINK=	rt40

# See doc/web_deployment.pod for info on the choices of webserver /
# webapp combinations.  Note: if using apache, apache-2.2+ is
# recommended.  For deployment with nginx, use the SPAWN_FCGI method
# or the builtin webserver with a FCGI handler.
#
# The builtin standalone PSGI based webserver is always available, no
# mater what choice of web deployment platform, or none, that you
# make.  Best Practical state that this is really only suitable for
# development usage, although I have heard reports of people using it
# successfully for medium sized deployments.  If you only want the
# builtin webserver, simply deselect all of the web options.
#
# See doc/full_text_indexing.pod if you need to set up full text
# indexes on your ticket database.  PostgreSQL or Oracle are
# recommended in this case: the MYSQL / SphinxSearch combination
# mentioned in the docs is currently unsupported in the ports, but see
# http://www.infracaninophile.co.uk/articles/sphinxse.html

OPTIONS_DEFINE=	DEV GD GPG GRAPHVIZ SSL_MAILGATE
OPTIONS_SINGLE=		DB
OPTIONS_SINGLE_DB=	MYSQL ORACLE PGSQL SQLITE
OPTIONS_RADIO=		WEB
OPTIONS_RADIO_WEB=	AP_MODFASTCGI AP_MODPERL LIGHTTPD SPAWN_FCGI

OPTIONS_DEFAULT=	AP_MODPERL GD GPG MYSQL

AP_MODFASTCGI_DESC=	Deploy with apache and mod_fastcgi
AP_MODPERL_DESC=	Deploy with apache and mod_perl
DEV_DESC=		Configure for Developers
GD_DESC=		Enable GD Graphs and Charts
GPG_DESC=		Enable GnuPG support
LIGHTTPD_DESC=		Deploy with lighttpd and mod_fastcgi
SPAWN_FCGI_DESC=	Deploy with spawn_fcgi
SSL_MAILGATE_DESC=	Enable HTTPS support for rt-mailgate

GROUPS?=	rt

BUILD_DEPENDS+=	${LOCALBASE}/bin/jsmin:${PORTSDIR}/devel/jsmin

.include "${.CURDIR}/Makefile.cpan"

BUILD_DEPENDS+=	${CORE_DEPS}       \
		${MASON_DEPS}      \
		${PSGI_DEPS}       \
		${MAILGATE_DEPS}   \
		${CLI_DEPS}        \
		${ICAL_DEPS}       \
		${SMTP_DEPS}       \
		${DASHBOARDS_DEPS} \
		${USERLOGO_DEPS}   \
		${HTML_DOC_DEPS}

RUN_DEPENDS:=	${BUILD_DEPENDS}

USES+=		perl5
USE_AUTOTOOLS=	autoconf

.include <bsd.port.options.mk>

.if !${PORT_OPTIONS:MDOCS}
EXTRA_PATCHES+=	${FILESDIR}/extra-patch-noportdocs-Makefile.in
.endif

.if ${PORT_OPTIONS:MAP_MODPERL}
BUILD_DEPENDS+=	${MODPERL2_DEPS}
RUN_DEPENDS+=	${MODPERL2_DEPS}
CONFIGURE_ARGS+=	--with-apachectl=${LOCALBASE}/sbin/apachectl
.endif

.if ${PORT_OPTIONS:MAP_MODFASTCGI}
USE_APACHE_RUN=	22+
BUILD_DEPENDS+=	${LOCALBASE}/${APACHEMODDIR}/mod_fastcgi.so:${PORTSDIR}/www/mod_fastcgi
RUN_DEPENDS+=	${LOCALBASE}/${APACHEMODDIR}/mod_fastcgi.so:${PORTSDIR}/www/mod_fastcgi \
		${FASTCGI_DEPS}
CONFIGURE_ARGS+=	--with-apachectl=${LOCALBASE}/sbin/apachectl
.endif

.if ${PORT_OPTIONS:MLIGHTTPD}
BUILD_DEPENDS+=	${LOCALBASE}/sbin/lighttpd:${PORTSDIR}/www/lighttpd
RUN_DEPENDS+=	${LOCALBASE}/sbin/lighttpd:${PORTSDIR}/www/lighttpd
.endif

.if ${PORT_OPTIONS:MSPAWN_FCGI}
BUILD_DEPENDS+=	${LOCALBASE}/bin/spawn-fcgi:${PORTSDIR}/www/spawn-fcgi
RUN_DEPENDS+=	${LOCALBASE}/bin/spawn-fcgi:${PORTSDIR}/www/spawn-fcgi
.endif

.if !${PORT_OPTIONS:MMYSQL} && !${PORT_OPTIONS:MPGSQL} && \
	! ${PORT_OPTIONS:MORACLE} && !${PORT_OPTIONS:MSQLITE}
IGNORE=	please select one of MYSQL, PGSQL, ORACLE or SQLITE
.endif

.if ${PORT_OPTIONS:MMYSQL}
DB_TYPE=	mysql
USE_MYSQL=	yes
BUILD_DEPENDS+=	${MYSQL_DEPS}
RUN_DEPENDS+=	${MYSQL_DEPS}
.endif

.if ${PORT_OPTIONS:MPGSQL}
DB_TYPE=	Pg
USE_PGSQL=	yes
BUILD_DEPENDS+=	${PGSQL_DEPS}
RUN_DEPENDS+=	${PGSQL_DEPS}
.endif

.if ${PORT_OPTIONS:MORACLE}
DB_TYPE=	Oracle
BUILD_DEPENDS+=	${ORACLE_DEPS}
RUN_DEPENDS+=	${ORACLE_DEPS}
.endif

.if ${PORT_OPTIONS:MSQLITE}
DB_TYPE=	SQLite
USE_SQLITE=	yes
BUILD_DEPENDS+=	${SQLITE_DEPS}
RUN_DEPENDS+=	${SQLITE_DEPS}
.endif

.if ${PORT_OPTIONS:MDEV}
BUILD_DEPENDS+=	${DEV_DEPS}
RUN_DEPENDS+=	${DEV_DEPS}
CONFIGURE_ARGS+=	--enable-developer-mode
.endif

.if ${PORT_OPTIONS:MSSL_MAILGATE}
BUILD_DEPENDS+=	${SSL_MAILGATE_DEPS}
RUN_DEPENDS+=	${SSL_MAILGATE_DEPS}
CONFIGURE_ARGS+=	--enable-ssl-mailgate
.endif

.if ${PORT_OPTIONS:MGRAPHVIZ}
BUILD_DEPENDS+=	${GRAPHVIZ_DEPS}
RUN_DEPENDS+=	${GRAPHVIZ_DEPS}
CONFIGURE_ARGS+=	--enable-graphviz
.endif

.if ${PORT_OPTIONS:MGPG}
BUILD_DEPENDS+=	${GPG_DEPS}
RUN_DEPENDS+=	${GPG_DEPS}
CONFIGURE_ARGS+=	--enable-gpg
.endif

.if ${PORT_OPTIONS:MGD}
BUILD_DEPENDS+=	${GD_DEPS}
RUN_DEPENDS+=	${GD_DEPS}
CONFIGURE_ARGS+=	--enable-gd
.endif

RT_ETC_PATH?=	${PREFIX}/etc/${PORTNAME}40
RT_LAYOUT=	FreeBSD
DOCSDIR=	${PREFIX}/share/doc/${PORTNAME}40

DB_DBA_USER?=	root
DB_DBA_PASSWORD?=
DB_USER?=	rt_user
DB_PASSWORD?=	rt_pass
DB_HOST?=	localhost
DB_DATABASE?=	rt4

WEB_USER?=	${WWWOWN}
WEB_GROUP?=	${WWWGRP}
LIBS_GROUP?=	wheel

HAS_CONFIGURE=	yes
NO_BUILD=	yes

CONFIGURE_ARGS+=	--enable-layout=${RT_LAYOUT} \
	--with-web-user=${WEB_USER} \
	--with-web-group=${WEB_GROUP} \
	--with-libs-group=${LIBS_GROUP} \
	--with-db-host=${DB_HOST} \
	--with-db-port=${DB_PORT} \
	--with-db-type=${DB_TYPE} \
	--with-db-rt-user=${DB_USER} \
	--with-db-rt-pass=${DB_PASSWORD} \
	--with-db-database=${DB_DATABASE} \
	--with-db-dba=${DB_DBA_USER}

CONFIGURE_ENV+=	PERL=${LOCALBASE}/bin/perl

PKGMESSAGE=	${WRKDIR}/pkg-message
SUB_FILES=	pkg-message
SUB_LIST=	RT_ETC_PATH=${RT_ETC_PATH}

run-autotools:	run-autotools-autoconf

pre-fetch:
	@${ECHO} ""
	@${ECHO} "      DB_TYPE=type                    mysql, Oracle, Pg or SQLite (mysql)"
	@${ECHO} "      DB_HOST=hostname                The database host (localhost)"
	@${ECHO} "      DB_PORT=port                    The database port"
	@${ECHO} "      DB_DATABASE=dbname              The database name (rt4)"
	@${ECHO} ""
	@${ECHO} "      DB_DBA_USER=username            Name of database administrator (root)"
	@${ECHO} "      DB_DBA_PASSWORD=password        Password of database administrator"
	@${ECHO} "      DB_USER=username                Name of database user for RT (rt_user)"
	@${ECHO} "      DB_PASSWORD=password            Name of database password for RT (rt_pass)"
.if ${PORT_OPTIONS:MSQLITE}
	@${ECHO} ""
	@${ECHO} "SQLITE is not recommended for production use"
.endif

post-patch:
	@${RM} -f ${WRKSRC}/lib/RT.pm.in.orig
	@${REINPLACE_CMD} -e 's!%%PREFIX%%!${PREFIX}!g' ${WRKSRC}/config.layout
	@${REINPLACE_CMD} -e 's!%%SITE_PERL%%!${SITE_PERL}!g' ${WRKSRC}/config.layout
	@${REINPLACE_CMD} -e 's!/path/to/your/etc!${RT_ETC_PATH}!g' ${WRKSRC}/etc/RT_SiteConfig.pm
	@${REINPLACE_CMD} -e 's!/bin:/usr/bin!/bin:/usr/bin:${LOCALBASE}/bin!' ${WRKSRC}/lib/RT/Interface/CLI.pm && \
	    ${RM} ${WRKSRC}/lib/RT/Interface/CLI.pm.bak

pre-install:
	@${RM} -f ${WRKSRC}/lib/RT.pm.in

post-install:
.if ${PORT_OPTIONS:MDOCS}
	${MKDIR} ${DOCSDIR}/upgrade
	(cd ${WRKSRC}/etc && \
	    ${COPYTREE_SHARE} upgrade ${DOCSDIR} "! -name *\.in")
.endif
	@[ -f ${RT_ETC_PATH}/RT_SiteConfig.pm ] || \
		${CP} -p ${RT_ETC_PATH}/RT_SiteConfig.pm-dist ${RT_ETC_PATH}/RT_SiteConfig.pm
	${CAT} ${PKGMESSAGE}

.include <bsd.port.mk>