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