summaryrefslogtreecommitdiff
path: root/databases/redis5/Makefile
blob: 84831701cfaad660949d7a60697be8b2047d6366 (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
# Created by: Sergey Skvortsov <skv@protey.ru>

PORTNAME=	redis5
PORTVERSION=	5.0.14
PORTREVISION=	1
CATEGORIES=	databases
MASTER_SITES=	https://download.redis.io/releases/
DISTNAME=	redis-${PORTVERSION}

MAINTAINER=	yasu@FreeBSD.org
COMMENT=	Persistent key-value database with built-in net interface

LICENSE=	BSD3CLAUSE
LICENSE_FILE=	${WRKSRC}/COPYING

DEPRECATED=	EOLed upstream
EXPIRATION_DATE=2022-03-31

OPTIONS_DEFINE=	JEMALLOC TESTS TRIB
OPTIONS_RADIO=	EXTLUA
OPTIONS_RADIO_EXTLUA=	LUA LUAJIT LUAJITOR
OPTIONS_SUB=	yes
JEMALLOC_DESC=	Use jemalloc
LUA_DESC=	Use lang/lua instead of builtin lua
LUAJIT_DESC=	Use lang/luajit instead of builtin lua
LUAJITOR_DESC=	Use lang/luajit-openjit instead of builtin lua
TESTS_DESC=	Install lang/tcl for redis unit tests
TRIB_DESC=	Install redis-trib.rb (lang/ruby req.)

USES+=		compiler:c11 gmake
MAKE_ENV=	"V=yo"

.include <bsd.port.options.mk>

.if ${ARCH} == i386 && ! ${CFLAGS:M-march=*}
# Needed for __atomic_fetch_add_8
USE_GCC=	yes
CFLAGS+=	-march=i586
.endif

.if ${PORT_OPTIONS:MJEMALLOC}
MAKE_ENV+=	"USE_JEMALLOC=yes"
.endif

.if ${PORT_OPTIONS:MTRIB}
CATEGORIES+=	ruby
USE_RUBY=	yes
RUN_DEPENDS=	rubygem-redis>=2.2:databases/rubygem-redis
.endif

.if ${PORT_OPTIONS:MLUA}
USES+=		lua:51
EXTRA_PATCHES+=	${PATCHDIR}/extra-patch-src-Makefile.lua
.endif

.if ${PORT_OPTIONS:MLUAJIT}
LIB_DEPENDS+=	libluajit-5.1.so:lang/luajit
EXTRA_PATCHES+=	${PATCHDIR}/extra-patch-src-Makefile.luajit
.endif

.if ${PORT_OPTIONS:MLUAJITOR}
LIB_DEPENDS+=	libluajit-5.1.so:lang/luajit-openresty
EXTRA_PATCHES+=	${PATCHDIR}/extra-patch-src-Makefile.luajit-or \
		${PATCHDIR}/extra-patch-deps_lua_src_lua__cjson.c
.endif

.if ${PORT_OPTIONS:MLUA} || ${PORT_OPTIONS:MLUAJIT} || ${PORT_OPTIONS:MLUAJITOR}
CFLAGS+=	-fPIC
LDFLAGS+=	-Wl,-E
.endif

.if ${PORT_OPTIONS:MTESTS}
USES+=		tcl:build
.endif

LDFLAGS+=	-lpthread -lm -lexecinfo

CONFLICTS?=	redis-6.* redis-devel-6.* redis6-6.*

USE_RC_SUBR=	redis sentinel
BIN_FILES=	redis-benchmark redis-check-aof redis-check-rdb \
		redis-cli redis-sentinel redis-server

USERS=	redis
GROUPS=	redis

REDIS_DBDIR?=	/var/db/redis
REDIS_RUNDIR?=	/var/run/redis
REDIS_LOGDIR?=	/var/log/redis

SUB_FILES=	pkg-message
SUB_LIST+=	PORTNAME=${PORTNAME} \
	REDIS_USER=${USERS} \
	REDIS_DBDIR=${REDIS_DBDIR} \
	REDIS_LOGDIR=${REDIS_LOGDIR} \
	REDIS_RUNDIR=${REDIS_RUNDIR}

PLIST_SUB+=	REDIS_USER=${USERS} \
	REDIS_GROUP=${GROUPS} \
	REDIS_LOGDIR=${REDIS_LOGDIR} \
	REDIS_DBDIR=${REDIS_DBDIR} \
	REDIS_RUNDIR=${REDIS_RUNDIR}

.include <bsd.port.pre.mk>

post-patch:
.if ${PORT_OPTIONS:MJEMALLOC}
	@${REINPLACE_CMD} '35s!Linux!FreeBSD!g' ${WRKSRC}/src/Makefile
.endif
.if ${PORT_OPTIONS:MLUA} || ${PORT_OPTIONS:MLUAJIT} || ${PORT_OPTIONS:MLUAJITOR}
	@cd ${WRKSRC}/deps/lua/src && ${CP} fpconv.* lua_* strbuf.* ${WRKSRC}/src/
.endif

post-build:
	${SED} ${SUB_LIST:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} \
		${WRKSRC}/redis.conf > ${WRKDIR}/redis.conf

do-install:
	${INSTALL_PROGRAM} ${BIN_FILES:C!^!${WRKSRC}/src/!} ${STAGEDIR}${PREFIX}/bin/
.if ${PORT_OPTIONS:MTRIB}
	${INSTALL_SCRIPT} ${WRKSRC}/src/redis-trib.rb ${STAGEDIR}${PREFIX}/bin/
.endif
	${INSTALL_DATA} ${WRKDIR}/redis.conf ${STAGEDIR}${PREFIX}/etc/redis.conf.sample
	${INSTALL_DATA} ${WRKSRC}/sentinel.conf ${STAGEDIR}${PREFIX}/etc/sentinel.conf.sample
	${MKDIR} ${STAGEDIR}${REDIS_LOGDIR} \
		${STAGEDIR}${REDIS_DBDIR} \
		${STAGEDIR}${REDIS_RUNDIR}

do-test:
	@cd ${WRKSRC} && ${TCLSH} tests/test_helper.tcl

.include <bsd.port.post.mk>