aboutsummaryrefslogtreecommitdiff
path: root/databases/redis-devel/Makefile
blob: 83e240742b9117fb60a4c3923438d249524260ba (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
133
PORTNAME=	redis
DISTVERSION=	7.0.9.20230228
CATEGORIES=	databases
PKGNAMESUFFIX=	-devel

MAINTAINER=	yasu@FreeBSD.org
COMMENT=	Persistent key-value database with built-in net interface
WWW=		https://redis.io/

LICENSE=	BSD3CLAUSE
LICENSE_FILE=	${WRKSRC}/COPYING

USES+=		compiler:c11 cpe gmake
CPE_VENDOR=	redislabs
USE_GITHUB=	yes
GH_TAGNAME=	9d336ac39

MAKE_ENV=	OPTIMIZATION= \
		V=yo

CONFLICTS_INSTALL=	redis redis6 redis62 # etc/rc.d/redis

PORTSCOUT=	ignore:1

OPTIONS_DEFINE=		JEMALLOC TESTS TLS TRIB
OPTIONS_DEFAULT=	TLS
OPTIONS_RADIO=		EXTLUA
OPTIONS_RADIO_EXTLUA=	LUA LUAJIT
OPTIONS_SUB=		yes

JEMALLOC_DESC=	Use jemalloc
LUAJIT_DESC=	Use luajit instead of builtin lua
LUA_DESC=	Use lang/lua instead of builtin lua
TESTS_DESC=	Install lang/tcl for redis unit tests
TLS_DESC=	Use TLS (openssl req.)
TRIB_DESC=	Install redis-trib.rb (lang/ruby req.)

JEMALLOC_MAKE_ENV=	USE_JEMALLOC=yes
LUAJIT_BROKEN=		Fails to link
LUAJIT_USES=		luajit
LUAJIT_VARS=		_ADDFLAGS=true
LUA_BROKEN=		Fails to link
LUA_USES=		lua:51
LUA_EXTRA_PATCHES=	${PATCHDIR}/extra-patch-src-Makefile.lua
LUA_VARS=		_ADDFLAGS=true
TESTS_USES=		tcl:build
TLS_USES=		ssl
TLS_MAKE_ENV=		BUILD_TLS=yes
TRIB_CATEGORIES=	ruby
TRIB_RUN_DEPENDS=	rubygem-redis>=2.2:databases/rubygem-redis
TRIB_USES=		ruby

.include <bsd.port.pre.mk>

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

.if defined(_ADDFLAGS)
CFLAGS+=	-fPIC
LDFLAGS+=	-Wl,-E
.endif

.if ${PORT_OPTIONS:MLUAJIT}
.  if ${LUAJIT_VER} == luajit
EXTRA_PATCHES=	${PATCHDIR}/extra-patch-src-Makefile.luajit
.  else
EXTRA_PATCHES=	${PATCHDIR}/extra-patch-src-Makefile.luajit-or \
		${PATCHDIR}/extra-patch-src-function_lua.c \
		${PATCHDIR}/extra-patch-deps_lua_src_lua__cjson.c
.  endif
.endif

LDFLAGS+=	-lpthread -lm -lexecinfo

CONFLICTS?=	redis-[1-9].* redis6-* redis62-*

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_DBDIR=${REDIS_DBDIR} \
		REDIS_LOGDIR=${REDIS_LOGDIR} \
		REDIS_RUNDIR=${REDIS_RUNDIR} \
		REDIS_USER=${USERS}

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

post-patch:
	${REINPLACE_CMD} '77s!malloc.h!stdlib.h!' ${WRKSRC}/src/zmalloc.h

post-patch-JEMALLOC-on:
	@${REINPLACE_CMD} '35s!Linux!FreeBSD!g' ${WRKSRC}/src/Makefile

post-patch-LUA-on:
	@cd ${WRKSRC}/deps/lua/src && ${CP} fpconv.* lua_* strbuf.* ${WRKSRC}/src/
post-patch-LUAJIT-on: post-patch-LUA-on
post-patch-LUAJITOR-on: post-patch-LUA-on

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/
	${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-install-TRIB-on:
	${INSTALL_SCRIPT} ${WRKSRC}/src/redis-trib.rb ${STAGEDIR}${PREFIX}/bin/

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

.include <bsd.port.post.mk>