[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT/REDIS PATCH v2 2/4] Build Redis server and client as libraries
We try to keep the same structure as for Linux builds. We use a library for the internal dependencies implementations (Lua, hiredis) and refactor the code common to both server and client into a common library. We also add the patches for building successfully. Signed-off-by: Bogdan Lascu <lascu.bogdan96@xxxxxxxxx> Signed-off-by: Costin Lupu <costin.lupu@xxxxxxxxx> --- Config.uk | 43 +++- Makefile.uk | 234 ++++++++++++++++++ ...se-linux-macros-for-Unikraft-as-well.patch | 26 ++ ...src-sds.h-Declare-SDS_INIT-as-extern.patch | 28 +++ ...Make-bytesToHuman-definitions-static.patch | 43 ++++ ...i.c-Disable-_serverAssert-definition.patch | 42 ++++ 6 files changed, 414 insertions(+), 2 deletions(-) create mode 100644 Makefile.uk create mode 100644 patches/0001-hiredis-Use-linux-macros-for-Unikraft-as-well.patch create mode 100644 patches/0002-src-sds.h-Declare-SDS_INIT-as-extern.patch create mode 100644 patches/0003-Make-bytesToHuman-definitions-static.patch create mode 100644 patches/0004-src-redis-cli.c-Disable-_serverAssert-definition.patch diff --git a/Config.uk b/Config.uk index dea2ebf..754c4a1 100644 --- a/Config.uk +++ b/Config.uk @@ -1,7 +1,46 @@ -config LIBREDIS +menuconfig LIBREDIS bool "Redis" default n - select LIBNOLIBC if !HAVE_LIBC + +if LIBREDIS +# hidden +config LIBREDIS_COMMON + bool + default n select LIBUKDEBUG select LIBUKALLOC select LIBUKSCHED + select LIBNEWLIBC + select LIBNEWLIBC_WANT_IO_C99_FORMATS if LIBNEWLIBC + select LIBNEWLIBC_LINUX_ERRNO_EXTENSIONS if LIBNEWLIBC + select LIBPTHREAD_EMBEDDED + select UKSYSINFO + select LIBPOSIX_LIBDL + select LIBLWIP + select LWIP_IPV6 + +config LIBREDIS_SERVER + bool "Redis server" + default y + select LIBREDIS_COMMON + select LIBREDIS_HIREDIS + imply LIBREDIS_LUA + help + Build the Redis server library. + +config LIBREDIS_CLIENT + bool "Redis client" + default n + select LIBREDIS_COMMON + select LIBREDIS_HIREDIS + help + Build the Redis client library. + +config LIBREDIS_LUA + bool "Use internal Lua implementation" + default n + +config LIBREDIS_HIREDIS + bool "Use internal Hiredis implementation" + default n +endif diff --git a/Makefile.uk b/Makefile.uk new file mode 100644 index 0000000..35287ba --- /dev/null +++ b/Makefile.uk @@ -0,0 +1,234 @@ +# SPDX-License-Identifier: BSD-3-Clause +# +# Redis Makefile.uk +# +# Authors: Bogdan Lascu <lascu.bogdan96@xxxxxxxxx> +# Costin Lupu <costin.lupu@xxxxxxxxx> +# +# Copyright (c) 2019, University Politehnica of Bucharest. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. Neither the name of the copyright holder nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +# THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY. +# + +################################################################################ +# Library registration +################################################################################ +$(eval $(call addlib_s,libredis,$(CONFIG_LIBREDIS))) +$(eval $(call addlib_s,libredis_lua,$(CONFIG_LIBREDIS_LUA))) +$(eval $(call addlib_s,libredis_hiredis,$(CONFIG_LIBREDIS_HIREDIS))) +$(eval $(call addlib_s,libredis_common,$(CONFIG_LIBREDIS_COMMON))) +$(eval $(call addlib_s,libredis_server,$(CONFIG_LIBREDIS_SERVER))) +$(eval $(call addlib_s,libredis_client,$(CONFIG_LIBREDIS_CLIENT))) + +################################################################################ +# Sources +################################################################################ +LIBREDIS_VERSION=5.0.6 +LIBREDIS_URL=https://github.com/antirez/redis/archive/$(LIBREDIS_VERSION).zip +LIBREDIS_BASENAME=redis-$(LIBREDIS_VERSION) +LIBREDIS_PATCHDIR=$(LIBREDIS_BASE)/patches +$(eval $(call fetch,libredis,$(LIBREDIS_URL))) +$(eval $(call patch,libredis,$(LIBREDIS_PATCHDIR),$(LIBREDIS_BASENAME))) + +################################################################################ +# Helpers +################################################################################ +LIBREDIS_SRC = $(LIBREDIS_ORIGIN)/$(LIBREDIS_BASENAME)/src +LIBREDIS_DEPS = $(LIBREDIS_ORIGIN)/$(LIBREDIS_BASENAME)/deps + +################################################################################ +# Library includes +################################################################################ +CINCLUDES-y += -I$(LIBREDIS_BASE)/include +CXXINCLUDES-y += -I$(LIBREDIS_BASE)/include + +LIBREDIS_CINCLUDES-$(CONFIG_LIBREDIS_HIREDIS) += -I$(LIBREDIS_DEPS)/hiredis +LIBREDIS_CINCLUDES-$(CONFIG_LIBREDIS_LUA) += -I$(LIBREDIS_DEPS)/lua/src + +################################################################################ +# Flags +################################################################################ +# Suppress some warnings to make the build process look neater +LIBREDIS_FLAGS_SUPPRESS = -Wno-unused-parameter -Wno-unused-variable \ + -Wno-unused-value -Wno-implicit-fallthrough -Wno-char-subscripts \ + -Wno-misleading-indentation +LIBREDIS_CFLAGS-y += $(LIBREDIS_FLAGS_SUPPRESS) + +################################################################################ +# Redis internal Lua +################################################################################ +LIBREDIS_LUA_CFLAGS-y += $(LIBREDIS_CFLAGS-y) +LIBREDIS_LUA_CFLAGS-y += -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' + +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/fpconv.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/lapi.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/lauxlib.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/lbaselib.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/lcode.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/ldblib.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/ldebug.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/ldo.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/ldump.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/lfunc.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/lgc.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/linit.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/liolib.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/llex.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/lmathlib.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/lmem.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/loadlib.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/lobject.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/lopcodes.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/loslib.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/lparser.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/lstate.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/lstring.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/lstrlib.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/ltable.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/ltablib.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/ltm.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/lua_bit.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/lua_cjson.c +LIBREDIS_LUA_LUA_CJSON_FLAGS-y += -Wno-sign-compare +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/lua_cmsgpack.c +LIBREDIS_LUA_LUA_CMSGPACK_FLAGS-y += -Wno-sign-compare +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/lua_struct.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/lundump.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/lvm.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/lzio.c +LIBREDIS_LUA_SRCS-y += $(LIBREDIS_DEPS)/lua/src/strbuf.c + +################################################################################ +# Redis internal Hiredis +################################################################################ +LIBREDIS_HIREDIS_CFLAGS-y += $(LIBREDIS_CFLAGS-y) + +LIBREDIS_HIREDIS_SRCS-y += $(LIBREDIS_DEPS)/hiredis/async.c +LIBREDIS_HIREDIS_SRCS-y += $(LIBREDIS_DEPS)/hiredis/hiredis.c +LIBREDIS_HIREDIS_SRCS-y += $(LIBREDIS_DEPS)/hiredis/net.c +LIBREDIS_HIREDIS_SRCS-y += $(LIBREDIS_DEPS)/hiredis/read.c +#LIBREDIS_HIREDIS_SRCS-y += $(LIBREDIS_DEPS)/hiredis/sds.c +LIBREDIS_HIREDIS_SRCS-y += $(LIBREDIS_SRC)/sds.c + +################################################################################ +# Functionality shared between server and client +################################################################################ +LIBREDIS_COMMON_CFLAGS-y += $(LIBREDIS_CFLAGS-y) +LIBREDIS_COMMON_CFLAGS-y += -Wno-missing-field-initializers +LIBREDIS_COMMON_CFLAGS-y += -DREDIS_STATIC='' +LIBREDIS_COMMON_CINCLUDES-y += $(LIBREDIS_CINCLUDES-y) + +LIBREDIS_COMMON_SRCS-y += $(LIBREDIS_SRC)/adlist.c +LIBREDIS_COMMON_SRCS-y += $(LIBREDIS_SRC)/ae.c +LIBREDIS_COMMON_SRCS-y += $(LIBREDIS_SRC)/anet.c +LIBREDIS_COMMON_SRCS-y += $(LIBREDIS_SRC)/crc16.c +LIBREDIS_COMMON_SRCS-y += $(LIBREDIS_SRC)/crc64.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/debug.c +LIBREDIS_COMMON_SRCS-y += $(LIBREDIS_SRC)/dict.c +LIBREDIS_COMMON_SRCS-y += $(LIBREDIS_SRC)/release.c +LIBREDIS_COMMON_SRCS-y += $(LIBREDIS_SRC)/siphash.c +LIBREDIS_COMMON_SRCS-y += $(LIBREDIS_SRC)/zmalloc.c + +################################################################################ +# Redis server +################################################################################ +LIBREDIS_SERVER_CFLAGS-y += $(LIBREDIS_COMMON_CFLAGS-y) +LIBREDIS_SERVER_CINCLUDES-y += $(LIBREDIS_COMMON_CINCLUDES-y) + +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/aof.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/bio.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/bitops.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/blocked.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/childinfo.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/cluster.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/config.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/db.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/defrag.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/endianconv.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/evict.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/expire.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/geo.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/geohash.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/geohash_helper.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/hyperloglog.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/intset.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/latency.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/lazyfree.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/listpack.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/localtime.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/lolwut.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/lolwut5.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/lzf_c.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/lzf_d.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/memtest.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/module.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/multi.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/networking.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/notify.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/object.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/pqsort.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/pubsub.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/quicklist.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/rand.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/rax.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/rdb.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/redis-check-aof.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/redis-check-rdb.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/replication.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/rio.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/scripting.c +#LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/sds.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/sentinel.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/server.c +LIBREDIS_SERVER_SERVER_FLAGS-y += -Dmain=redis_server_main +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/setproctitle.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/sha1.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/slowlog.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/sort.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/sparkline.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/syncio.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/t_hash.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/t_list.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/t_set.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/t_stream.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/t_string.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/t_zset.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/util.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/ziplist.c +LIBREDIS_SERVER_SRCS-y += $(LIBREDIS_SRC)/zipmap.c + +################################################################################ +# Redis client +################################################################################ +LIBREDIS_CLIENT_CFLAGS-y += $(LIBREDIS_COMMON_CFLAGS-y) +LIBREDIS_CLIENT_CINCLUDES-y += $(LIBREDIS_COMMON_CINCLUDES-y) +LIBREDIS_CLIENT_CINCLUDES-y += -I$(LIBREDIS_DEPS)/linenoise + +LIBREDIS_CLIENT_SRCS-y += $(LIBREDIS_SRC)/redis-cli.c +LIBREDIS_CLIENT_REDIS-CLI_FLAGS-y += -Dmain=redis_client_main +LIBREDIS_CLIENT_SRCS-y += $(LIBREDIS_DEPS)/linenoise/linenoise.c diff --git a/patches/0001-hiredis-Use-linux-macros-for-Unikraft-as-well.patch b/patches/0001-hiredis-Use-linux-macros-for-Unikraft-as-well.patch new file mode 100644 index 0000000..848c1fe --- /dev/null +++ b/patches/0001-hiredis-Use-linux-macros-for-Unikraft-as-well.patch @@ -0,0 +1,26 @@ +From b715e80ac71da7b13715e223d9169d11c71ad7ff Mon Sep 17 00:00:00 2001 +From: Costin Lupu <costin.lupu@xxxxxxxxx> +Date: Fri, 1 Nov 2019 12:57:22 +0200 +Subject: [UNIKRAFT PATCH] hiredis: Use linux macros for Unikraft as well + +Signed-off-by: Costin Lupu <costin.lupu@xxxxxxxxx> +--- + deps/hiredis/fmacros.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/deps/hiredis/fmacros.h b/deps/hiredis/fmacros.h +index 9a56643..1c9828b 100644 +--- a/deps/hiredis/fmacros.h ++++ b/deps/hiredis/fmacros.h +@@ -1,7 +1,7 @@ + #ifndef __HIREDIS_FMACRO_H + #define __HIREDIS_FMACRO_H + +-#if defined(__linux__) ++#if defined(__linux__) || defined(__Unikraft__) + #define _BSD_SOURCE + #define _DEFAULT_SOURCE + #endif +-- +2.20.1 + diff --git a/patches/0002-src-sds.h-Declare-SDS_INIT-as-extern.patch b/patches/0002-src-sds.h-Declare-SDS_INIT-as-extern.patch new file mode 100644 index 0000000..30d886d --- /dev/null +++ b/patches/0002-src-sds.h-Declare-SDS_INIT-as-extern.patch @@ -0,0 +1,28 @@ +From 3244c867fd93021e311d425aae6aee0256b06179 Mon Sep 17 00:00:00 2001 +From: Costin Lupu <costin.lupu@xxxxxxxxx> +Date: Sat, 16 Nov 2019 22:39:14 +0200 +Subject: [UNIKRAFT PATCH] src/sds.h: Declare SDS_INIT as extern + +This should be also upstreamed. + +Signed-off-by: Costin Lupu <costin.lupu@xxxxxxxxx> +--- + src/sds.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/sds.h b/src/sds.h +index 1bdb60d..adcc12c 100644 +--- a/src/sds.h ++++ b/src/sds.h +@@ -34,7 +34,7 @@ + #define __SDS_H + + #define SDS_MAX_PREALLOC (1024*1024) +-const char *SDS_NOINIT; ++extern const char *SDS_NOINIT; + + #include <sys/types.h> + #include <stdarg.h> +-- +2.20.1 + diff --git a/patches/0003-Make-bytesToHuman-definitions-static.patch b/patches/0003-Make-bytesToHuman-definitions-static.patch new file mode 100644 index 0000000..5d8d30f --- /dev/null +++ b/patches/0003-Make-bytesToHuman-definitions-static.patch @@ -0,0 +1,43 @@ +From cb6a16e1526741a5e4b0feea12e88b92db99672b Mon Sep 17 00:00:00 2001 +From: Costin Lupu <costin.lupu@xxxxxxxxx> +Date: Sat, 16 Nov 2019 22:45:13 +0200 +Subject: [UNIKRAFT PATCH] Make bytesToHuman() definitions static + +This should be either upstreamed or we should refactor and use a single function +and then upstream that second solution. + +Signed-off-by: Costin Lupu <costin.lupu@xxxxxxxxx> +--- + src/redis-cli.c | 2 +- + src/server.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/redis-cli.c b/src/redis-cli.c +index 480921c..9f1a14e 100644 +--- a/src/redis-cli.c ++++ b/src/redis-cli.c +@@ -6684,7 +6684,7 @@ static long getLongInfoField(char *info, char *field) { + + /* Convert number of bytes into a human readable string of the form: + * 100B, 2G, 100M, 4K, and so forth. */ +-void bytesToHuman(char *s, long long n) { ++static void bytesToHuman(char *s, long long n) { + double d; + + if (n < 0) { +diff --git a/src/server.c b/src/server.c +index 7f0acaa..2524a12 100644 +--- a/src/server.c ++++ b/src/server.c +@@ -3058,7 +3058,7 @@ NULL + + /* Convert an amount of bytes into a human readable string in the form + * of 100B, 2G, 100M, 4K, and so forth. */ +-void bytesToHuman(char *s, unsigned long long n) { ++static void bytesToHuman(char *s, unsigned long long n) { + double d; + + if (n < 1024) { +-- +2.20.1 + diff --git a/patches/0004-src-redis-cli.c-Disable-_serverAssert-definition.patch b/patches/0004-src-redis-cli.c-Disable-_serverAssert-definition.patch new file mode 100644 index 0000000..c2d2480 --- /dev/null +++ b/patches/0004-src-redis-cli.c-Disable-_serverAssert-definition.patch @@ -0,0 +1,42 @@ +From fdec8931eaa02585033e00a16926a3b2a1b94661 Mon Sep 17 00:00:00 2001 +From: Costin Lupu <costin.lupu@xxxxxxxxx> +Date: Sat, 16 Nov 2019 22:52:28 +0200 +Subject: [UNIKRAFT PATCH] src/redis-cli.c: Disable _serverAssert() definition + +Signed-off-by: Costin Lupu <costin.lupu@xxxxxxxxx> +--- + src/redis-cli.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/redis-cli.c b/src/redis-cli.c +index 9f1a14e..0bf48be 100644 +--- a/src/redis-cli.c ++++ b/src/redis-cli.c +@@ -28,6 +28,9 @@ + * POSSIBILITY OF SUCH DAMAGE. + */ + ++#ifdef __Unikraft__ ++#include <uk/config.h> ++#endif + #include "fmacros.h" + #include "version.h" + +@@ -432,12 +435,14 @@ void dictListDestructor(void *privdata, void *val) + listRelease((list*)val); + } + ++#ifndef CONFIG_LIBREDIS_SERVER + /* _serverAssert is needed by dict */ + void _serverAssert(const char *estr, const char *file, int line) { + fprintf(stderr, "=== ASSERTION FAILED ==="); + fprintf(stderr, "==> %s:%d '%s' is not true",file,line,estr); + *((char*)-1) = 'x'; + } ++#endif + + /*------------------------------------------------------------------------------ + * Help functions +-- +2.20.1 + -- 2.20.1 _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |