databases/redis72: Copy from databases/redis

Copy databases/redis to databases/redis72 as preparation for updating
the former to 7.4.
This commit is contained in:
Yasuhiro Kimura
2024-08-16 11:48:38 +09:00
parent 092a9e9d97
commit caa2e54ee9
16 changed files with 441 additions and 0 deletions
+1
View File
@@ -884,6 +884,7 @@
SUBDIR += redis-devel
SUBDIR += redis62
SUBDIR += redis70
SUBDIR += redis72
SUBDIR += redis_exporter
SUBDIR += redisdesktopmanager
SUBDIR += redisjson
+76
View File
@@ -0,0 +1,76 @@
PORTNAME= redis
DISTVERSION= 7.2.5
CATEGORIES= databases
MASTER_SITES= https://download.redis.io/releases/
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 tcl:test
CPE_VENDOR= redislabs
USE_RC_SUBR= redis sentinel
MAKE_ENV= OPTIMIZATION= \
V=yo
LDFLAGS+= -lpthread -lm -lexecinfo
CONFLICTS_INSTALL= redis-devel redis6 redis62 redis70 # etc/rc.d/redis
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_SUB= yes
JEMALLOC_DESC= Use jemalloc
TLS_DESC= Use TLS (openssl req.)
JEMALLOC_MAKE_ENV= USE_JEMALLOC=yes
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} '69s!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>
+3
View File
@@ -0,0 +1,3 @@
TIMESTAMP = 1716165213
SHA256 (redis-7.2.5.tar.gz) = 5981179706f8391f03be91d951acafaeda91af7fac56beffb2701963103e423d
SIZE (redis-7.2.5.tar.gz) = 3386454
@@ -0,0 +1,21 @@
--- deps/Makefile.orig 2023-07-10 11:55:20 UTC
+++ deps/Makefile
@@ -84,7 +84,7 @@ LUA_LDFLAGS+= $(LDFLAGS)
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
@@ -112,7 +112,7 @@ endif
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
@@ -0,0 +1,41 @@
--- deps/hiredis/Makefile.orig 2023-08-15 09:38:36 UTC
+++ deps/hiredis/Makefile
@@ -15,7 +15,7 @@ HIREDIS_PATCH=$(shell grep HIREDIS_PATCH hiredis.h | a
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
@@ -38,10 +38,9 @@ export REDIS_TEST_CONFIG
# 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)
+REAL_CFLAGS=$(OPTIMIZATION) -fPIC $(CFLAGS) $(WARNINGS) $(DEBUG_FLAGS) $(PLATFORM_FLAGS)
REAL_LDFLAGS=$(LDFLAGS)
DYLIBSUFFIX=so
@@ -122,7 +121,16 @@ ifeq ($(uname_S),FreeBSD)
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)
@@ -0,0 +1,39 @@
--- deps/hiredis/net.c.orig 2019-11-28 19:32:05 UTC
+++ deps/hiredis/net.c
@@ -178,14 +178,34 @@
__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));
@@ -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)
@@ -0,0 +1,12 @@
--- deps/lua/src/lua_cjson.c.orig 2019-09-25 10:40:18 UTC
+++ deps/lua/src/lua_cjson.c
@@ -46,7 +46,9 @@
#include "strbuf.h"
#include "fpconv.h"
+#if defined(__sun)
#include "../../../src/solarisfixes.h"
+#endif
#ifndef CJSON_MODNAME
#define CJSON_MODNAME "cjson"
+38
View File
@@ -0,0 +1,38 @@
--- redis.conf.orig 2021-01-12 14:21:03 UTC
+++ redis.conf
@@ -244,7 +244,7 @@
# 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:
@@ -276,7 +276,7 @@
#
# 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:
@@ -289,7 +289,7 @@
# 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.
@@ -420,7 +420,7 @@
# 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 #################################
@@ -0,0 +1,39 @@
--- src/Makefile.orig 2019-11-29 16:35:59 UTC
+++ src/Makefile
@@ -29,7 +29,7 @@ endif
WARN=-Wall -W -Wno-missing-field-initializers
OPT=$(OPTIMIZATION)
-PREFIX?=/usr/local
+PREFIX:=$(PREFIX)
INSTALL_BIN=$(PREFIX)/bin
INSTALL=install
@@ -75,7 +75,6 @@ endif
FINAL_CFLAGS=$(STD) $(WARN) $(OPT) $(DEBUG) $(CFLAGS) $(REDIS_CFLAGS)
FINAL_LDFLAGS=$(LDFLAGS) $(REDIS_LDFLAGS) $(DEBUG)
FINAL_LIBS=-lm
-DEBUG=-g -ggdb
# Linux ARM needs -latomic at linking time
ifneq (,$(filter aarch64 armv,$(uname_M)))
@@ -105,6 +104,11 @@ ifeq ($(uname_S),Darwin)
OPENSSL_CFLAGS=-I/usr/local/opt/openssl/include
OPENSSL_LDFLAGS=-L/usr/local/opt/openssl/lib
else
+ifeq ($(uname_S),FreeBSD)
+ # FreeBSD
+ FINAL_CFLAGS?= $(CFLAGS) $(REDIS_CFLAGS) -I${PREFIX}/include
+ FINAL_LDFLAGS= $(LDFLAGS) -pthread
+else
ifeq ($(uname_S),AIX)
# AIX
FINAL_LDFLAGS+= -Wl,-bexpall
@@ -131,6 +135,7 @@ else
# All the other OSes (notably Linux)
FINAL_LDFLAGS+= -rdynamic
FINAL_LIBS+=-ldl -pthread -lrt
+endif
endif
endif
endif
@@ -0,0 +1,11 @@
--- src/mkreleasehdr.sh.orig 2019-11-22 16:54:22 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 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)
+11
View File
@@ -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
}
]
+67
View File
@@ -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"
+39
View File
@@ -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"
+17
View File
@@ -0,0 +1,17 @@
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.
+11
View File
@@ -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%%