redis: Add redis 8.0.0 recipe

Adding base 8.0.0 recipe for redis without any module configuration.

See https://github.com/redis/redis/tree/8.0.0?tab=readme-ov-file#redis-data-types-processing-engines-and-capabilities

for more details.

Signed-off-by: Eric Meyers <eric.meyers@arthrex.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
Eric Meyers
2026-02-18 13:51:51 -06:00
committed by Khem Raj
parent 8da0f12830
commit 19ae3c84e2
9 changed files with 1722 additions and 0 deletions
@@ -0,0 +1,45 @@
From 43601f60f268ddbc2e03f7a33ae4a1ad109f092c Mon Sep 17 00:00:00 2001
From: Venture Research <tech@ventureresearch.com>
Date: Fri, 8 Feb 2013 17:39:52 -0600
Subject: [PATCH] hiredis: use default CC if it is set
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Instead of trying to automagically figure out CC, which breaks with OE
as CC has spaces in it, just skip it if one was already passed in.
Upstream-Status: Pending
Signed-off-by: Venture Research <tech@ventureresearch.com>
Update to work with 4.0.8
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
Reworked for 6.0.4
Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
Reworked for 8.0.0
Signed-off-by: Eric Meyers <eric.meyers@arthrex.com>
---
deps/hiredis/Makefile | 2 --
1 file changed, 2 deletions(-)
diff --git a/deps/hiredis/Makefile b/deps/hiredis/Makefile
index bd2106b..9ce768d 100644
--- a/deps/hiredis/Makefile
+++ b/deps/hiredis/Makefile
@@ -36,8 +36,6 @@ endef
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
@@ -0,0 +1,81 @@
From d50d4cb30bfb533185711116822a50d83e5a92e8 Mon Sep 17 00:00:00 2001
From: Venture Research <tech@ventureresearch.com>
Date: Fri, 8 Feb 2013 20:22:19 -0600
Subject: [PATCH] lua: update Makefile to use environment build settings
OE-specific parameters, instead of overriding all of these simply use
the ones that are already passed in. Also configure for only Linux...
Upstream-Status: Pending
Signed-off-by: Venture Research <tech@ventureresearch.com>
Updated to work with 3.0.x
Signed-off-by: Armin Kuster <akust808@gmail.com>
updated to work wtih 6.2.1
Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com>
Reworked for 8.0.0
Signed-off-by: Eric Meyers <eric.meyers@arthrex.com>
---
deps/Makefile | 1 -
deps/lua/Makefile | 1 -
deps/lua/src/Makefile | 16 ++++++----------
3 files changed, 6 insertions(+), 12 deletions(-)
diff --git a/deps/Makefile b/deps/Makefile
index 5593e0c..d71265a 100644
--- a/deps/Makefile
+++ b/deps/Makefile
@@ -101,7 +101,6 @@ endif
# lua's Makefile defines AR="ar rcu", which is unusual, and makes it more
# challenging to cross-compile lua (and redis). These defines make it easier
# to fit redis into cross-compilation environments, which typically set AR.
-AR=ar
ARFLAGS=rc
lua: .make-prerequisites
diff --git a/deps/lua/Makefile b/deps/lua/Makefile
index 209a132..72f4b2b 100644
--- a/deps/lua/Makefile
+++ b/deps/lua/Makefile
@@ -33,7 +33,6 @@ INSTALL_DATA= $(INSTALL) -m 0644
# Utilities.
MKDIR= mkdir -p
-RANLIB= ranlib
# == END OF USER SETTINGS. NO NEED TO CHANGE ANYTHING BELOW THIS LINE =========
diff --git a/deps/lua/src/Makefile b/deps/lua/src/Makefile
index f3bba2f..1555ec0 100644
--- a/deps/lua/src/Makefile
+++ b/deps/lua/src/Makefile
@@ -5,18 +5,14 @@
# == CHANGE THE SETTINGS BELOW TO SUIT YOUR ENVIRONMENT =======================
# Your platform. See PLATS for possible values.
-PLAT= none
+PLAT= linux
-CC?= gcc
-CFLAGS= -O2 -Wall $(MYCFLAGS)
-AR= ar rcu
-RANLIB= ranlib
-RM= rm -f
-LIBS= -lm $(MYLIBS)
-
-MYCFLAGS=
+MYCFLAGS=-DLUA_USE_LINUX
MYLDFLAGS=
-MYLIBS=
+MYLIBS=-Wl,-E -ldl -lreadline -lhistory -lncurses
+
+CFLAGS += $(MYCFLAGS)
+LIBS += -lm $(MYLIBS)
# == END OF USER SETTINGS. NO NEED TO CHANGE ANYTHING BELOW THIS LINE =========
@@ -0,0 +1,39 @@
From 55e09d562a1b8ca6a7d3ef2349c58f466bc44d2b Mon Sep 17 00:00:00 2001
From: Venture Research <tech@ventureresearch.com>
Date: Wed, 6 Feb 2013 20:51:02 -0600
Subject: [PATCH] hack to force use of libc malloc
Hack to force libc usage as it seems the option to pass it in has been
removed in favor of magic.
Note that this of course doesn't allow tcmalloc and jemalloc, however
jemalloc wasn't building correctly.
Upstream-Status: Pending
Signed-off-by: Venture Research <tech@ventureresearch.com>
Update to work with 4.0.8
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
Reworked for 8.0.0
Signed-off-by: Eric Meyers <eric.meyers@arthrex.com>
---
src/Makefile | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/Makefile b/src/Makefile
index 948ef83..5dbbefc 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -17,7 +17,8 @@
# Just use 'make dep', but this is only needed by developers.
release_hdr := $(shell sh -c './mkreleasehdr.sh')
-uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')
+# use fake uname option to force use of generic libc
+uname_S := "USE_LIBC_MALLOC"
uname_M := $(shell sh -c 'uname -m 2>/dev/null || echo not')
CLANG := $(findstring clang,$(shell sh -c '$(CC) --version | head -1'))
@@ -0,0 +1,34 @@
From 8f7a23705433e3f8850736a3348ecabbf7949e01 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Tue, 10 Sep 2019 20:04:26 -0700
Subject: [PATCH] src: Do not reset FINAL_LIBS
This helps case where additional libraries are needed to be passed from
environment to get it going
e.g. -latomic is needed on clang/x86 to provide for 64bit atomics
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Reworked for 8.0.0
Signed-off-by: Eric Meyers <eric.meyers@arthrex.com>
---
src/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/Makefile b/src/Makefile
index 5dbbefc..15fbe09 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -131,7 +131,7 @@ endif
FINAL_CFLAGS=$(STD) $(WARN) $(OPT) $(DEBUG) $(CFLAGS) $(REDIS_CFLAGS)
FINAL_LDFLAGS=$(LDFLAGS) $(OPT) $(REDIS_LDFLAGS) $(DEBUG)
-FINAL_LIBS=-lm -lstdc++
+FINAL_LIBS+=-lm -lstdc++
DEBUG=-g -ggdb
# Linux ARM32 needs -latomic at linking time
@@ -0,0 +1,33 @@
From 3e5b6732b936883d895638a3098a29dd254a7be4 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 21 Dec 2019 12:09:51 -0800
Subject: [PATCH] Define _GNU_SOURCE to get PTHREAD_MUTEX_INITIALIZER
Fixes
| zmalloc.c:87:37: error: 'PTHREAD_MUTEX_DEFAULT' undeclared here (not in a function)
| 87 | pthread_mutex_t used_memory_mutex = PTHREAD_MUTEX_INITIALIZER;
| | ^~~~~~~~~~~~~~~~~~~~~~~~~
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Reworked for 8.0.0
Signed-off-by: Eric Meyers <eric.meyers@arthrex.com>
---
src/zmalloc.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/zmalloc.c b/src/zmalloc.c
index b2f5718..913be90 100644
--- a/src/zmalloc.c
+++ b/src/zmalloc.c
@@ -12,6 +12,7 @@
#include "config.h"
#include "solarisfixes.h"
+#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
@@ -0,0 +1,71 @@
#!/bin/sh
#
### BEGIN INIT INFO
# Provides: redis-server
# Required-Start: $network
# Required-Stop: $network
# Default-Start: S 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Redis, a key-value store
# Description: Redis is an open source, advanced key-value store.
# http://redis.io
### END INIT INFO
test -f /usr/bin/redis-server || exit 0
ARGS="/etc/redis/redis.conf"
case "$1" in
start)
echo "Starting redis-server..."
start-stop-daemon --start --quiet --exec /usr/bin/redis-server -- $ARGS
;;
stop)
echo "Stopping redis-server..."
start-stop-daemon --stop --quiet --exec /usr/bin/redis-server
;;
restart)
echo "Stopping redis-server..."
start-stop-daemon --stop --quiet --exec /usr/bin/redis-server
# Since busybox implementation ignores --retry arguments repeatedly check
# if the process is still running and try another signal after a timeout,
# efectively simulating a stop with --retry=TERM/5/KILL/5 schedule.
waitAfterTerm=5000000 # us / 5000 ms / 5 s
waitAfterKill=5000000 # us / 5000 ms / 5 s
waitStep=100000 # us / 100 ms / 0.1 s
waited=0
start-stop-daemon --stop --test --quiet --exec /usr/bin/redis-server
processOff=$?
while [ $processOff -eq 0 ] && [ $waited -le $waitAfterTerm ] ; do
usleep ${waitStep}
((waited+=${waitStep}))
start-stop-daemon --stop --test --quiet --exec /usr/bin/redis-server
processOff=$?
done
if [ $processOff -eq 0 ] ; then
start-stop-daemon --stop --signal KILL --exec /usr/bin/redis-server
start-stop-daemon --stop --test --quiet --exec /usr/bin/redis-server
processOff=$?
fi
waited=0
while [ $processOff -eq 0 ] && [ $waited -le $waitAfterKill ] ; do
usleep ${waitStep}
((waited+=${waitStep}))
start-stop-daemon --stop --test --quiet --exec /usr/bin/redis-server
processOff=$?
done
# Here $processOff will indicate if waiting and retrying according to
# the schedule ended in a successfull stop or not.
echo "Starting redis-server..."
start-stop-daemon --start --quiet --exec /usr/bin/redis-server -- $ARGS
;;
*)
echo "Usage: /etc/init.d/redis-server {start|stop|restart}"
exit 1
;;
esac
exit 0
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,17 @@
[Unit]
Description=Redis In-Memory Data Store
After=network.target
[Service]
User=redis
Group=redis
ExecStart=/usr/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/bin/redis-cli shutdown
Restart=always
LimitNOFILE=10032
Type=notify
StateDirectory=redis
[Install]
WantedBy=multi-user.target
@@ -0,0 +1,88 @@
SUMMARY = "Redis key-value store"
DESCRIPTION = "Redis is an open source, advanced key-value store."
HOMEPAGE = "http://redis.io"
SECTION = "libs"
LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4feb9943a139a170b9d6ed6ec3342d0c"
DEPENDS = "readline lua ncurses"
SRC_URI = "http://download.redis.io/releases/${BP}.tar.gz \
file://redis.conf \
file://init-redis-server \
file://redis.service \
file://0001-hiredis-use-default-CC-if-it-is-set.patch \
file://0002-lua-update-Makefile-to-use-environment-build-setting.patch \
file://0003-hack-to-force-use-of-libc-malloc.patch \
file://0004-src-Do-not-reset-FINAL_LIBS.patch \
file://0005-Define-_GNU_SOURCE-to-get-PTHREAD_MUTEX_INITIALIZER.patch \
"
SRC_URI[sha256sum] = "cf395665ba5fcecc4ef7aed1d8ab19c268619d98595827565c82344160171262"
RPROVIDES:${PN} = "virtual-redis"
CVE_STATUS[CVE-2025-21605] = "cpe-incorrect: the used version already contains the fix"
CVE_STATUS[CVE-2025-27151] = "cpe-incorrect: the used version already contains the fix"
CVE_STATUS[CVE-2025-46686] = "disputed: upstream rejected because mitigating it would affect other functionality"
CVE_STATUS[CVE-2025-46817] = "cpe-incorrect: the used version already contains the fix"
CVE_STATUS[CVE-2025-46818] = "cpe-incorrect: the used version already contains the fix"
CVE_STATUS[CVE-2025-46819] = "cpe-incorrect: the used version already contains the fix"
inherit pkgconfig update-rc.d systemd useradd
FINAL_LIBS:x86:toolchain-clang = "-latomic"
FINAL_LIBS:riscv32 = "-latomic"
FINAL_LIBS:mips = "-latomic"
FINAL_LIBS:arm = "-latomic"
FINAL_LIBS:powerpc = "-latomic"
export FINAL_LIBS
USERADD_PACKAGES = "${PN}"
USERADD_PARAM:${PN} = "--system --home-dir /var/lib/redis -g redis --shell /bin/false redis"
GROUPADD_PARAM:${PN} = "--system redis"
PACKAGECONFIG = "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
PACKAGECONFIG[systemd] = "USE_SYSTEMD=yes,USE_SYSTEMD=no,systemd"
EXTRA_OEMAKE += "${PACKAGECONFIG_CONFARGS}"
TARGET_LDFLAGS:append = " ${DEBUG_PREFIX_MAP}"
do_compile:prepend() {
oe_runmake -C deps hdr_histogram fpconv hiredis lua linenoise
}
do_install() {
export PREFIX=${D}/${prefix}
oe_runmake install
install -d ${D}/${sysconfdir}/redis
install -m 0644 ${UNPACKDIR}/redis.conf ${D}/${sysconfdir}/redis/redis.conf
install -d ${D}/${sysconfdir}/init.d
install -m 0755 ${UNPACKDIR}/init-redis-server ${D}/${sysconfdir}/init.d/redis-server
install -d ${D}/var/lib/redis/
chown redis.redis ${D}/var/lib/redis/
install -d ${D}${systemd_system_unitdir}
install -m 0644 ${UNPACKDIR}/redis.service ${D}${systemd_system_unitdir}
sed -i 's!/usr/sbin/!${sbindir}/!g' ${D}${systemd_system_unitdir}/redis.service
if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
sed -i 's!daemonize yes!# daemonize yes!' ${D}/${sysconfdir}/redis/redis.conf
sed -i 's!supervised no!supervised systemd!' ${D}/${sysconfdir}/redis/redis.conf
fi
}
CONFFILES:${PN} = "${sysconfdir}/redis/redis.conf"
INITSCRIPT_NAME = "redis-server"
INITSCRIPT_PARAMS = "defaults 87"
SYSTEMD_SERVICE:${PN} = "redis.service"
CVE_STATUS[CVE-2022-3734] = "not-applicable-platform: CVE only applies for Windows."
# The vulnerability originates from Debian's packaging methodology,
# which loads system-wide Lua libraries (lua-cjson, lua-cmsgpack),
# enabling Lua sandbox escape. Upstream Redis builds, including
# those built by Yocto/OpenEmbedded, utilize embedded Lua from the
# deps/ directory and are therefore not affected by this issue.
CVE_STATUS[CVE-2022-0543] = "not-applicable-config: Debian-specific packaging issue caused by loading system-wide Lua libraries; upstream builds use embedded Lua and are not affected"