Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 29 May 2026 14:03:58 +0000
From:      Muhammad Moinur Rahman <bofh@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: e0810fa7d29a - main - databases/redis86: New port
Message-ID:  <6a199cce.20e92.d0ccca6@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by bofh:

URL: https://cgit.FreeBSD.org/ports/commit/?id=e0810fa7d29a3b61645631e5ada82e2dee594ad9

commit e0810fa7d29a3b61645631e5ada82e2dee594ad9
Author:     Muhammad Moinur Rahman <bofh@FreeBSD.org>
AuthorDate: 2026-05-29 12:39:33 +0000
Commit:     Muhammad Moinur Rahman <bofh@FreeBSD.org>
CommitDate: 2026-05-29 14:03:18 +0000

    databases/redis86: New port
    
    Redis is an open source, advanced key-value store.  It is often referred
    to as a data structure server since keys can contain strings, hashes,
    lists, sets and sorted sets.
    
    You can run atomic operations on these types, like appending to a string;
    incrementing the value in a hash; pushing to a list; computing set
    intersection, union and difference; or getting the member with highest
    ranking in a sorted set.
    
    In order to achieve its outstanding performance, Redis works with an
    in-memory dataset.  Depending on your use case, you can persist it either
    by dumping the dataset to disk every once in a while, or by appending each
    command to a log.
    
    Redis also supports trivial-to-setup master-slave replication, with very
    fast non-blocking first synchronization, auto-reconnection on net split
    and so forth.
    
    This is the 8.6.X branch of redis.
    
    WWW: https://redis.io/
    
    This is the 8.6.X version of redis added as a new port in preparation
    for upgrading the main ports to 8.8.X
---
 databases/Makefile                                 |  1 +
 databases/redis86/Makefile                         | 88 ++++++++++++++++++++++
 databases/redis86/distinfo                         |  3 +
 databases/redis86/files/patch-deps_Makefile        | 21 ++++++
 .../redis86/files/patch-deps_hiredis_Makefile      | 41 ++++++++++
 databases/redis86/files/patch-deps_hiredis_net.c   | 39 ++++++++++
 .../redis86/files/patch-deps_linenoise_Makefile    | 15 ++++
 .../redis86/files/patch-deps_lua_src_lua__cjson.c  | 12 +++
 databases/redis86/files/patch-deps_xxhash_Makefile | 16 ++++
 databases/redis86/files/patch-redis.conf           | 38 ++++++++++
 databases/redis86/files/patch-src_Makefile         | 19 +++++
 databases/redis86/files/patch-src_mkreleasehdr.sh  | 11 +++
 .../redis86/files/patch-tests_modules_Makefile     | 14 ++++
 databases/redis86/files/pkg-message.in             | 11 +++
 databases/redis86/files/redis.in                   | 67 ++++++++++++++++
 databases/redis86/files/sentinel.in                | 39 ++++++++++
 databases/redis86/pkg-descr                        | 19 +++++
 databases/redis86/pkg-plist                        | 11 +++
 18 files changed, 465 insertions(+)

diff --git a/databases/Makefile b/databases/Makefile
index b19d508b6512..660169c56134 100644
--- a/databases/Makefile
+++ b/databases/Makefile
@@ -907,6 +907,7 @@
     SUBDIR += redis80
     SUBDIR += redis82
     SUBDIR += redis84
+    SUBDIR += redis86
     SUBDIR += redis_exporter
     SUBDIR += redisjson
     SUBDIR += redisjson86
diff --git a/databases/redis86/Makefile b/databases/redis86/Makefile
new file mode 100644
index 000000000000..e510156049f9
--- /dev/null
+++ b/databases/redis86/Makefile
@@ -0,0 +1,88 @@
+PORTNAME=	redis
+DISTVERSION=	8.6.3
+CATEGORIES=	databases
+MASTER_SITES=	https://download.redis.io/releases/
+PKGNAMESUFFIX=	86
+
+MAINTAINER=	bofh@freebsd.org
+COMMENT=	Persistent key-value database with built-in net interface(8.6.X)
+WWW=		https://redis.io/
+
+LICENSE=	AGPLv3 RSALv2 SSPLv1
+LICENSE_COMB=	dual
+LICENSE_NAME_RSALv2=	Redis Source Available License v2
+LICENSE_NAME_SSPLv1=	Server Side Public License v1
+LICENSE_FILE=	${WRKSRC}/LICENSE.txt
+LICENSE_PERMS_RSALv2=	dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
+LICENSE_PERMS_SSPLv1=	dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
+
+USES=		compiler:c11 cpe gmake localbase:ldflags pkgconfig tcl:test
+CPE_VENDOR=	redislabs
+USE_RC_SUBR=	redis sentinel
+
+MAKE_ENV=	OPTIMIZATION= \
+		V=yo
+
+CONFLICTS_INSTALL=	redis-devel redis[0-9]*
+
+BINARY_ALIAS=	gmd5sum=md5sum
+#PIE_UNSAFE=	ld: error: relocation R_X86_64_32 cannot be used against local \
+#		symbol; recompile with -fPIC
+PORTSCOUT=	limit:^8\.6\.
+SUB_FILES=	pkg-message
+SUB_LIST=	PORTNAME=${PORTNAME} \
+		REDIS_DBDIR=${REDIS_DBDIR} \
+		REDIS_LOGDIR=${REDIS_LOGDIR} \
+		REDIS_RUNDIR=${REDIS_RUNDIR} \
+		REDIS_USER=${USERS}
+
+USERS=		redis
+GROUPS=		redis
+
+PLIST_SUB=	REDIS_DBDIR=${REDIS_DBDIR} \
+		REDIS_GROUP=${GROUPS} \
+		REDIS_LOGDIR=${REDIS_LOGDIR} \
+		REDIS_RUNDIR=${REDIS_RUNDIR} \
+		REDIS_USER=${USERS}
+
+OPTIONS_DEFINE=		JEMALLOC TLS
+OPTIONS_DEFAULT=	TLS
+OPTIONS_GROUP=		MODULES
+OPTIONS_GROUP_MODULES=		REDISJSON
+OPTIONS_SUB=		yes
+
+JEMALLOC_DESC=	Use jemalloc
+REDISJSON_DESC=		RedisJSON module
+TLS_DESC=	Use TLS (openssl req.)
+
+JEMALLOC_MAKE_ENV=	USE_JEMALLOC=yes
+REDISJSON_LIB_DEPENDS=		librejson.so>=0:databases/redisjson${PKGNAMESUFFIX}
+TLS_USES=		ssl
+TLS_MAKE_ENV=		BUILD_TLS=yes
+
+BIN_FILES=	redis-benchmark redis-check-aof redis-check-rdb redis-cli \
+		redis-sentinel redis-server
+
+REDIS_DBDIR?=	/var/db/redis
+REDIS_RUNDIR?=	/var/run/redis
+REDIS_LOGDIR?=	/var/log/redis
+
+post-patch-JEMALLOC-on:
+	@${REINPLACE_CMD} '78s!Linux!FreeBSD!g' ${WRKSRC}/src/Makefile
+
+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-test:
+	@cd ${WRKSRC} && ${TCLSH} tests/test_helper.tcl
+
+.include <bsd.port.mk>
diff --git a/databases/redis86/distinfo b/databases/redis86/distinfo
new file mode 100644
index 000000000000..1862242ed973
--- /dev/null
+++ b/databases/redis86/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1778692324
+SHA256 (redis-8.6.3.tar.gz) = 9f54d4458c52be5472cdd1347d737f1d488b520fc3d0911cba47302de8d836e2
+SIZE (redis-8.6.3.tar.gz) = 4252312
diff --git a/databases/redis86/files/patch-deps_Makefile b/databases/redis86/files/patch-deps_Makefile
new file mode 100644
index 000000000000..ff2007910cb6
--- /dev/null
+++ b/databases/redis86/files/patch-deps_Makefile
@@ -0,0 +1,21 @@
+--- deps/Makefile.orig	2025-11-18 14:58:24 UTC
++++ deps/Makefile
+@@ -117,7 +117,7 @@ else
+ ifeq ($(LUA_DEBUG),yes)
+ 	LUA_CFLAGS+= -O0 -g -DLUA_USE_APICHECK
+ else
+-	LUA_CFLAGS+= -O2 
++	LUA_CFLAGS+=
+ endif
+ ifeq ($(LUA_COVERAGE),yes)
+ 	LUA_CFLAGS += -fprofile-arcs -ftest-coverage
+@@ -145,7 +145,7 @@ jemalloc: .make-prerequisites
+ 
+ jemalloc: .make-prerequisites
+ 	@printf '%b %b\n' $(MAKECOLOR)MAKE$(ENDCOLOR) $(BINCOLOR)$@$(ENDCOLOR)
+-	cd jemalloc && ./configure --disable-cxx --with-version=5.3.0-0-g0 --with-lg-quantum=3 --disable-cache-oblivious --with-jemalloc-prefix=je_ CFLAGS="$(JEMALLOC_CFLAGS)" LDFLAGS="$(JEMALLOC_LDFLAGS)" $(JEMALLOC_CONFIGURE_OPTS)
+-	cd jemalloc && $(MAKE) lib/libjemalloc.a
++	cd jemalloc && ./configure --disable-cxx --with-version=5.3.0-0-g0 --with-lg-quantum=3 --disable-cache-oblivious --with-jemalloc-prefix=je_ CFLAGS="$(JEMALLOC_CFLAGS)" CXXFLAGS="$(JEMALLOC_CFLAGS)" LDFLAGS="$(JEMALLOC_LDFLAGS)" $(JEMALLOC_CONFIGURE_OPTS)
++	cd jemalloc && $(MAKE) CFLAGS="$(JEMALLOC_CFLAGS)" CXXFLAGS="$(JEMALLOC_CFLAGS)" LDFLAGS="$(JEMALLOC_LDFLAGS)" lib/libjemalloc.a
+ 
+ .PHONY: jemalloc
diff --git a/databases/redis86/files/patch-deps_hiredis_Makefile b/databases/redis86/files/patch-deps_hiredis_Makefile
new file mode 100644
index 000000000000..6bb5418e44d6
--- /dev/null
+++ b/databases/redis86/files/patch-deps_hiredis_Makefile
@@ -0,0 +1,41 @@
+--- deps/hiredis/Makefile.orig	2025-08-04 11:05:03 UTC
++++ deps/hiredis/Makefile
+@@ -15,7 +15,7 @@ HIREDIS_SONAME=$(shell grep HIREDIS_SONAME hiredis.h |
+ HIREDIS_SONAME=$(shell grep HIREDIS_SONAME hiredis.h | awk '{print $$3}')
+ 
+ # Installation related variables and target
+-PREFIX?=/usr/local
++PREFIX?=${PREFIX}
+ INCLUDE_PATH?=include/hiredis
+ LIBRARY_PATH?=lib
+ PKGCONF_PATH?=pkgconfig
+@@ -43,10 +43,9 @@ CXX:=$(shell sh -c 'type $${CXX%% *} >/dev/null 2>/dev
+ # Fallback to gcc when $CC is not in $PATH.
+ CC:=$(shell sh -c 'type $${CC%% *} >/dev/null 2>/dev/null && echo $(CC) || echo gcc')
+ CXX:=$(shell sh -c 'type $${CXX%% *} >/dev/null 2>/dev/null && echo $(CXX) || echo g++')
+-OPTIMIZATION?=-O3
+ WARNINGS=-Wall -Wextra -Werror -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers
+ DEBUG_FLAGS?= -g -ggdb
+-REAL_CFLAGS=$(OPTIMIZATION) -fPIC $(CPPFLAGS) $(CFLAGS) $(WARNINGS) $(DEBUG_FLAGS) $(PLATFORM_FLAGS) $(HIREDIS_CFLAGS)
++REAL_CFLAGS=$(OPTIMIZATION) -fPIC $(CFLAGS) $(WARNINGS) $(DEBUG_FLAGS) $(PLATFORM_FLAGS) $(HIREDIS_CFLAGS)
+ REAL_LDFLAGS=$(LDFLAGS) $(HIREDIS_LDFLAGS)
+ 
+ DYLIBSUFFIX=so
+@@ -127,7 +126,16 @@ endif
+ else
+   REAL_CFLAGS+=-pedantic
+ endif
+-
++ifeq ($(uname_S),FreeBSD)
++  CFLAGS?=$(CFLAGS)
++  CCLINK?=pthread
++  LDFLAGS?=-L. -Wl,-rpath,.
++  DYLIBNAME?=libhiredis.so
++  DYLIB_MAKE_CMD?=$(CC) -o ${DYLIBNAME} ${OBJ}
++  STLIBNAME?=libhiredis.a
++  STLIB_MAKE_CMD?=ar rcs ${STLIBNAME} ${OBJ}
++  SSL_LDFLAGS+=${OPENSSL_LDFLAGS}
++endif
+ ifeq ($(uname_S),SunOS)
+   IS_SUN_CC=$(shell sh -c '$(CC) -V 2>&1 |egrep -i -c "sun|studio"')
+   ifeq ($(IS_SUN_CC),1)
diff --git a/databases/redis86/files/patch-deps_hiredis_net.c b/databases/redis86/files/patch-deps_hiredis_net.c
new file mode 100644
index 000000000000..84dbe39e16e6
--- /dev/null
+++ b/databases/redis86/files/patch-deps_hiredis_net.c
@@ -0,0 +1,39 @@
+--- deps/hiredis/net.c.orig	2025-08-04 11:05:03 UTC
++++ deps/hiredis/net.c
+@@ -185,14 +185,34 @@ int redisKeepAlive(redisContext *c, int interval) {
+         __redisSetError(c,REDIS_ERR_OTHER,strerror(errno));
+         return REDIS_ERR;
+     }
+-#else
+-#if defined(__GLIBC__) && !defined(__FreeBSD_kernel__)
++#elif defined(__GLIBC__)
+     if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPIDLE, &val, sizeof(val)) < 0) {
+         __redisSetError(c,REDIS_ERR_OTHER,strerror(errno));
+         return REDIS_ERR;
+     }
+ 
+     val = interval/3;
++    if (val == 0) val = 1;
++    if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPINTVL, &val, sizeof(val)) < 0) {
++        __redisSetError(c,REDIS_ERR_OTHER,strerror(errno));
++        return REDIS_ERR;
++    }
++
++    val = 3;
++    if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPCNT, &val, sizeof(val)) < 0) {
++        __redisSetError(c,REDIS_ERR_OTHER,strerror(errno));
++        return REDIS_ERR;
++    }
++#else
++#if !defined(__sun) && defined(TCP_KEEPIDLE) && defined(TCP_KEEPINTL) && \
++    defined(TCP_KEEPCNT)
++    val = interval;
++    if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPIDLE, &val, sizeof(val)) < 0) {
++        __redisSetError(c,REDIS_ERR_OTHER,strerror(errno));
++        return REDIS_ERR;
++    }
++
++    val = internal/3;
+     if (val == 0) val = 1;
+     if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPINTVL, &val, sizeof(val)) < 0) {
+         __redisSetError(c,REDIS_ERR_OTHER,strerror(errno));
diff --git a/databases/redis86/files/patch-deps_linenoise_Makefile b/databases/redis86/files/patch-deps_linenoise_Makefile
new file mode 100644
index 000000000000..aef0f10966af
--- /dev/null
+++ b/databases/redis86/files/patch-deps_linenoise_Makefile
@@ -0,0 +1,15 @@
+--- deps/linenoise/Makefile.orig	2019-09-25 10:40:18 UTC
++++ deps/linenoise/Makefile
+@@ -1,10 +1,10 @@
+ STD=
+ WARN= -Wall
+-OPT= -Os
++#OPT= -Os
+ 
+ R_CFLAGS= $(STD) $(WARN) $(OPT) $(DEBUG) $(CFLAGS)
+ R_LDFLAGS= $(LDFLAGS)
+-DEBUG= -g
++#DEBUG= -g
+ 
+ R_CC=$(CC) $(R_CFLAGS)
+ R_LD=$(CC) $(R_LDFLAGS)
diff --git a/databases/redis86/files/patch-deps_lua_src_lua__cjson.c b/databases/redis86/files/patch-deps_lua_src_lua__cjson.c
new file mode 100644
index 000000000000..9303727b7868
--- /dev/null
+++ b/databases/redis86/files/patch-deps_lua_src_lua__cjson.c
@@ -0,0 +1,12 @@
+--- deps/lua/src/lua_cjson.c.orig	2025-08-04 11:05:03 UTC
++++ deps/lua/src/lua_cjson.c
+@@ -47,7 +47,9 @@
+ #include "strbuf.h"
+ #include "fpconv.h"
+ 
++#if defined(__sun)
+ #include "../../../src/solarisfixes.h"
++#endif
+ 
+ #ifndef CJSON_MODNAME
+ #define CJSON_MODNAME   "cjson"
diff --git a/databases/redis86/files/patch-deps_xxhash_Makefile b/databases/redis86/files/patch-deps_xxhash_Makefile
new file mode 100644
index 000000000000..f7dc31588e8f
--- /dev/null
+++ b/databases/redis86/files/patch-deps_xxhash_Makefile
@@ -0,0 +1,16 @@
+--- deps/xxhash/Makefile.orig	2025-12-02 07:19:06 UTC
++++ deps/xxhash/Makefile
+@@ -186,11 +186,12 @@ clean:
+	$(RM) xxhsum.wasm xxhsum.js xxhsum.html
+	$(RM) xxh32sum$(EXT) xxh64sum$(EXT) xxh128sum$(EXT) xxh3sum$(EXT)
+	$(RM) fuzzer
++ifneq	($(wildcard tests/*),)
+	$(MAKE) -C tests clean
+	$(MAKE) -C tests/bench clean
+	$(MAKE) -C tests/collisions clean
+	@echo cleaning completed
+-
++endif
+
+ # =================================================
+ # tests
diff --git a/databases/redis86/files/patch-redis.conf b/databases/redis86/files/patch-redis.conf
new file mode 100644
index 000000000000..201091ce2885
--- /dev/null
+++ b/databases/redis86/files/patch-redis.conf
@@ -0,0 +1,38 @@
+--- redis.conf.orig	2025-08-04 11:05:03 UTC
++++ redis.conf
+@@ -307,7 +307,7 @@ tcp-keepalive 300
+ # By default Redis does not run as a daemon. Use 'yes' if you need it.
+ # Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
+ # When Redis is supervised by upstart or systemd, this parameter has no impact.
+-daemonize no
++daemonize yes
+ 
+ # If you run Redis from upstart or systemd, Redis can interact with your
+ # supervision tree. Options:
+@@ -339,7 +339,7 @@ daemonize no
+ #
+ # Note that on modern Linux systems "/run/redis.pid" is more conforming
+ # and should be used instead.
+-pidfile /var/run/redis_6379.pid
++pidfile %%REDIS_RUNDIR%%/redis.pid
+ 
+ # Specify the server verbosity level.
+ # This can be one of:
+@@ -353,7 +353,7 @@ loglevel notice
+ # Specify the log file name. Also the empty string can be used to force
+ # Redis to log on the standard output. Note that if you use standard
+ # output for logging but daemonize, logs will be sent to /dev/null
+-logfile ""
++logfile %%REDIS_LOGDIR%%/redis.log
+ 
+ # To enable logging to the system logger, just set 'syslog-enabled' to yes,
+ # and optionally update the other syslog parameters to suit your needs.
+@@ -513,7 +513,7 @@ rdb-del-sync-files no
+ # The Append Only File will also be created inside this directory.
+ #
+ # Note that you must specify a directory here, not a file name.
+-dir ./
++dir %%REDIS_DBDIR%%/
+ 
+ ################################# REPLICATION #################################
+ 
diff --git a/databases/redis86/files/patch-src_Makefile b/databases/redis86/files/patch-src_Makefile
new file mode 100644
index 000000000000..396ffc148099
--- /dev/null
+++ b/databases/redis86/files/patch-src_Makefile
@@ -0,0 +1,19 @@
+--- src/Makefile.orig	2025-11-28 10:22:14 UTC
++++ src/Makefile
+@@ -67,7 +67,7 @@ endif
+ 	STD+=-std=c99
+ endif
+ 
+-PREFIX?=/usr/local
++PREFIX:=$(PREFIX)
+ INSTALL_BIN=$(PREFIX)/bin
+ INSTALL=install
+ PKG_CONFIG?=pkg-config
+@@ -150,7 +150,6 @@ FINAL_LIBS=-lm -lstdc++
+ FINAL_CFLAGS=$(STD) $(WARN) $(OPT) $(DEBUG) $(CFLAGS) $(REDIS_CFLAGS)
+ FINAL_LDFLAGS=$(LDFLAGS) $(OPT) $(REDIS_LDFLAGS) $(DEBUG)
+ FINAL_LIBS=-lm -lstdc++
+-DEBUG=-g -ggdb
+ 
+ # Linux ARM32 needs -latomic at linking time
+ ifneq (,$(findstring armv,$(uname_M)))
diff --git a/databases/redis86/files/patch-src_mkreleasehdr.sh b/databases/redis86/files/patch-src_mkreleasehdr.sh
new file mode 100644
index 000000000000..2a568628139d
--- /dev/null
+++ b/databases/redis86/files/patch-src_mkreleasehdr.sh
@@ -0,0 +1,11 @@
+--- src/mkreleasehdr.sh.orig	2024-06-06 11:03:20 UTC
++++ src/mkreleasehdr.sh
+@@ -1,6 +1,6 @@
+ #!/bin/sh
+-GIT_SHA1=`(git show-ref --head --hash=8 2> /dev/null || echo 00000000) | head -n1`
+-GIT_DIRTY=`git diff --no-ext-diff -- ../src ../deps 2> /dev/null | wc -l`
++GIT_SHA1="00000000"
++GIT_DIRTY="0"
+ BUILD_ID=`uname -n`"-"`date +%s`
+ if [ -n "$SOURCE_DATE_EPOCH" ]; then
+   BUILD_ID=$(date -u -d "@$SOURCE_DATE_EPOCH" +%s 2>/dev/null || date -u -r "$SOURCE_DATE_EPOCH" +%s 2>/dev/null || date -u +%s)
diff --git a/databases/redis86/files/patch-tests_modules_Makefile b/databases/redis86/files/patch-tests_modules_Makefile
new file mode 100644
index 000000000000..b91426ed4d1b
--- /dev/null
+++ b/databases/redis86/files/patch-tests_modules_Makefile
@@ -0,0 +1,14 @@
+--- tests/modules/Makefile.orig	2025-12-02 10:24:24 UTC
++++ tests/modules/Makefile
+@@ -34,6 +34,11 @@ endif
+ endif
+ endif
+
++ifeq ($(uname_S),FreeBSD)
++	LD = cc
++	CC = cc
++endif
++
+ # OS X 11.x doesn't have /usr/lib/libSystem.dylib and needs an explicit setting.
+ ifeq ($(uname_S),Darwin)
+ ifeq ("$(wildcard /usr/lib/libSystem.dylib)","")
diff --git a/databases/redis86/files/pkg-message.in b/databases/redis86/files/pkg-message.in
new file mode 100644
index 000000000000..85a89529262a
--- /dev/null
+++ b/databases/redis86/files/pkg-message.in
@@ -0,0 +1,11 @@
+[
+{ type: install
+  message: <<EOM
+      To setup "%%PORTNAME%%" you need to edit the configuration file:
+      %%PREFIX%%/etc/%%PORTNAME%%.conf
+
+      To run redis from startup, add %%PORTNAME%%_enable="YES"
+      in your /etc/rc.conf.
+EOM
+}
+]
diff --git a/databases/redis86/files/redis.in b/databases/redis86/files/redis.in
new file mode 100644
index 000000000000..d18063c3a504
--- /dev/null
+++ b/databases/redis86/files/redis.in
@@ -0,0 +1,67 @@
+#!/bin/sh
+
+# PROVIDE: redis
+# REQUIRE: LOGIN
+# BEFORE:  securelevel
+# KEYWORD: shutdown
+
+# Add the following line to /etc/rc.conf to enable `redis':
+#
+#redis_enable="YES"
+#
+# Define profiles here to run separate redis instances:
+#
+#redis_profiles="foo bar" #  Script uses %%PREFIX%%/etc/redis-NAME.conf respectively.
+#			     For correct script working please update pidfile entries in
+#			     redis-NAME.conf files.
+
+. /etc/rc.subr
+
+name="redis"
+rcvar="${name}_enable"
+
+extra_commands="reload"
+
+command="%%PREFIX%%/bin/redis-server"
+pidfile="%%REDIS_RUNDIR%%/$name.pid"
+
+# read configuration and set defaults
+load_rc_config "$name"
+: ${redis_enable="NO"}
+: ${redis_user="%%REDIS_USER%%"}
+: ${redis_config="%%PREFIX%%/etc/$name.conf"}
+
+command_args="${redis_config}"
+required_files="${redis_config}"
+
+_profile_exists() {
+	for _p in ${redis_profiles}; do
+		[ "${_p}" = "$1" ] && return 1;
+	done
+	return 0
+}
+
+if [ $# -eq 2 ]; then
+	_profile=$2
+	_profile_exists $_profile
+	_exists=$?
+	[ ${_exists} -ne 1 ] && {
+		echo "`basename %%PREFIX%%/etc/rc.d/redis`: no '$2' in 'redis_profiles'"
+		exit 1
+	};
+	echo "-- Profile: ${_profile} --"
+	config_file="%%PREFIX%%/etc/${name}-${_profile}.conf"
+	command_args="${config_file}"
+	pidfile="%%REDIS_RUNDIR%%/${_profile}.pid"
+	required_files="${config_file}"
+elif [ -n "${redis_profiles}" ]; then
+	_swap=$*; shift; _profiles=$*
+	_profiles=${_profiles:-${redis_profiles}}
+	set -- ${_swap}
+	for _profile in ${_profiles}; do
+		%%PREFIX%%/etc/rc.d/redis $1 ${_profile}
+	done
+	exit 0
+fi
+
+run_rc_command "$1"
diff --git a/databases/redis86/files/sentinel.in b/databases/redis86/files/sentinel.in
new file mode 100644
index 000000000000..088f4382fc06
--- /dev/null
+++ b/databases/redis86/files/sentinel.in
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+# PROVIDE: sentinel
+# REQUIRE: LOGIN
+# BEFORE:  securelevel
+# KEYWORD: shutdown
+
+# Add the following line to /etc/rc.conf to enable `sentinel':
+#
+#sentinel_enable="YES"
+#
+
+. /etc/rc.subr
+
+name="sentinel"
+rcvar="${name}_enable"
+
+command="/usr/local/bin/redis-sentinel"
+pidfile="/var/run/redis/$name.pid"
+
+# read configuration and set defaults
+load_rc_config "$name"
+: ${sentinel_enable="NO"}
+: ${sentinel_user="redis"}
+: ${sentinel_config="/usr/local/etc/$name.conf"}
+
+command_args="${sentinel_config} --daemonize yes --pidfile ${pidfile}"
+required_files="${sentinel_config}"
+start_precmd="${name}_checks"
+restart_precmd="${name}_checks"
+
+sentinel_checks()
+{
+    if [ x`id -u ${sentinel_user}` != x`stat -f %u ${sentinel_config}` ]; then
+	err 1 "${sentinel_config} must be owned by user ${sentinel_user}"
+    fi
+}
+
+run_rc_command "$1"
diff --git a/databases/redis86/pkg-descr b/databases/redis86/pkg-descr
new file mode 100644
index 000000000000..5c4104e1b6b8
--- /dev/null
+++ b/databases/redis86/pkg-descr
@@ -0,0 +1,19 @@
+Redis is an open source, advanced key-value store.  It is often referred
+to as a data structure server since keys can contain strings, hashes,
+lists, sets and sorted sets.
+
+You can run atomic operations on these types, like appending to a string;
+incrementing the value in a hash; pushing to a list; computing set
+intersection, union and difference; or getting the member with highest
+ranking in a sorted set.
+
+In order to achieve its outstanding performance, Redis works with an
+in-memory dataset.  Depending on your use case, you can persist it either
+by dumping the dataset to disk every once in a while, or by appending each
+command to a log.
+
+Redis also supports trivial-to-setup master-slave replication, with very
+fast non-blocking first synchronization, auto-reconnection on net split
+and so forth.
+
+This is the 8.6.X branch of redis.
diff --git a/databases/redis86/pkg-plist b/databases/redis86/pkg-plist
new file mode 100644
index 000000000000..fafc472df89b
--- /dev/null
+++ b/databases/redis86/pkg-plist
@@ -0,0 +1,11 @@
+bin/redis-benchmark
+bin/redis-check-aof
+bin/redis-check-rdb
+bin/redis-cli
+bin/redis-sentinel
+bin/redis-server
+@sample etc/redis.conf.sample
+@sample(%%REDIS_USER%%,%%REDIS_GROUP%%,) etc/sentinel.conf.sample
+@dir(%%REDIS_USER%%,%%REDIS_GROUP%%,) %%REDIS_DBDIR%%
+@dir(%%REDIS_USER%%,%%REDIS_GROUP%%,) %%REDIS_LOGDIR%%
+@dir(%%REDIS_USER%%,%%REDIS_GROUP%%,) %%REDIS_RUNDIR%%


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6a199cce.20e92.d0ccca6>