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
|
PORTNAME= couchdb3
DISTVERSION= 3.4.3
PORTREVISION= 2
CATEGORIES= databases
MASTER_SITES= APACHE/couchdb/source/${DISTVERSION}
DISTNAME= apache-couchdb-${DISTVERSION}
MAINTAINER= dch@FreeBSD.org
COMMENT= JSON document database with HTTP API and scalable cluster mesh sync
WWW= https://couchdb.apache.org/
LICENSE= APACHE20 BSD3CLAUSE ISCL OFL11 WTFPL
LICENSE_COMB= multi
BUILD_DEPENDS= erlang-runtime${_ERLVER}>=${_ERLVER}.0:lang/erlang-runtime${_ERLVER} \
rebar:devel/rebar
LIB_DEPENDS= libicudata.so:devel/icu \
libmozjs-91.so:lang/spidermonkey91
USES= compiler:c++17-lang cpe gmake libtool ncurses
CPE_VENDOR= apache
CPE_PRODUCT= couchdb
USE_RC_SUBR= ${PORTNAME}
HAS_CONFIGURE= yes
CONFIGURE_ARGS= --skip-deps \
--user ${USERS} \
--rebar ${LOCALBASE}/bin/rebar \
--spidermonkey-version 91
MAKE_ENV= PATH=${LOCALBASE}/lib/erlang${_ERLVER}/bin:${PATH}
ALL_TARGET= release
CONFLICTS= couchdb[24]*
SUB_FILES= pkg-message
SUB_LIST= APPDIR=${_APPDIR} \
ERL_PATH=${LOCALBASE}/lib/erlang${_ERLVER}/bin/erl \
PORTNAME=${PORTNAME} \
RELDIR=${_RELDIR} \
WWWDIR=${WWWDIR}
USERS= couchdb
GROUPS= couchdb
PLIST_SUB= VERSION=${DISTVERSION}
OPTIONS_DEFINE= DOCS
OPTIONS_SUB= yes
_APPDIR= ${LOCALBASE}/libexec/${PORTNAME}
_DBDIR?= /var/db/${PORTNAME}
_ERLVER?= 26
_LOGDIR?= /var/log/${PORTNAME}
_LOGFILE?= ${_LOGDIR}/couch.log
_RELDIR= ${_APPDIR}/releases/${DISTVERSION}
_RUNDIR= /var/run/${PORTNAME}
.include <bsd.port.options.mk>
.if ${OPSYS} == FreeBSD && ${ARCH} == i386
EXTRA_PATCHES= ${PATCHDIR}/extra-patch-src_jiffy_c__src_double-conversion_strtod.cc
.endif
post-patch:
@${REINPLACE_CMD} \
-e 's,%%APPDIR%%,${_APPDIR},g' \
-e 's,%%COUCHDB_USER%%,${USERS},g' \
-e 's,%%DATADIR%%,${_DATADIR},g' \
-e 's,%%DBDIR%%,${_DBDIR},g' \
-e 's,%%ERLVER%%,${_ERLVER},g' \
-e 's,%%LOCALBASE%%,${LOCALBASE},g' \
-e 's,%%LOG_FILE%%,${_LOGFILE},g' \
-e 's,%%PORTNAME%%,${PORTNAME},g' \
-e 's,%%WWWDIR%%,${WWWDIR},g' \
${WRKSRC}/configure
# https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=238514
.if ${OPSYS} == FreeBSD && ${ARCH} == i386
@${REINPLACE_CMD} -e 's,$$FLTO_FLAG ,,g' \
${WRKSRC}/src/jiffy/rebar.config
.endif
pre-install:
# prune build artefacts and surplus headers
${FIND} -E ${WRKSRC} -type f -regex '.*\.(a|buildinfo|c|cc|cmd|d|o|orig|h|cpp)' \
-print -delete
do-install:
# relocate user-modifiable runtime configs to match hier(7)
${MKDIR} ${STAGEDIR}${ETCDIR} \
${STAGEDIR}${PREFIX}/libexec/${PORTNAME}
${INSTALL_DATA} ${WRKSRC}/rel/couchdb/etc/local.ini \
${STAGEDIR}${ETCDIR}/local.ini.sample
${INSTALL_DATA} ${WRKSRC}/rel/couchdb/etc/vm.args \
${STAGEDIR}${ETCDIR}/vm.args.sample
${INSTALL_MAN} ${WRKSRC}/share/docs/man/apachecouchdb.1 \
${STAGEDIR}${PREFIX}/share/man/man1
${CP} ${WRKSRC}/src/docs/images/favicon.ico ${WRKSRC}/share/www/
# remove runtime dirs and files that were moved to match hier(7)
${RM} -r \
${WRKSRC}/rel/couchdb/erts-*/include \
${WRKSRC}/rel/couchdb/erts-*/src \
${WRKSRC}/rel/couchdb/etc/*.d \
${WRKSRC}/rel/couchdb/etc/local.ini \
${WRKSRC}/rel/couchdb/etc/vm.args \
${WRKSRC}/rel/couchdb/lib/couch-*/priv/couch_js/1.8.5 \
${WRKSRC}/rel/couchdb/lib/couch-*/priv/couch_js/60 \
${WRKSRC}/rel/couchdb/lib/couch-*/priv/couch_js/68 \
${WRKSRC}/rel/couchdb/lib/couch-*/priv/couch_js/86 \
${WRKSRC}/rel/couchdb/lib/couch-*/priv/priv/couchjs \
${WRKSRC}/rel/couchdb/releases/*/vm.args \
${WRKSRC}/rel/couchdb/share/docs \
${WRKSRC}/rel/couchdb/share/www \
${WRKSRC}/rel/couchdb/var
(cd ${WRKSRC}/rel/couchdb && \
${COPYTREE_SHARE} . ${STAGEDIR}${_APPDIR})
# strip binaries, and mark as executable, along with scripts
# -- this was not as straightforward as it could have been
${FIND} ${STAGEDIR}${_APPDIR} -type f -name 'couchjs*' -exec ${STRIP_CMD} \
{} +
${FIND} ${STAGEDIR}${_APPDIR} -type f -name '*.so' -exec ${STRIP_CMD} \
{} +
${FIND} ${STAGEDIR}${_APPDIR}/erts-*/bin -type f -not -name start \
-exec ${STRIP_CMD} {} +
${STRIP_CMD} ${STAGEDIR}${_APPDIR}/lib/os_mon-*/priv/bin/*sup
${CHMOD} -R ${BINMODE} ${STAGEDIR}${_APPDIR}/bin
${CHMOD} -R ${BINMODE} ${STAGEDIR}${_APPDIR}/lib/couch_quickjs-*/priv/couchjs_*
${CHMOD} -R ${BINMODE} ${STAGEDIR}${_APPDIR}/lib/os_mon-*/priv/bin
${CHMOD} -R ${BINMODE} ${STAGEDIR}${_APPDIR}/erts-*/bin
# fauxton UI is a required component
(cd ${WRKSRC}/share/www && \
${COPYTREE_SHARE} . ${STAGEDIR}${WWWDIR})
post-install:
${MKDIR} ${STAGEDIR}${_DBDIR} \
${STAGEDIR}${_LOGDIR} \
${STAGEDIR}${_RUNDIR}
post-install-DOCS-on:
(cd ${WRKSRC}/share/docs/html && \
${COPYTREE_SHARE} . ${STAGEDIR}${WWWDIR}/docs)
.include <bsd.port.mk>
|