1PORTNAME=	redis
2DISTVERSION=	8.0.1
3CATEGORIES=	databases
4MASTER_SITES=	https://download.redis.io/releases/
5
6MAINTAINER=	ports@MidnightBSD.org
7COMMENT=	Persistent key-value database with built-in net interface
8WWW=		https://redis.io/
9
10LICENSE=        RSALv2 SSPLv1
11LICENSE_COMB=   dual
12LICENSE_NAME_RSALv2=    Redis Source Available License v2
13LICENSE_NAME_SSPLv1=    Server Side Public License v1
14LICENSE_FILE=   ${WRKSRC}/LICENSE.txt
15LICENSE_PERMS_RSALv2=   dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
16LICENSE_PERMS_SSPLv1=   dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
17
18USES+=		compiler:c11 cpe gmake
19CPE_VENDOR=	redislabs
20USE_RC_SUBR=	redis sentinel
21
22CONFLICTS_INSTALL=    redis-devel redis6 redis72 redis74 # etc/rc.d/redis
23
24OPTIONS_DEFINE=	JEMALLOC TESTS TLS
25OPTIONS_SUB=	yes
26JEMALLOC_DESC=	Use jemalloc
27TLS_DESC=	Use TLS (openssl req.)
28TESTS_DESC=	Install lang/tcl for redis unit tests
29
30MAKE_ENV=	V=yo OPTIMIZATION=
31
32JEMALLOC_MAKE_ENV=	USE_JEMALLOC=yes
33
34TESTS_USES=	tcl:build
35
36TLS_USES=	ssl
37TLS_MAKE_ENV=	BUILD_TLS=yes
38
39.include <bsd.port.pre.mk>
40
41.if ${ARCH} == i386 && ! ${CFLAGS:M-march=*}
42# Needed for __atomic_fetch_add_8
43USE_GCC=	yes
44CFLAGS+=	-march=i586
45.endif
46
47.if defined(_addflags)
48CFLAGS=		-fPIC
49LDFLAGS=	-Wl,-E
50.endif
51
52.if defined(MAGUS)
53NO_TEST=	yes
54.endif
55
56LDFLAGS+=	-lpthread -lm -lexecinfo
57
58CONFLICTS_INSTALL=	redis-devel redis6 redis62 redis70 # etc/rc.d/redis
59
60USE_RC_SUBR=	redis sentinel
61BIN_FILES=	redis-benchmark redis-check-aof redis-check-rdb \
62		redis-cli redis-sentinel redis-server
63
64USERS=	redis
65GROUPS=	redis
66
67REDIS_DBDIR?=	/var/db/redis
68REDIS_RUNDIR?=	/var/run/redis
69REDIS_LOGDIR?=	/var/log/redis
70
71SUB_FILES=	pkg-message
72SUB_LIST+=	PORTNAME=${PORTNAME} \
73	REDIS_USER=${USERS} \
74	REDIS_DBDIR=${REDIS_DBDIR} \
75	REDIS_LOGDIR=${REDIS_LOGDIR} \
76	REDIS_RUNDIR=${REDIS_RUNDIR}
77
78PLIST_SUB+=	REDIS_USER=${USERS} \
79	REDIS_GROUP=${GROUPS} \
80	REDIS_LOGDIR=${REDIS_LOGDIR} \
81	REDIS_DBDIR=${REDIS_DBDIR} \
82	REDIS_RUNDIR=${REDIS_RUNDIR}
83
84post-patch-JEMALLOC-on:
85	@${REINPLACE_CMD} '35s!Linux!MidnightBSD!g' ${WRKSRC}/src/Makefile
86
87post-build:
88	${SED} ${SUB_LIST:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} \
89		${WRKSRC}/redis.conf > ${WRKDIR}/redis.conf
90
91do-install:
92	${INSTALL_PROGRAM} ${BIN_FILES:C!^!${WRKSRC}/src/!} ${PREFIX}/bin/
93	${INSTALL_DATA} ${WRKDIR}/redis.conf ${PREFIX}/etc/redis.conf.sample
94	${INSTALL_DATA} ${WRKSRC}/sentinel.conf ${PREFIX}/etc/sentinel.conf.sample
95	${MKDIR} ${REDIS_LOGDIR} \
96		${REDIS_DBDIR} \
97		${REDIS_RUNDIR}
98
99do-test:
100	@cd ${WRKSRC} && ${TCLSH} tests/test_helper.tcl
101
102.include <bsd.port.post.mk>
103