luamodules/luv: add libuv lua binding luv.
Initial work done by Michael Mogenson. Signed-off-by: Xu Xingliang <xuxingliang@xiaomi.com>
This commit is contained in:
parent
8175d89cd3
commit
80ed2b96d3
2
interpreters/luamodules/luv/.gitignore
vendored
Normal file
2
interpreters/luamodules/luv/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
luv/
|
||||||
|
*.tar.gz
|
141
interpreters/luamodules/luv/0001-fix-compile-warnings.patch
Normal file
141
interpreters/luamodules/luv/0001-fix-compile-warnings.patch
Normal file
@ -0,0 +1,141 @@
|
|||||||
|
From 809314f3c818ddcfdc72e2b3adb4faf350bf201c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Xu Xingliang <xuxingliang@xiaomi.com>
|
||||||
|
Date: Fri, 2 Dec 2022 13:07:17 +0800
|
||||||
|
Subject: [PATCH] fix compile warnings
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
luv/src/fs.c:431:14: warning: declaration of ‘data’ shadows a previous local [-Wshadow]
|
||||||
|
luv/src/private.h:114:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
|
||||||
|
|
||||||
|
Signed-off-by: Xu Xingliang <xuxingliang@xiaomi.com>
|
||||||
|
---
|
||||||
|
src/fs.c | 14 +++++++-------
|
||||||
|
src/luv.h | 2 +-
|
||||||
|
src/private.h | 2 +-
|
||||||
|
src/thread.c | 2 +-
|
||||||
|
src/work.c | 6 +++---
|
||||||
|
5 files changed, 13 insertions(+), 13 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/fs.c b/src/fs.c
|
||||||
|
index 344d602..ea2a80a 100644
|
||||||
|
--- a/src/fs.c
|
||||||
|
+++ b/src/fs.c
|
||||||
|
@@ -428,14 +428,14 @@ static void luv_fs_cb(uv_fs_t* req) {
|
||||||
|
// variable 'nargs' to the number of return values
|
||||||
|
#define FS_CALL_NORETURN(func, req, ...) { \
|
||||||
|
int ret, sync; \
|
||||||
|
- luv_req_t* data = (luv_req_t*)req->data; \
|
||||||
|
- sync = data->callback_ref == LUA_NOREF; \
|
||||||
|
- ret = uv_fs_##func(data->ctx->loop, req, __VA_ARGS__, \
|
||||||
|
+ luv_req_t* lreq = (luv_req_t*)req->data; \
|
||||||
|
+ sync = lreq->callback_ref == LUA_NOREF; \
|
||||||
|
+ ret = uv_fs_##func(lreq->ctx->loop, req, __VA_ARGS__, \
|
||||||
|
sync ? NULL : luv_fs_cb); \
|
||||||
|
if (req->fs_type != UV_FS_ACCESS && ret < 0) { \
|
||||||
|
lua_pushnil(L); \
|
||||||
|
if (fs_req_has_dest_path(req)) { \
|
||||||
|
- lua_rawgeti(L, LUA_REGISTRYINDEX, data->data_ref); \
|
||||||
|
+ lua_rawgeti(L, LUA_REGISTRYINDEX, lreq->data_ref); \
|
||||||
|
const char* dest_path = lua_tostring(L, -1); \
|
||||||
|
lua_pop(L, 1); \
|
||||||
|
lua_pushfstring(L, "%s: %s: %s -> %s", \
|
||||||
|
@@ -455,7 +455,7 @@ static void luv_fs_cb(uv_fs_t* req) {
|
||||||
|
} \
|
||||||
|
lua_pushstring(L, uv_err_name(req->result)); \
|
||||||
|
if(req->fs_type != UV_FS_SCANDIR) { \
|
||||||
|
- luv_cleanup_req(L, data); \
|
||||||
|
+ luv_cleanup_req(L, lreq); \
|
||||||
|
req->data = NULL; \
|
||||||
|
uv_fs_req_cleanup(req); \
|
||||||
|
} \
|
||||||
|
@@ -464,13 +464,13 @@ static void luv_fs_cb(uv_fs_t* req) {
|
||||||
|
else if (sync) { \
|
||||||
|
nargs = push_fs_result(L, req); \
|
||||||
|
if(req->fs_type != UV_FS_SCANDIR) { \
|
||||||
|
- luv_cleanup_req(L, data); \
|
||||||
|
+ luv_cleanup_req(L, lreq); \
|
||||||
|
req->data = NULL; \
|
||||||
|
uv_fs_req_cleanup(req); \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
else { \
|
||||||
|
- lua_rawgeti(L, LUA_REGISTRYINDEX, data->req_ref); \
|
||||||
|
+ lua_rawgeti(L, LUA_REGISTRYINDEX, lreq->req_ref); \
|
||||||
|
nargs = 1; \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
diff --git a/src/luv.h b/src/luv.h
|
||||||
|
index 5921e15..ad02329 100644
|
||||||
|
--- a/src/luv.h
|
||||||
|
+++ b/src/luv.h
|
||||||
|
@@ -147,7 +147,7 @@ LUALIB_API void luv_set_cthread(lua_State* L, luv_CFcpcall cpcall);
|
||||||
|
*/
|
||||||
|
LUALIB_API int luaopen_luv (lua_State *L);
|
||||||
|
|
||||||
|
-typedef lua_State* (*luv_acquire_vm)();
|
||||||
|
+typedef lua_State* (*luv_acquire_vm)(void);
|
||||||
|
typedef void (*luv_release_vm)(lua_State* L);
|
||||||
|
LUALIB_API void luv_set_thread_cb(luv_acquire_vm acquire, luv_release_vm release);
|
||||||
|
|
||||||
|
diff --git a/src/private.h b/src/private.h
|
||||||
|
index 1e921a4..b4ea7fb 100644
|
||||||
|
--- a/src/private.h
|
||||||
|
+++ b/src/private.h
|
||||||
|
@@ -111,7 +111,7 @@ static int luv_arg_type_error(lua_State* L, int index, const char* fmt);
|
||||||
|
static int luv_optboolean(lua_State*L, int idx, int defaultval);
|
||||||
|
|
||||||
|
/* From thread.c */
|
||||||
|
-static lua_State* luv_thread_acquire_vm();
|
||||||
|
+static lua_State* luv_thread_acquire_vm(void);
|
||||||
|
|
||||||
|
/* From process.c */
|
||||||
|
static int luv_parse_signal(lua_State* L, int slot);
|
||||||
|
diff --git a/src/thread.c b/src/thread.c
|
||||||
|
index 36041af..5de5556 100644
|
||||||
|
--- a/src/thread.c
|
||||||
|
+++ b/src/thread.c
|
||||||
|
@@ -24,7 +24,7 @@ typedef struct {
|
||||||
|
luv_thread_arg_t args;
|
||||||
|
} luv_thread_t;
|
||||||
|
|
||||||
|
-static lua_State* luv_thread_acquire_vm() {
|
||||||
|
+static lua_State* luv_thread_acquire_vm(void) {
|
||||||
|
lua_State* L = luaL_newstate();
|
||||||
|
|
||||||
|
// Add in the lua standard libraries
|
||||||
|
diff --git a/src/work.c b/src/work.c
|
||||||
|
index 7e42641..b51bfd1 100644
|
||||||
|
--- a/src/work.c
|
||||||
|
+++ b/src/work.c
|
||||||
|
@@ -127,7 +127,7 @@ static int luv_work_cb(lua_State* L) {
|
||||||
|
return LUA_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static lua_State* luv_work_acquire_vm()
|
||||||
|
+static lua_State* luv_work_acquire_vm(void)
|
||||||
|
{
|
||||||
|
lua_State* L = uv_key_get(&tls_vmkey);
|
||||||
|
if (L == NULL)
|
||||||
|
@@ -245,7 +245,7 @@ static const luaL_Reg luv_work_ctx_methods[] = {
|
||||||
|
{NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
-static void luv_key_init_once()
|
||||||
|
+static void luv_key_init_once(void)
|
||||||
|
{
|
||||||
|
const char* val;
|
||||||
|
int status = uv_key_create(&tls_vmkey);
|
||||||
|
@@ -287,7 +287,7 @@ static void luv_key_init_once()
|
||||||
|
idx_vms = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static void luv_work_cleanup()
|
||||||
|
+static void luv_work_cleanup(void)
|
||||||
|
{
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
30
interpreters/luamodules/luv/Kconfig
Normal file
30
interpreters/luamodules/luv/Kconfig
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
#
|
||||||
|
# For a description of the syntax of this configuration file,
|
||||||
|
# see the file kconfig-language.txt in the NuttX tools repository.
|
||||||
|
#
|
||||||
|
|
||||||
|
config LUA_LUV_MODULE
|
||||||
|
bool "Lua Luv module"
|
||||||
|
default n
|
||||||
|
depends on INTERPRETERS_LUA && LIBUV
|
||||||
|
select LIBC_EXECFUNCS
|
||||||
|
select NET
|
||||||
|
select NETDEV_IFINDEX
|
||||||
|
select NET_SOCKOPTS
|
||||||
|
select NET_TCP
|
||||||
|
select NET_UDP
|
||||||
|
select PSEUDOFS_SOFTLINKS
|
||||||
|
select SCHED_ATEXIT
|
||||||
|
select SCHED_HAVE_PARENT
|
||||||
|
---help---
|
||||||
|
Bare libuv bindings for Lua
|
||||||
|
|
||||||
|
if LUA_LUV_MODULE
|
||||||
|
|
||||||
|
config LUA_LUV_VERSION
|
||||||
|
string "Luv version"
|
||||||
|
default "1.44.2-1"
|
||||||
|
---help---
|
||||||
|
Luv release version to fetch and build.
|
||||||
|
|
||||||
|
endif # LUA_LUV_MODULE
|
24
interpreters/luamodules/luv/Make.defs
Normal file
24
interpreters/luamodules/luv/Make.defs
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
############################################################################
|
||||||
|
# apps/interpreters/luamodules/luv/Make.defs
|
||||||
|
#
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
# contributor license agreements. See the NOTICE file distributed with
|
||||||
|
# this work for additional information regarding copyright ownership. The
|
||||||
|
# ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||||
|
# "License"); you may not use this file except in compliance with the
|
||||||
|
# License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
#
|
||||||
|
############################################################################
|
||||||
|
|
||||||
|
ifneq ($(CONFIG_LUA_LUV_MODULE),)
|
||||||
|
CONFIGURED_APPS += $(APPDIR)/interpreters/luamodules/luv
|
||||||
|
|
||||||
|
endif
|
67
interpreters/luamodules/luv/Makefile
Normal file
67
interpreters/luamodules/luv/Makefile
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
############################################################################
|
||||||
|
# apps/interpreters/luamodules/luv/Makefile
|
||||||
|
#
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
# contributor license agreements. See the NOTICE file distributed with
|
||||||
|
# this work for additional information regarding copyright ownership. The
|
||||||
|
# ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||||
|
# "License"); you may not use this file except in compliance with the
|
||||||
|
# License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
#
|
||||||
|
############################################################################
|
||||||
|
|
||||||
|
include $(APPDIR)/Make.defs
|
||||||
|
|
||||||
|
# Luv library
|
||||||
|
|
||||||
|
LUV_VERSION = $(patsubst "%",%,$(strip $(CONFIG_LUA_LUV_VERSION)))
|
||||||
|
LUV_TARBALL = luv-$(LUV_VERSION).tar.gz
|
||||||
|
LUV_UNPACK = luv
|
||||||
|
LUV_URL_BASE = https://github.com/luvit/luv/releases/download/
|
||||||
|
LUV_URL = $(LUV_URL_BASE)/$(LUV_VERSION)/$(LUV_TARBALL)
|
||||||
|
LUV_SRC = $(LUV_UNPACK)$(DELIM)src
|
||||||
|
|
||||||
|
VPATH += $(LUV_SRC)
|
||||||
|
CSRCS = luv.c
|
||||||
|
|
||||||
|
# Luv download and unpack
|
||||||
|
|
||||||
|
$(LUV_TARBALL):
|
||||||
|
$(Q) echo "Downloading $(LUV_TARBALL)"
|
||||||
|
$(Q) curl -O -L $(LUV_URL)
|
||||||
|
|
||||||
|
$(LUV_UNPACK): $(LUV_TARBALL)
|
||||||
|
$(Q) echo "Unpacking $(LUV_TARBALL) to $(LUV_UNPACK)"
|
||||||
|
$(Q) tar -xvzf $(LUV_TARBALL)
|
||||||
|
$(Q) mv luv-$(LUV_VERSION) $(LUV_UNPACK)
|
||||||
|
$(Q) patch -d $(LUV_UNPACK) -p1 < 0001-fix-compile-warnings.patch
|
||||||
|
|
||||||
|
$(LUV_UNPACK)/.patch: $(LUV_UNPACK)
|
||||||
|
touch $(LUV_UNPACK)/.patch
|
||||||
|
|
||||||
|
# Download and unpack tarball if no git repo found
|
||||||
|
ifeq ($(wildcard $(LUV_UNPACK)/.git),)
|
||||||
|
distclean::
|
||||||
|
$(call DELDIR, $(LUV_UNPACK))
|
||||||
|
$(call DELFILE, $(LUV_TARBALL))
|
||||||
|
|
||||||
|
context:: $(LUV_UNPACK)/.patch
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Set LUAMODNAME and include Module.mk to add this module to the list of
|
||||||
|
# builtin modules for the Lua interpreter. LUAMODNAME should match the
|
||||||
|
# module's luaopen function.
|
||||||
|
|
||||||
|
LUAMODNAME = luv
|
||||||
|
|
||||||
|
include $(APPDIR)/interpreters/lua/Module.mk
|
||||||
|
|
||||||
|
include $(APPDIR)/Application.mk
|
Loading…
x
Reference in New Issue
Block a user