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