add plugin luarocks

LuaRocks plugin adds

  * package "luarocks"
  * several packages with rocks (lpeg, luasocket, llthreads2, lua-rapidjson)
  * plugins/luarocks/README.md
  * virtual rock "all-rocks" depending on all rocks
  * short test for rocks
pull/1017/head
Boris Nagaev 9 years ago
parent 08488f9ecc
commit 43cb3196e6

@ -0,0 +1,94 @@
LuaRocks plugin
===============
Short description of LuaRocks
-----------------------------
Hundreds of [Lua][lua] packages are distributed via [LuaRocks][luarocks].
LuaRocks is the package manager for Lua. It allows you to create and
install Luamodules as self-contained packages called rocks. You can
download and install LuaRocks on Unix and Windows.
Lua rocks are similar to Ruby gems, Python eggs or JavaScript NPM. Command
`luarocks install <rock>` downloads a rock from [luarocks.org][luarocks]
(or other luarocks server), compiles C files (modules) to shared libraries
and installs (copies) shared libraries and Lua files to the directory
where luarocks is installed. Installed rocks can be loaded from Lua with
function `require`.
Example:
```
$ luarocks install luasocket
$ lua -e 'http = require "socket.http"; print(http.request("http://mxe.cc"))'
<!DOCTYPE html>
....
```
LuaRocks can used with `make`, `cmake`, custom or builtin
[back-ends][backends].
LuaRocks in MXE
---------------
LuaRocks and some popular rocks were ported to MXE as a plugin.
LuaRocks can now be used in the same way as CMake or Make.
Package `lua` installs native executable usr/bin/lua and
cross-compiled lua executable usr/<target>/bin/lua.exe. Native
executable is needed since LuaRocks is written in Lua. Cross-compiled
one is needed to run Lua scripts loading cross-compiled lua modules.
Package `luarocks` was added. Luarocks was patched to support new
platform `mxe`, inherited from platform `unix`. It uses mix of system
tools (e.g., `openssl`, `ln`, `mkdir`), MXE build chain
(`i686-w64-mingw32.shared-gcc`, `i686-w64-mingw32.shared-cmake`) and some
Windows variables (e.g., "dll" extension for shared libraries). The
package is shared-only because Lua loads modules in runtime. It
creates prefixed luarocks tool in `usr/bin`. It also creates prefixed
wine+lua wrapper aware of locations of dll and lua files installed.
This script can be used to test modules in Linux as if running them in
Windows.
There was a difficult choice if `mxe` platform of luarocks is inherited
from `windows` or `unix` platform. I tried both and it is less patching
for `unix`. For `windows` even build tools differ, while for `unix` a
typical rock builds without patching or with minor patching
(as other MXE packages).
LuaRocks can be used to install rocks. With ideal rock it works as follows:
```
$ i686-w64-mingw32.shared-luarocks install <rock>
```
This command downloads rockspeck, downloads sources, verifies checksum
(useless thing, because checksum is compared to the value from rockspec
file, which itself is neither verified nor signed), builds and installs.
LuaRocks is not used to download source tarballs (as said
above, it doesn't verify checksums properly) using MXE's downloading
and verifying facilities instead. Luarocks is used as builder,
installer and Lua library (it installs Lua files to
`usr/i686-w64-mingw32.shared/share/lua/5.3/luarocks/`).
Build all rocks:
```
$ make all-rocks MXE_PLUGIN_DIRS=plugins/luarocks MXE_TARGETS='i686-w64-mingw32.shared x86_64-w64-mingw32.shared'
```
Run tests (requires wine):
```
$ ./usr/bin/i686-w64-mingw32.shared-lua plugins/luarocks/test.lua
```
See also:
* [LuaRocks site][luarocks]
* [LuaRocks wiki][wiki]
* [the thread in MXE mailing list about LuaRocks in MXE][thread]
[lua]:http://lua.org/
[luarocks]:https://luarocks.org/
[backends]:https://github.com/keplerproject/luarocks/wiki/Rockspec-format#Build_backends
[wiki]:https://github.com/keplerproject/luarocks/wiki/
[thread]:http://lists.nongnu.org/archive/html/mingw-cross-env-list/2015-10/msg00008.html

@ -0,0 +1,5 @@
# This file is part of MXE.
# See index.html for further information.
PKG := all-rocks
$(PKG)_DEPS := lpeg luasocket llthreads2 lua-rapidjson

@ -0,0 +1,33 @@
This file is part of MXE.
See index.html for further information.
From 1d8e959ee39e7a46e150e722af12252448c7ac22 Mon Sep 17 00:00:00 2001
From: Boris Nagaev <bnagaev@gmail.com>
Date: Sun, 11 Oct 2015 01:56:36 +0100
Subject: [PATCH] link with kernel32 on MXE
---
rockspecs/lua-llthreads2-scm-0.rockspec | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/rockspecs/lua-llthreads2-scm-0.rockspec b/rockspecs/lua-llthreads2-scm-0.rockspec
index 8f907b8..26d5b80 100644
--- a/rockspecs/lua-llthreads2-scm-0.rockspec
+++ b/rockspecs/lua-llthreads2-scm-0.rockspec
@@ -27,6 +27,13 @@ build = {
}
}
},
+ mxe = {
+ modules = {
+ llthreads2 = {
+ libraries = {"kernel32"},
+ }
+ }
+ },
windows = {
modules = {
llthreads2 = {
--
2.1.4

@ -0,0 +1,23 @@
# This file is part of MXE.
# See index.html for further information.
PKG := llthreads2
$(PKG)_IGNORE :=
$(PKG)_VERSION := 0.1.3
$(PKG)_CHECKSUM := 8c6fc7966cdcc15ae2f89f66ae72f6727a985e7d254f139ecf75a50956a3e8e4
$(PKG)_SUBDIR := lua-$(PKG)-$($(PKG)_VERSION)
$(PKG)_FILE := $($(PKG)_SUBDIR).tar.gz
$(PKG)_URL := https://github.com/moteus/lua-llthreads2/archive/v$($(PKG)_VERSION).tar.gz
$(PKG)_DEPS := gcc luarocks
define $(PKG)_UPDATE
$(call MXE_GET_GITHUB_TAGS, moteus/lua-llthreads2) | \
$(SED) 's,^v,,g'
endef
# shared-only because luarocks is shared-only
define $(PKG)_BUILD_SHARED
cd '$(1)' && '$(TARGET)-luarocks' make \
rockspecs/lua-llthreads2-scm-0.rockspec
endef

@ -0,0 +1,55 @@
This file is part of MXE.
See index.html for further information.
From f271a094f8add34df3f31ac6fb12c9fe683f763a Mon Sep 17 00:00:00 2001
From: Boris Nagaev <bnagaev@gmail.com>
Date: Sat, 10 Oct 2015 16:40:35 +0100
Subject: [PATCH] add rockspec
Source:https://luarocks.org/modules/gvvaughan/lpeg/1.0.0-1
---
lpeg-1.0.0-1.rockspec | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
create mode 100644 lpeg-1.0.0-1.rockspec
diff --git a/lpeg-1.0.0-1.rockspec b/lpeg-1.0.0-1.rockspec
new file mode 100644
index 0000000..b4fdd27
--- /dev/null
+++ b/lpeg-1.0.0-1.rockspec
@@ -0,0 +1,32 @@
+package = "LPeg"
+version = "1.0.0-1"
+source = {
+ url = "http://www.inf.puc-rio.br/~roberto/lpeg/lpeg-1.0.0.tar.gz",
+ md5 = "0aec64ccd13996202ad0c099e2877ece",
+}
+description = {
+ summary = "Parsing Expression Grammars For Lua",
+ detailed = [[
+ LPeg is a new pattern-matching library for Lua, based on Parsing
+ Expression Grammars (PEGs). The nice thing about PEGs is that it
+ has a formal basis (instead of being an ad-hoc set of features),
+ allows an efficient and simple implementation, and does most things
+ we expect from a pattern-matching library (and more, as we can
+ define entire grammars).
+ ]],
+ homepage = "http://www.inf.puc-rio.br/~roberto/lpeg.html",
+ maintainer = "Gary V. Vaughan <gary@vaughan.pe>",
+ license = "MIT/X11"
+}
+dependencies = {
+ "lua >= 5.1"
+}
+build = {
+ type = "builtin",
+ modules = {
+ lpeg = {
+ "lpcap.c", "lpcode.c", "lpprint.c", "lptree.c", "lpvm.c"
+ },
+ re = "re.lua"
+ }
+}
--
2.1.4

@ -0,0 +1,23 @@
# This file is part of MXE.
# See index.html for further information.
PKG := lpeg
$(PKG)_IGNORE :=
$(PKG)_VERSION := 1.0.0
$(PKG)_CHECKSUM := 10190ae758a22a16415429a9eb70344cf29cbda738a6962a9f94a732340abf8e
$(PKG)_SUBDIR := lpeg-$($(PKG)_VERSION)
$(PKG)_FILE := $($(PKG)_SUBDIR).tar.gz
$(PKG)_URL := http://www.inf.puc-rio.br/~roberto/$(PKG)/$($(PKG)_FILE)
$(PKG)_DEPS := gcc luarocks
define $(PKG)_UPDATE
$(WGET) -q -O- 'http://www.inf.puc-rio.br/~roberto/lpeg/' | \
$(SED) -n 's,.*lpeg-\([0-9][^>]*\)\.tar.*,\1,p' | \
sort -h | tail -1
endef
# shared-only because luarocks is shared-only
define $(PKG)_BUILD_SHARED
cd '$(1)' && '$(TARGET)-luarocks' make
endef

@ -0,0 +1,82 @@
This file is part of MXE.
See index.html for further information.
From dbedfa6c3b350b6cb2c13d17790a17129ce28721 Mon Sep 17 00:00:00 2001
From: Boris Nagaev <bnagaev@gmail.com>
Date: Sun, 11 Oct 2015 22:47:50 +0200
Subject: [PATCH 1/2] use Unix file functions on MinGW
---
src/rapidjson.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/rapidjson.cpp b/src/rapidjson.cpp
index 3b5b129..955009f 100644
--- a/src/rapidjson.cpp
+++ b/src/rapidjson.cpp
@@ -54,7 +54,7 @@ static void setfuncs(lua_State* L, const luaL_Reg *funcs)
FILE* openForRead(const char* filename)
{
FILE* fp = NULL;
-#if WIN32
+#if WIN32 && !defined(__MINGW32__)
fopen_s(&fp, filename, "rb");
#else
fp = fopen(filename, "r");
@@ -66,7 +66,7 @@ FILE* openForRead(const char* filename)
FILE* openForWrite(const char* filename)
{
FILE* fp = NULL;
-#if WIN32
+#if WIN32 && !defined(__MINGW32__)
fopen_s(&fp, filename, "wb");
#else
fp = fopen(filename, "w");
--
1.7.10.4
From ad7426ad156f90dcf2b051fe125900caf5b8b2da Mon Sep 17 00:00:00 2001
From: Boris Nagaev <bnagaev@gmail.com>
Date: Sun, 11 Oct 2015 22:48:26 +0200
Subject: [PATCH 2/2] link with Lua libraries on MinGW and MXE
---
rapidjson-0.2.2-1.rockspec | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/rapidjson-0.2.2-1.rockspec b/rapidjson-0.2.2-1.rockspec
index 9efe7e1..6ad9188 100644
--- a/rapidjson-0.2.2-1.rockspec
+++ b/rapidjson-0.2.2-1.rockspec
@@ -27,6 +27,13 @@ dependencies = {
"lua >= 5.1"
}
+-- windows DLL needs link with importlib.
+local link = {
+ variables = {
+ LUA_LIBRARIES = "$(LUA_LIBDIR)/$(LUALIB)",
+ }
+}
+
-- cmake -Bbuild -H. -DBUILD_SHARED_LIBS=ON
-- cmake --build build --target install --config Release
build = {
@@ -39,10 +46,8 @@ build = {
},
-- Override default build options
platforms = {
- windows = {
- variables = {
- LUA_LIBRARIES = "$(LUA_LIBDIR)/$(LUALIB)", -- windows DLL needs link with importlib.
- }
- }
+ windows = link,
+ mingw = link,
+ mxe = link,
}
}
--
1.7.10.4

@ -0,0 +1,22 @@
# This file is part of MXE.
# See index.html for further information.
PKG := lua-rapidjson
$(PKG)_IGNORE :=
$(PKG)_VERSION := 0.2.2-1
$(PKG)_CHECKSUM := 10783d8633df3f50b1ad33c7de89d2a94a7d9cf45e2ce5217d0d2d5e77396fd2
$(PKG)_SUBDIR := $(PKG)-$($(PKG)_VERSION)
$(PKG)_FILE := $($(PKG)_SUBDIR).tar.gz
$(PKG)_URL := https://github.com/xpol/lua-rapidjson/archive/v$($(PKG)_VERSION).tar.gz
$(PKG)_DEPS := gcc luarocks
define $(PKG)_UPDATE
$(call MXE_GET_GITHUB_TAGS, xpol/lua-rapidjson) | \
$(SED) 's,^v,,g'
endef
# shared-only because luarocks is shared-only
define $(PKG)_BUILD_SHARED
cd '$(1)' && '$(TARGET)-luarocks' make
endef

@ -0,0 +1,83 @@
This file is part of MXE.
See index.html for further information.
From 5cd28e7a8f0de2539322ede15616904835a4dbe3 Mon Sep 17 00:00:00 2001
From: Boris Nagaev <bnagaev@gmail.com>
Date: Sat, 10 Oct 2015 17:45:24 +0100
Subject: [PATCH] platform MXE
diff --git a/src/luarocks/build/builtin.lua b/src/luarocks/build/builtin.lua
index 00fd09e..a4985e9 100644
--- a/src/luarocks/build/builtin.lua
+++ b/src/luarocks/build/builtin.lua
@@ -165,7 +165,7 @@ function builtin.run(rockspec)
add_flags(extras, "-Wl,-rpath,%s:", libdirs)
end
add_flags(extras, "-l%s", libraries)
- if cfg.is_platform("cygwin") then
+ if cfg.is_platform("cygwin") or cfg.is_platform("mxe") then
add_flags(extras, "-l%s", {"lua"})
end
return execute(variables.LD.." "..variables.LIBFLAG, "-o", library, "-L"..variables.LUA_LIBDIR, unpack(extras))
diff --git a/src/luarocks/cfg.lua b/src/luarocks/cfg.lua
index 99b4077..a17fbaa 100644
--- a/src/luarocks/cfg.lua
+++ b/src/luarocks/cfg.lua
@@ -118,6 +118,9 @@ elseif system and system:match("^Windows") then
elseif system and system:match("^MINGW") then
detected.windows = true
detected.mingw32 = true
+elseif system and system:match("^MXE") then
+ detected.unix = true
+ detected.mxe = true
else
detected.unix = true
-- Fall back to Unix in unknown systems.
@@ -430,6 +433,44 @@ if detected.unix then
defaults.web_browser = "xdg-open"
end
+if detected.mxe then
+ local MXE_ROOT, MXE_TARGET =
+ assert(site_config.LUAROCKS_PREFIX:match('^(.*)/usr/([^/]+)$'))
+ defaults.lib_extension = "dll"
+ defaults.external_lib_extension = "dll"
+ defaults.obj_extension = "obj"
+ defaults.external_deps_dirs = { site_config.LUAROCKS_PREFIX }
+ defaults.arch = "mxe-" .. MXE_TARGET
+ defaults.platforms = {"unix", "mxe"}
+ -- LUA_INCDIR and LUA_LIBDIR are defined in site_config.lua
+ defaults.variables.LUA_BINDIR = site_config.LUAROCKS_PREFIX .. "/bin"
+ defaults.cmake_generator = "Unix Makefiles"
+ defaults.variables.MAKE = os.getenv("MAKE")
+ defaults.variables.CMAKE = MXE_ROOT .. "/usr/bin/" .. MXE_TARGET .. "-cmake"
+ defaults.variables.CC = MXE_ROOT .. "/usr/bin/" .. MXE_TARGET .. "-gcc"
+ defaults.variables.LD = defaults.variables.CC
+ defaults.variables.CFLAGS = "-O2"
+ defaults.variables.LIBFLAG = "-shared"
+ defaults.variables.LUALIB = "liblua.dll.a"
+
+ defaults.export_path = "SET PATH=%s"
+ defaults.export_path_separator = ";"
+ defaults.export_lua_path = "SET LUA_PATH=%s"
+ defaults.export_lua_cpath = "SET LUA_CPATH=%s"
+ defaults.wrapper_suffix = ".bat"
+
+ defaults.external_deps_patterns = {
+ bin = { "?.exe", "?.bat" },
+ lib = { "?.dll.a", "lib?.dll.a" },
+ include = { "?.h" }
+ }
+ defaults.runtime_external_deps_patterns = {
+ bin = { "?.exe", "?.bat" },
+ lib = { "?.dll", "lib?.dll" },
+ include = { "?.h" }
+ }
+end
+
if detected.cygwin then
defaults.lib_extension = "so" -- can be overridden in the config file for mingw builds
defaults.arch = "cygwin-"..proc
--
2.1.4

@ -0,0 +1,43 @@
# This file is part of MXE.
# See index.html for further information.
PKG := luarocks
$(PKG)_IGNORE :=
$(PKG)_VERSION := 2.2.2
$(PKG)_CHECKSUM := 4f0427706873f30d898aeb1dfb6001b8a3478e46a5249d015c061fe675a1f022
$(PKG)_SUBDIR := luarocks-$($(PKG)_VERSION)
$(PKG)_FILE := $($(PKG)_SUBDIR).tar.gz
$(PKG)_URL := https://keplerproject.github.io/luarocks/releases/$($(PKG)_FILE)
$(PKG)_DEPS := gcc lua
lua_SHORTVER := $(call SHORT_PKG_VERSION,lua)
define $(PKG)_UPDATE
$(WGET) -q -O- 'https://keplerproject.github.io/luarocks/releases/' | \
$(SED) -n 's,.*luarocks-\([0-9][^>]*\)\.tar.*,\1,p' | \
sort -h | tail -1
endef
# shared-only because Lua loads modules in runtime
define $(PKG)_BUILD_SHARED
cd '$(1)' && ./configure \
--prefix='$(PREFIX)/$(TARGET)' \
--rocks-tree='$(PREFIX)/$(TARGET)' \
--lua-version='$(lua_SHORTVER)' \
--with-lua='$(PREFIX)/$(TARGET)' \
--with-lua-bin='$(PREFIX)/bin' \
--with-downloader='wget' \
--with-md5-checker='openssl'
$(MAKE) -C '$(1)' build install \
LUAROCKS_UNAME_S="MXE" \
LUAROCKS_UNAME_M="$(TARGET)"
ln -sf '$(PREFIX)/$(TARGET)/bin/luarocks' '$(PREFIX)/bin/$(TARGET)-luarocks'
# create wine wrapper for testing
echo 'LUA_PATH="$(PREFIX)/$(TARGET)/share/lua/$(lua_SHORTVER)/?.lua;$(PREFIX)/$(TARGET)/share/lua/$(lua_SHORTVER)/?/init.lua;$$LUA_PATH"' > '$(PREFIX)/bin/$(TARGET)-lua'
echo 'LUA_CPATH="$(PREFIX)/$(TARGET)/lib/lua/$(lua_SHORTVER)/?.dll;;$$LUA_CPATH"' >> '$(PREFIX)/bin/$(TARGET)-lua'
echo 'export LUA_PATH LUA_CPATH' >> '$(PREFIX)/bin/$(TARGET)-lua'
echo 'exec wine $(PREFIX)/$(TARGET)/bin/lua.exe "$$@"' >> '$(PREFIX)/bin/$(TARGET)-lua'
chmod +x '$(PREFIX)/bin/$(TARGET)-lua'
endef

@ -0,0 +1,65 @@
This file is part of MXE.
See index.html for further information.
From 11c943734757cf703daa6768b3919b7a580fe8b0 Mon Sep 17 00:00:00 2001
From: Boris Nagaev <bnagaev@gmail.com>
Date: Sat, 10 Oct 2015 22:00:31 +0100
Subject: [PATCH 1/2] build on MXE
---
luasocket-scm-0.rockspec | 14 ++++++++++++--
src/usocket_dummy.lua | 1 +
2 files changed, 13 insertions(+), 2 deletions(-)
create mode 100644 src/usocket_dummy.lua
diff --git a/luasocket-scm-0.rockspec b/luasocket-scm-0.rockspec
index f86567b..9b4da80 100644
--- a/luasocket-scm-0.rockspec
+++ b/luasocket-scm-0.rockspec
@@ -46,7 +46,14 @@ local function make_plat(plat)
"WINVER=0x0501",
"LUASOCKET_API=__declspec(dllexport)",
"MIME_API=__declspec(dllexport)"
- }
+ },
+ mxe = {
+ "LUASOCKET_DEBUG",
+ "LUASOCKET_INET_PTON",
+ "WINVER=0x0501",
+ "LUASOCKET_API=__declspec(dllexport)",
+ "MIME_API=__declspec(dllexport)"
+ },
}
local modules = {
["socket.core"] = {
@@ -85,9 +92,11 @@ local function make_plat(plat)
incdir = "/src"
}
end
- if plat == "win32" or plat == "mingw32" then
+ if plat == "win32" or plat == "mingw32" or plat == "mxe" then
modules["socket.core"].sources[#modules["socket.core"].sources+1] = "src/wsocket.c"
modules["socket.core"].libraries = { "ws2_32" }
+ modules["socket.unix"] = "src/usocket_dummy.lua"
+ modules["socket.serial"] = "src/usocket_dummy.lua"
end
return { modules = modules }
end
@@ -95,6 +104,7 @@ end
build = {
type = "builtin",
platforms = {
+ mxe = make_plat("mxe"),
unix = make_plat("unix"),
macosx = make_plat("macosx"),
win32 = make_plat("win32"),
diff --git a/src/usocket_dummy.lua b/src/usocket_dummy.lua
new file mode 100644
index 0000000..3cce676
--- /dev/null
+++ b/src/usocket_dummy.lua
@@ -0,0 +1 @@
+return error("This file was created to suppress build of usocket.c for MXE")
--
2.1.4

@ -0,0 +1,56 @@
This file is part of MXE.
See index.html for further information.
From 25007fd7fed18926728b9a1249f827a27e1d03f1 Mon Sep 17 00:00:00 2001
From: Boris Nagaev <bnagaev@gmail.com>
Date: Sat, 10 Oct 2015 23:14:31 +0100
Subject: [PATCH 2/2] luaL_checkint -> luaL_checkinteger
---
gem/gem.c | 2 +-
src/luasocket.c | 2 +-
src/mime.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/gem/gem.c b/gem/gem.c
index 976f74d..40f33b0 100644
--- a/gem/gem.c
+++ b/gem/gem.c
@@ -24,7 +24,7 @@ static int pushchar(int c, int last, const char *marker,
}
static int eol(lua_State *L) {
- int context = luaL_checkint(L, 1);
+ int context = luaL_checkinteger(L, 1);
size_t isize = 0;
const char *input = luaL_optlstring(L, 2, NULL, &isize);
const char *last = input + isize;
diff --git a/src/luasocket.c b/src/luasocket.c
index e6ee747..1bdfb13 100644
--- a/src/luasocket.c
+++ b/src/luasocket.c
@@ -64,7 +64,7 @@ static luaL_Reg func[] = {
* Skip a few arguments
\*-------------------------------------------------------------------------*/
static int global_skip(lua_State *L) {
- int amount = luaL_checkint(L, 1);
+ int amount = luaL_checkinteger(L, 1);
int ret = lua_gettop(L) - amount - 1;
return ret >= 0 ? ret : 0;
}
diff --git a/src/mime.c b/src/mime.c
index dd37dcf..bd9a2a9 100644
--- a/src/mime.c
+++ b/src/mime.c
@@ -661,7 +661,7 @@ static int eolprocess(int c, int last, const char *marker,
\*-------------------------------------------------------------------------*/
static int mime_global_eol(lua_State *L)
{
- int ctx = luaL_checkint(L, 1);
+ int ctx = luaL_checkinteger(L, 1);
size_t isize = 0;
const char *input = luaL_optlstring(L, 2, NULL, &isize);
const char *last = input + isize;
--
2.1.4

@ -0,0 +1,22 @@
# This file is part of MXE.
# See index.html for further information.
PKG := luasocket
$(PKG)_IGNORE :=
$(PKG)_VERSION := 3.0-rc1
$(PKG)_CHECKSUM := 8b67d9b5b545e1b694753dab7bd6cdbc24c290f2b21ba1e14c77b32817ea1249
$(PKG)_SUBDIR := luasocket-$($(PKG)_VERSION)
$(PKG)_FILE := $($(PKG)_SUBDIR).tar.gz
$(PKG)_URL := https://github.com/diegonehab/luasocket/archive/v$($(PKG)_VERSION).tar.gz
$(PKG)_DEPS := gcc luarocks
define $(PKG)_UPDATE
$(call MXE_GET_GITHUB_TAGS, diegonehab/luasocket) | \
$(SED) 's,^v,,g'
endef
# shared-only because luarocks is shared-only
define $(PKG)_BUILD_SHARED
cd '$(1)' && '$(TARGET)-luarocks' make
endef

@ -0,0 +1,16 @@
local lpeg = require 'lpeg'
assert(((lpeg.R('AZ'))^1):match("TEXT") == 5)
local http = require "socket.http"
assert(http.request("http://mxe.cc"):match('MXE'))
local ll = require 'llthreads2'
local thread = ll.new("return 123")
thread:start()
local ok, result = thread:join()
assert(ok)
assert(result == 123)
local rapidjson = require 'rapidjson'
assert(rapidjson.encode(123) == '123')
assert(rapidjson.decode('["xyz"]')[1] == "xyz")
Loading…
Cancel
Save