mirror of
https://github.com/openwrt/packages.git
synced 2026-05-31 06:51:51 +08:00
valkey: add new package
Valkey is a community fork of the key-value database Redis. It is a drop in replacement to Redis so most of the files are derived from their Redis equivalent. Co-authored-by: George Sapkin <george@sapk.in> Signed-off-by: Matthew Cather <mattbob4@gmail.com>
This commit is contained in:
committed by
George Sapkin
parent
e15d62c64a
commit
fdcb89b61e
@@ -0,0 +1,109 @@
|
||||
#
|
||||
# Copyright (C) 2026 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=valkey
|
||||
PKG_VERSION:=9.0.1
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://github.com/valkey-io/valkey/archive/refs/tags/$(PKG_VERSION).tar.gz?
|
||||
PKG_HASH:=9cfbc5f32a2a6058ee0f8c532b9c4d24167cc49d719f091dd75f1bb8353a1fc5
|
||||
|
||||
PKG_MAINTAINER:=Matthew Cather <mattbob4@gmail.com>
|
||||
PKG_LICENSE:=BSD-3-Clause
|
||||
PKG_LICENSE_FILES:=COPYING
|
||||
PKG_CPE_ID:=cpe:/a:lfprojects:valkey
|
||||
|
||||
PKG_FORTIFY_SOURCE:=0
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_INSTALL:=1
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/valkey/Default
|
||||
SUBMENU:=Database
|
||||
SECTION:=libs
|
||||
CATEGORY:=Libraries
|
||||
URL:=https://valkey.io/
|
||||
endef
|
||||
|
||||
define Package/valkey-server
|
||||
$(call Package/valkey/Default)
|
||||
TITLE:=Valkey in-memory key-value data store (server)
|
||||
DEPENDS:=+libatomic
|
||||
endef
|
||||
|
||||
define Package/valkey-server/description
|
||||
Valkey is an open source (BSD) high-performance key/value datastore
|
||||
that supports a variety of workloads such as caching, message queues,
|
||||
and can act as a primary database. This package contains the Valkey server.
|
||||
endef
|
||||
|
||||
define Package/valkey-cli
|
||||
$(call Package/valkey/Default)
|
||||
TITLE:=Valkey in-memory key-value data store (CLI client)
|
||||
DEPENDS:=+libatomic
|
||||
endef
|
||||
|
||||
define Package/valkey-cli/description
|
||||
Valkey is an open source (BSD) high-performance key/value datastore.
|
||||
This package contains the Valkey CLI client.
|
||||
endef
|
||||
|
||||
define Package/valkey-utils
|
||||
$(call Package/valkey/Default)
|
||||
TITLE:=Valkey in-memory key-value data store (utilities)
|
||||
DEPENDS:=+valkey-server
|
||||
endef
|
||||
|
||||
define Package/valkey-utils/description
|
||||
Valkey is an open source (BSD) high-performance key/value datastore.
|
||||
This package contains Valkey utilities (valkey-benchmark, valkey-check-aof,
|
||||
valkey-check-rdb).
|
||||
endef
|
||||
|
||||
MAKE_FLAGS+= \
|
||||
MALLOC="libc" \
|
||||
USE_JEMALLOC="no" \
|
||||
PREFIX="$(PKG_INSTALL_DIR)/usr" \
|
||||
ARCH=""
|
||||
|
||||
TARGET_LDFLAGS += -latomic
|
||||
|
||||
define Package/valkey-server/conffiles
|
||||
/etc/valkey/valkey.conf
|
||||
/etc/config/valkey
|
||||
endef
|
||||
|
||||
define Package/valkey-server/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/valkey-server $(1)/usr/bin/
|
||||
$(INSTALL_DIR) $(1)/etc/valkey
|
||||
$(INSTALL_CONF) $(PKG_BUILD_DIR)/valkey.conf $(1)/etc/valkey/
|
||||
$(INSTALL_DIR) $(1)/etc/init.d
|
||||
$(INSTALL_BIN) ./files/valkey.init $(1)/etc/init.d/valkey
|
||||
$(INSTALL_DIR) $(1)/etc/config
|
||||
$(INSTALL_CONF) ./files/valkey.config $(1)/etc/config/valkey
|
||||
endef
|
||||
|
||||
define Package/valkey-cli/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/valkey-cli $(1)/usr/bin/
|
||||
endef
|
||||
|
||||
define Package/valkey-utils/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/valkey-benchmark $(1)/usr/bin/
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/valkey-check-aof $(1)/usr/bin/
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/valkey-check-rdb $(1)/usr/bin/
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,valkey-server))
|
||||
$(eval $(call BuildPackage,valkey-cli))
|
||||
$(eval $(call BuildPackage,valkey-utils))
|
||||
@@ -0,0 +1,13 @@
|
||||
config instance 'main'
|
||||
option enabled '1'
|
||||
option port '6379'
|
||||
option bind '127.0.0.1'
|
||||
option dir '/var/lib/valkey'
|
||||
option logfile '/var/log/valkey.log'
|
||||
option maxmemory '64mb'
|
||||
option maxmemory_policy 'allkeys-lru'
|
||||
list save '900 1'
|
||||
list save '300 10'
|
||||
list save '60 10000'
|
||||
option appendonly '0'
|
||||
option appendfilename 'appendonly.aof'
|
||||
@@ -0,0 +1,105 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
# Copyright (C) 2026 OpenWrt.org
|
||||
|
||||
START=95
|
||||
STOP=10
|
||||
|
||||
USE_PROCD=1
|
||||
|
||||
PROG=/usr/bin/valkey-server
|
||||
CONF=/etc/valkey/valkey.conf
|
||||
|
||||
validate_valkey_section() {
|
||||
uci_validate_section valkey instance "${1}" \
|
||||
'enabled:bool:1' \
|
||||
'port:port:6379' \
|
||||
'bind:host:127.0.0.1' \
|
||||
'dir:directory:/var/lib/valkey' \
|
||||
'logfile:string:/var/log/valkey.log' \
|
||||
'daemonize:bool:0' \
|
||||
'maxmemory:string' \
|
||||
'maxmemory_policy:string' \
|
||||
'save:list(string)' \
|
||||
'appendonly:bool:0' \
|
||||
'appendfilename:string:appendonly.aof'
|
||||
}
|
||||
|
||||
valkey_instance() {
|
||||
local cfg="$1"
|
||||
local enabled port bind dir logfile daemonize maxmemory maxmemory_policy save appendonly appendfilename
|
||||
|
||||
validate_valkey_section "${cfg}" || {
|
||||
echo "validation failed"
|
||||
return 1
|
||||
}
|
||||
|
||||
[ "${enabled}" = "0" ] && return 0
|
||||
|
||||
# Create necessary directories
|
||||
mkdir -p "${dir}"
|
||||
mkdir -p "$(dirname ${logfile})"
|
||||
|
||||
# Generate runtime config
|
||||
local config_file="/var/etc/valkey-${cfg}.conf"
|
||||
mkdir -p /var/etc
|
||||
|
||||
# Start with base config if exists
|
||||
if [ -f "$CONF" ]; then
|
||||
grep -v "^port\|^bind\|^dir\|^logfile\|^daemonize\|^maxmemory\|^save\|^appendonly\|^appendfilename" "$CONF" > "$config_file"
|
||||
else
|
||||
> "$config_file"
|
||||
fi
|
||||
|
||||
# Add runtime configuration
|
||||
cat >> "$config_file" <<-EOF
|
||||
port ${port}
|
||||
bind ${bind}
|
||||
dir ${dir}
|
||||
logfile ${logfile}
|
||||
daemonize no
|
||||
EOF
|
||||
|
||||
# Add optional settings
|
||||
[ -n "${maxmemory}" ] && echo "maxmemory ${maxmemory}" >> "$config_file"
|
||||
[ -n "${maxmemory_policy}" ] && echo "maxmemory-policy ${maxmemory_policy}" >> "$config_file"
|
||||
|
||||
# Add save directives
|
||||
if [ -n "${save}" ]; then
|
||||
for save_rule in ${save}; do
|
||||
echo "save ${save_rule}" >> "$config_file"
|
||||
done
|
||||
fi
|
||||
|
||||
# Add append-only file settings
|
||||
if [ "${appendonly}" = "1" ]; then
|
||||
echo "appendonly yes" >> "$config_file"
|
||||
[ -n "${appendfilename}" ] && echo "appendfilename ${appendfilename}" >> "$config_file"
|
||||
fi
|
||||
|
||||
procd_open_instance
|
||||
procd_set_param command "$PROG" "$config_file"
|
||||
procd_set_param file "$config_file"
|
||||
procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5}
|
||||
procd_set_param stdout 1
|
||||
procd_set_param stderr 1
|
||||
procd_set_param user valkey
|
||||
procd_close_instance
|
||||
}
|
||||
|
||||
start_service() {
|
||||
# Create valkey user if it doesn't exist
|
||||
user_exists valkey || user_add valkey 450 450 "Valkey" /var/lib/valkey /bin/false
|
||||
|
||||
config_load 'valkey'
|
||||
config_foreach valkey_instance 'instance'
|
||||
}
|
||||
|
||||
service_triggers() {
|
||||
procd_add_reload_trigger "valkey"
|
||||
procd_add_validation validate_valkey_section
|
||||
}
|
||||
|
||||
stop_service() {
|
||||
# Clean up any leftover socket files
|
||||
rm -f /tmp/valkey*.sock
|
||||
}
|
||||
Executable
+13
@@ -0,0 +1,13 @@
|
||||
#!/bin/sh
|
||||
|
||||
case "$1" in
|
||||
valkey-server)
|
||||
valkey-server --version | grep -F "$2"
|
||||
;;
|
||||
valkey-cli)
|
||||
valkey-cli --version | grep -F "$2"
|
||||
;;
|
||||
valkey-utils)
|
||||
valkey-benchmark --version | grep -F "$2"
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user