History

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

Boris Nagaev committed 10 years ago

Commit 43cb3191 parent 08488f914 files · +622 −0Browse files

Unified · Split

14 files
  1. plugins/luarocks/README.md +94 −0
  2. plugins/luarocks/all-rocks.mk +5 −0
  3. plugins/luarocks/llthreads2-1-link-with-kernel32-on-mxe.patch +33 −0
  4. plugins/luarocks/llthreads2.mk +23 −0
  5. plugins/luarocks/lpeg-1-rockspec.patch +55 −0
  6. plugins/luarocks/lpeg.mk +23 −0
  7. plugins/luarocks/lua-rapidjson-1-fixes.patch +82 −0
  8. plugins/luarocks/lua-rapidjson.mk +22 −0
  9. plugins/luarocks/luarocks-1-platform-mxe.patch +83 −0
  10. plugins/luarocks/luarocks.mk +43 −0
  11. plugins/luarocks/luasocket-1-build-on-mxe.patch +65 −0
  12. plugins/luarocks/luasocket-2-lual-checkint.patch +56 −0
  13. plugins/luarocks/luasocket.mk +22 −0
  14. plugins/luarocks/test.lua +16 −0
plugins/luarocks/README.md+94−0
@@ -0,0 +1,94 @@
1LuaRocks plugin
2===============
3
4Short description of LuaRocks
5-----------------------------
6
7Hundreds of [Lua][lua] packages are distributed via [LuaRocks][luarocks].
8LuaRocks is the package manager for Lua. It allows you to create and
9install Luamodules as self-contained packages called rocks. You can
10download and install LuaRocks on Unix and Windows.
11
12Lua rocks are similar to Ruby gems, Python eggs or JavaScript NPM. Command
13`luarocks install <rock>` downloads a rock from [luarocks.org][luarocks]
14(or other luarocks server), compiles C files (modules) to shared libraries
15and installs (copies) shared libraries and Lua files to the directory
16where luarocks is installed. Installed rocks can be loaded from Lua with
17function `require`.
18
19Example:
20```
21$ luarocks install luasocket
22$ lua -e 'http = require "socket.http"; print(http.request("http://mxe.cc"))'
23<!DOCTYPE html>
24....
25```
26
27LuaRocks can used with `make`, `cmake`, custom or builtin
28 [back-ends][backends].
29
30LuaRocks in MXE
31---------------
32
33LuaRocks and some popular rocks were ported to MXE as a plugin.
34LuaRocks can now be used in the same way as CMake or Make.
35
36Package `lua` installs native executable usr/bin/lua and
37cross-compiled lua executable usr/<target>/bin/lua.exe. Native
38executable is needed since LuaRocks is written in Lua. Cross-compiled
39one is needed to run Lua scripts loading cross-compiled lua modules.
40
41Package `luarocks` was added. Luarocks was patched to support new
42platform `mxe`, inherited from platform `unix`. It uses mix of system
43tools (e.g., `openssl`, `ln`, `mkdir`), MXE build chain
44(`i686-w64-mingw32.shared-gcc`, `i686-w64-mingw32.shared-cmake`) and some
45Windows variables (e.g., "dll" extension for shared libraries). The
46package is shared-only because Lua loads modules in runtime. It
47creates prefixed luarocks tool in `usr/bin`. It also creates prefixed
48wine+lua wrapper aware of locations of dll and lua files installed.
49This script can be used to test modules in Linux as if running them in
50Windows.
51
52There was a difficult choice if `mxe` platform of luarocks is inherited
53from `windows` or `unix` platform. I tried both and it is less patching
54for `unix`. For `windows` even build tools differ, while for `unix` a
55typical rock builds without patching or with minor patching
56(as other MXE packages).
57
58LuaRocks can be used to install rocks. With ideal rock it works as follows:
59
60```
61$ i686-w64-mingw32.shared-luarocks install <rock>
62```
63
64This command downloads rockspeck, downloads sources, verifies checksum
65(useless thing, because checksum is compared to the value from rockspec
66file, which itself is neither verified nor signed), builds and installs.
67
68LuaRocks is not used to download source tarballs (as said
69above, it doesn't verify checksums properly) using MXE's downloading
70and verifying facilities instead. Luarocks is used as builder,
71installer and Lua library (it installs Lua files to
72`usr/i686-w64-mingw32.shared/share/lua/5.3/luarocks/`).
73
74Build all rocks:
75```
76$ make all-rocks MXE_PLUGIN_DIRS=plugins/luarocks MXE_TARGETS='i686-w64-mingw32.shared x86_64-w64-mingw32.shared'
77```
78
79Run tests (requires wine):
80```
81$ ./usr/bin/i686-w64-mingw32.shared-lua plugins/luarocks/test.lua
82```
83
84See also:
85
86 * [LuaRocks site][luarocks]
87 * [LuaRocks wiki][wiki]
88 * [the thread in MXE mailing list about LuaRocks in MXE][thread]
89
90[lua]:http://lua.org/
91[luarocks]:https://luarocks.org/
92[backends]:https://github.com/keplerproject/luarocks/wiki/Rockspec-format#Build_backends
93[wiki]:https://github.com/keplerproject/luarocks/wiki/
94[thread]:http://lists.nongnu.org/archive/html/mingw-cross-env-list/2015-10/msg00008.html
plugins/luarocks/all-rocks.mk+5−0
@@ -0,0 +1,5 @@
1# This file is part of MXE.
2# See index.html for further information.
3
4PKG := all-rocks
5$(PKG)_DEPS := lpeg luasocket llthreads2 lua-rapidjson
plugins/luarocks/llthreads2-1-link-with-kernel32-on-mxe.patch+33−0
@@ -0,0 +1,33 @@
1This file is part of MXE.
2See index.html for further information.
3
4From 1d8e959ee39e7a46e150e722af12252448c7ac22 Mon Sep 17 00:00:00 2001
5From: Boris Nagaev <bnagaev@gmail.com>
6Date: Sun, 11 Oct 2015 01:56:36 +0100
7Subject: [PATCH] link with kernel32 on MXE
8
9---
10 rockspecs/lua-llthreads2-scm-0.rockspec | 7 +++++++
11 1 file changed, 7 insertions(+)
12
13diff --git a/rockspecs/lua-llthreads2-scm-0.rockspec b/rockspecs/lua-llthreads2-scm-0.rockspec
14index 8f907b8..26d5b80 100644
15--- a/rockspecs/lua-llthreads2-scm-0.rockspec
16+++ b/rockspecs/lua-llthreads2-scm-0.rockspec
17@@ -27,6 +27,13 @@ build = {
18 }
19 }
20 },
21+ mxe = {
22+ modules = {
23+ llthreads2 = {
24+ libraries = {"kernel32"},
25+ }
26+ }
27+ },
28 windows = {
29 modules = {
30 llthreads2 = {
31--
322.1.4
33
plugins/luarocks/llthreads2.mk+23−0
@@ -0,0 +1,23 @@
1# This file is part of MXE.
2# See index.html for further information.
3
4PKG := llthreads2
5$(PKG)_IGNORE :=
6$(PKG)_VERSION := 0.1.3
7$(PKG)_CHECKSUM := 8c6fc7966cdcc15ae2f89f66ae72f6727a985e7d254f139ecf75a50956a3e8e4
8$(PKG)_SUBDIR := lua-$(PKG)-$($(PKG)_VERSION)
9$(PKG)_FILE := $($(PKG)_SUBDIR).tar.gz
10$(PKG)_URL := https://github.com/moteus/lua-llthreads2/archive/v$($(PKG)_VERSION).tar.gz
11$(PKG)_DEPS := gcc luarocks
12
13define $(PKG)_UPDATE
14 $(call MXE_GET_GITHUB_TAGS, moteus/lua-llthreads2) | \
15 $(SED) 's,^v,,g'
16endef
17
18# shared-only because luarocks is shared-only
19
20define $(PKG)_BUILD_SHARED
21 cd '$(1)' && '$(TARGET)-luarocks' make \
22 rockspecs/lua-llthreads2-scm-0.rockspec
23endef
plugins/luarocks/lpeg-1-rockspec.patch+55−0
@@ -0,0 +1,55 @@
1This file is part of MXE.
2See index.html for further information.
3
4From f271a094f8add34df3f31ac6fb12c9fe683f763a Mon Sep 17 00:00:00 2001
5From: Boris Nagaev <bnagaev@gmail.com>
6Date: Sat, 10 Oct 2015 16:40:35 +0100
7Subject: [PATCH] add rockspec
8
9Source:https://luarocks.org/modules/gvvaughan/lpeg/1.0.0-1
10---
11 lpeg-1.0.0-1.rockspec | 32 ++++++++++++++++++++++++++++++++
12 1 file changed, 32 insertions(+)
13 create mode 100644 lpeg-1.0.0-1.rockspec
14
15diff --git a/lpeg-1.0.0-1.rockspec b/lpeg-1.0.0-1.rockspec
16new file mode 100644
17index 0000000..b4fdd27
18--- /dev/null
19+++ b/lpeg-1.0.0-1.rockspec
20@@ -0,0 +1,32 @@
21+package = "LPeg"
22+version = "1.0.0-1"
23+source = {
24+ url = "http://www.inf.puc-rio.br/~roberto/lpeg/lpeg-1.0.0.tar.gz",
25+ md5 = "0aec64ccd13996202ad0c099e2877ece",
26+}
27+description = {
28+ summary = "Parsing Expression Grammars For Lua",
29+ detailed = [[
30+ LPeg is a new pattern-matching library for Lua, based on Parsing
31+ Expression Grammars (PEGs). The nice thing about PEGs is that it
32+ has a formal basis (instead of being an ad-hoc set of features),
33+ allows an efficient and simple implementation, and does most things
34+ we expect from a pattern-matching library (and more, as we can
35+ define entire grammars).
36+ ]],
37+ homepage = "http://www.inf.puc-rio.br/~roberto/lpeg.html",
38+ maintainer = "Gary V. Vaughan <gary@vaughan.pe>",
39+ license = "MIT/X11"
40+}
41+dependencies = {
42+ "lua >= 5.1"
43+}
44+build = {
45+ type = "builtin",
46+ modules = {
47+ lpeg = {
48+ "lpcap.c", "lpcode.c", "lpprint.c", "lptree.c", "lpvm.c"
49+ },
50+ re = "re.lua"
51+ }
52+}
53--
542.1.4
55
plugins/luarocks/lpeg.mk+23−0
@@ -0,0 +1,23 @@
1# This file is part of MXE.
2# See index.html for further information.
3
4PKG := lpeg
5$(PKG)_IGNORE :=
6$(PKG)_VERSION := 1.0.0
7$(PKG)_CHECKSUM := 10190ae758a22a16415429a9eb70344cf29cbda738a6962a9f94a732340abf8e
8$(PKG)_SUBDIR := lpeg-$($(PKG)_VERSION)
9$(PKG)_FILE := $($(PKG)_SUBDIR).tar.gz
10$(PKG)_URL := http://www.inf.puc-rio.br/~roberto/$(PKG)/$($(PKG)_FILE)
11$(PKG)_DEPS := gcc luarocks
12
13define $(PKG)_UPDATE
14 $(WGET) -q -O- 'http://www.inf.puc-rio.br/~roberto/lpeg/' | \
15 $(SED) -n 's,.*lpeg-\([0-9][^>]*\)\.tar.*,\1,p' | \
16 sort -h | tail -1
17endef
18
19# shared-only because luarocks is shared-only
20
21define $(PKG)_BUILD_SHARED
22 cd '$(1)' && '$(TARGET)-luarocks' make
23endef
plugins/luarocks/lua-rapidjson-1-fixes.patch+82−0
@@ -0,0 +1,82 @@
1This file is part of MXE.
2See index.html for further information.
3
4From dbedfa6c3b350b6cb2c13d17790a17129ce28721 Mon Sep 17 00:00:00 2001
5From: Boris Nagaev <bnagaev@gmail.com>
6Date: Sun, 11 Oct 2015 22:47:50 +0200
7Subject: [PATCH 1/2] use Unix file functions on MinGW
8
9---
10 src/rapidjson.cpp | 4 ++--
11 1 file changed, 2 insertions(+), 2 deletions(-)
12
13diff --git a/src/rapidjson.cpp b/src/rapidjson.cpp
14index 3b5b129..955009f 100644
15--- a/src/rapidjson.cpp
16+++ b/src/rapidjson.cpp
17@@ -54,7 +54,7 @@ static void setfuncs(lua_State* L, const luaL_Reg *funcs)
18 FILE* openForRead(const char* filename)
19 {
20 FILE* fp = NULL;
21-#if WIN32
22+#if WIN32 && !defined(__MINGW32__)
23 fopen_s(&fp, filename, "rb");
24 #else
25 fp = fopen(filename, "r");
26@@ -66,7 +66,7 @@ FILE* openForRead(const char* filename)
27 FILE* openForWrite(const char* filename)
28 {
29 FILE* fp = NULL;
30-#if WIN32
31+#if WIN32 && !defined(__MINGW32__)
32 fopen_s(&fp, filename, "wb");
33 #else
34 fp = fopen(filename, "w");
35--
361.7.10.4
37
38
39From ad7426ad156f90dcf2b051fe125900caf5b8b2da Mon Sep 17 00:00:00 2001
40From: Boris Nagaev <bnagaev@gmail.com>
41Date: Sun, 11 Oct 2015 22:48:26 +0200
42Subject: [PATCH 2/2] link with Lua libraries on MinGW and MXE
43
44---
45 rapidjson-0.2.2-1.rockspec | 15 ++++++++++-----
46 1 file changed, 10 insertions(+), 5 deletions(-)
47
48diff --git a/rapidjson-0.2.2-1.rockspec b/rapidjson-0.2.2-1.rockspec
49index 9efe7e1..6ad9188 100644
50--- a/rapidjson-0.2.2-1.rockspec
51+++ b/rapidjson-0.2.2-1.rockspec
52@@ -27,6 +27,13 @@ dependencies = {
53 "lua >= 5.1"
54 }
55
56+-- windows DLL needs link with importlib.
57+local link = {
58+ variables = {
59+ LUA_LIBRARIES = "$(LUA_LIBDIR)/$(LUALIB)",
60+ }
61+}
62+
63 -- cmake -Bbuild -H. -DBUILD_SHARED_LIBS=ON
64 -- cmake --build build --target install --config Release
65 build = {
66@@ -39,10 +46,8 @@ build = {
67 },
68 -- Override default build options
69 platforms = {
70- windows = {
71- variables = {
72- LUA_LIBRARIES = "$(LUA_LIBDIR)/$(LUALIB)", -- windows DLL needs link with importlib.
73- }
74- }
75+ windows = link,
76+ mingw = link,
77+ mxe = link,
78 }
79 }
80--
811.7.10.4
82
plugins/luarocks/lua-rapidjson.mk+22−0
@@ -0,0 +1,22 @@
1# This file is part of MXE.
2# See index.html for further information.
3
4PKG := lua-rapidjson
5$(PKG)_IGNORE :=
6$(PKG)_VERSION := 0.2.2-1
7$(PKG)_CHECKSUM := 10783d8633df3f50b1ad33c7de89d2a94a7d9cf45e2ce5217d0d2d5e77396fd2
8$(PKG)_SUBDIR := $(PKG)-$($(PKG)_VERSION)
9$(PKG)_FILE := $($(PKG)_SUBDIR).tar.gz
10$(PKG)_URL := https://github.com/xpol/lua-rapidjson/archive/v$($(PKG)_VERSION).tar.gz
11$(PKG)_DEPS := gcc luarocks
12
13define $(PKG)_UPDATE
14 $(call MXE_GET_GITHUB_TAGS, xpol/lua-rapidjson) | \
15 $(SED) 's,^v,,g'
16endef
17
18# shared-only because luarocks is shared-only
19
20define $(PKG)_BUILD_SHARED
21 cd '$(1)' && '$(TARGET)-luarocks' make
22endef
plugins/luarocks/luarocks-1-platform-mxe.patch+83−0
@@ -0,0 +1,83 @@
1This file is part of MXE.
2See index.html for further information.
3
4From 5cd28e7a8f0de2539322ede15616904835a4dbe3 Mon Sep 17 00:00:00 2001
5From: Boris Nagaev <bnagaev@gmail.com>
6Date: Sat, 10 Oct 2015 17:45:24 +0100
7Subject: [PATCH] platform MXE
8
9diff --git a/src/luarocks/build/builtin.lua b/src/luarocks/build/builtin.lua
10index 00fd09e..a4985e9 100644
11--- a/src/luarocks/build/builtin.lua
12+++ b/src/luarocks/build/builtin.lua
13@@ -165,7 +165,7 @@ function builtin.run(rockspec)
14 add_flags(extras, "-Wl,-rpath,%s:", libdirs)
15 end
16 add_flags(extras, "-l%s", libraries)
17- if cfg.is_platform("cygwin") then
18+ if cfg.is_platform("cygwin") or cfg.is_platform("mxe") then
19 add_flags(extras, "-l%s", {"lua"})
20 end
21 return execute(variables.LD.." "..variables.LIBFLAG, "-o", library, "-L"..variables.LUA_LIBDIR, unpack(extras))
22diff --git a/src/luarocks/cfg.lua b/src/luarocks/cfg.lua
23index 99b4077..a17fbaa 100644
24--- a/src/luarocks/cfg.lua
25+++ b/src/luarocks/cfg.lua
26@@ -118,6 +118,9 @@ elseif system and system:match("^Windows") then
27 elseif system and system:match("^MINGW") then
28 detected.windows = true
29 detected.mingw32 = true
30+elseif system and system:match("^MXE") then
31+ detected.unix = true
32+ detected.mxe = true
33 else
34 detected.unix = true
35 -- Fall back to Unix in unknown systems.
36@@ -430,6 +433,44 @@ if detected.unix then
37 defaults.web_browser = "xdg-open"
38 end
39
40+if detected.mxe then
41+ local MXE_ROOT, MXE_TARGET =
42+ assert(site_config.LUAROCKS_PREFIX:match('^(.*)/usr/([^/]+)$'))
43+ defaults.lib_extension = "dll"
44+ defaults.external_lib_extension = "dll"
45+ defaults.obj_extension = "obj"
46+ defaults.external_deps_dirs = { site_config.LUAROCKS_PREFIX }
47+ defaults.arch = "mxe-" .. MXE_TARGET
48+ defaults.platforms = {"unix", "mxe"}
49+ -- LUA_INCDIR and LUA_LIBDIR are defined in site_config.lua
50+ defaults.variables.LUA_BINDIR = site_config.LUAROCKS_PREFIX .. "/bin"
51+ defaults.cmake_generator = "Unix Makefiles"
52+ defaults.variables.MAKE = os.getenv("MAKE")
53+ defaults.variables.CMAKE = MXE_ROOT .. "/usr/bin/" .. MXE_TARGET .. "-cmake"
54+ defaults.variables.CC = MXE_ROOT .. "/usr/bin/" .. MXE_TARGET .. "-gcc"
55+ defaults.variables.LD = defaults.variables.CC
56+ defaults.variables.CFLAGS = "-O2"
57+ defaults.variables.LIBFLAG = "-shared"
58+ defaults.variables.LUALIB = "liblua.dll.a"
59+
60+ defaults.export_path = "SET PATH=%s"
61+ defaults.export_path_separator = ";"
62+ defaults.export_lua_path = "SET LUA_PATH=%s"
63+ defaults.export_lua_cpath = "SET LUA_CPATH=%s"
64+ defaults.wrapper_suffix = ".bat"
65+
66+ defaults.external_deps_patterns = {
67+ bin = { "?.exe", "?.bat" },
68+ lib = { "?.dll.a", "lib?.dll.a" },
69+ include = { "?.h" }
70+ }
71+ defaults.runtime_external_deps_patterns = {
72+ bin = { "?.exe", "?.bat" },
73+ lib = { "?.dll", "lib?.dll" },
74+ include = { "?.h" }
75+ }
76+end
77+
78 if detected.cygwin then
79 defaults.lib_extension = "so" -- can be overridden in the config file for mingw builds
80 defaults.arch = "cygwin-"..proc
81--
822.1.4
83
plugins/luarocks/luarocks.mk+43−0
@@ -0,0 +1,43 @@
1# This file is part of MXE.
2# See index.html for further information.
3
4PKG := luarocks
5$(PKG)_IGNORE :=
6$(PKG)_VERSION := 2.2.2
7$(PKG)_CHECKSUM := 4f0427706873f30d898aeb1dfb6001b8a3478e46a5249d015c061fe675a1f022
8$(PKG)_SUBDIR := luarocks-$($(PKG)_VERSION)
9$(PKG)_FILE := $($(PKG)_SUBDIR).tar.gz
10$(PKG)_URL := https://keplerproject.github.io/luarocks/releases/$($(PKG)_FILE)
11$(PKG)_DEPS := gcc lua
12
13lua_SHORTVER := $(call SHORT_PKG_VERSION,lua)
14
15define $(PKG)_UPDATE
16 $(WGET) -q -O- 'https://keplerproject.github.io/luarocks/releases/' | \
17 $(SED) -n 's,.*luarocks-\([0-9][^>]*\)\.tar.*,\1,p' | \
18 sort -h | tail -1
19endef
20
21# shared-only because Lua loads modules in runtime
22
23define $(PKG)_BUILD_SHARED
24 cd '$(1)' && ./configure \
25 --prefix='$(PREFIX)/$(TARGET)' \
26 --rocks-tree='$(PREFIX)/$(TARGET)' \
27 --lua-version='$(lua_SHORTVER)' \
28 --with-lua='$(PREFIX)/$(TARGET)' \
29 --with-lua-bin='$(PREFIX)/bin' \
30 --with-downloader='wget' \
31 --with-md5-checker='openssl'
32 $(MAKE) -C '$(1)' build install \
33 LUAROCKS_UNAME_S="MXE" \
34 LUAROCKS_UNAME_M="$(TARGET)"
35 ln -sf '$(PREFIX)/$(TARGET)/bin/luarocks' '$(PREFIX)/bin/$(TARGET)-luarocks'
36
37 # create wine wrapper for testing
38 echo 'LUA_PATH="$(PREFIX)/$(TARGET)/share/lua/$(lua_SHORTVER)/?.lua;$(PREFIX)/$(TARGET)/share/lua/$(lua_SHORTVER)/?/init.lua;$$LUA_PATH"' > '$(PREFIX)/bin/$(TARGET)-lua'
39 echo 'LUA_CPATH="$(PREFIX)/$(TARGET)/lib/lua/$(lua_SHORTVER)/?.dll;;$$LUA_CPATH"' >> '$(PREFIX)/bin/$(TARGET)-lua'
40 echo 'export LUA_PATH LUA_CPATH' >> '$(PREFIX)/bin/$(TARGET)-lua'
41 echo 'exec wine $(PREFIX)/$(TARGET)/bin/lua.exe "$$@"' >> '$(PREFIX)/bin/$(TARGET)-lua'
42 chmod +x '$(PREFIX)/bin/$(TARGET)-lua'
43endef
plugins/luarocks/luasocket-1-build-on-mxe.patch+65−0
@@ -0,0 +1,65 @@
1This file is part of MXE.
2See index.html for further information.
3
4From 11c943734757cf703daa6768b3919b7a580fe8b0 Mon Sep 17 00:00:00 2001
5From: Boris Nagaev <bnagaev@gmail.com>
6Date: Sat, 10 Oct 2015 22:00:31 +0100
7Subject: [PATCH 1/2] build on MXE
8
9---
10 luasocket-scm-0.rockspec | 14 ++++++++++++--
11 src/usocket_dummy.lua | 1 +
12 2 files changed, 13 insertions(+), 2 deletions(-)
13 create mode 100644 src/usocket_dummy.lua
14
15diff --git a/luasocket-scm-0.rockspec b/luasocket-scm-0.rockspec
16index f86567b..9b4da80 100644
17--- a/luasocket-scm-0.rockspec
18+++ b/luasocket-scm-0.rockspec
19@@ -46,7 +46,14 @@ local function make_plat(plat)
20 "WINVER=0x0501",
21 "LUASOCKET_API=__declspec(dllexport)",
22 "MIME_API=__declspec(dllexport)"
23- }
24+ },
25+ mxe = {
26+ "LUASOCKET_DEBUG",
27+ "LUASOCKET_INET_PTON",
28+ "WINVER=0x0501",
29+ "LUASOCKET_API=__declspec(dllexport)",
30+ "MIME_API=__declspec(dllexport)"
31+ },
32 }
33 local modules = {
34 ["socket.core"] = {
35@@ -85,9 +92,11 @@ local function make_plat(plat)
36 incdir = "/src"
37 }
38 end
39- if plat == "win32" or plat == "mingw32" then
40+ if plat == "win32" or plat == "mingw32" or plat == "mxe" then
41 modules["socket.core"].sources[#modules["socket.core"].sources+1] = "src/wsocket.c"
42 modules["socket.core"].libraries = { "ws2_32" }
43+ modules["socket.unix"] = "src/usocket_dummy.lua"
44+ modules["socket.serial"] = "src/usocket_dummy.lua"
45 end
46 return { modules = modules }
47 end
48@@ -95,6 +104,7 @@ end
49 build = {
50 type = "builtin",
51 platforms = {
52+ mxe = make_plat("mxe"),
53 unix = make_plat("unix"),
54 macosx = make_plat("macosx"),
55 win32 = make_plat("win32"),
56diff --git a/src/usocket_dummy.lua b/src/usocket_dummy.lua
57new file mode 100644
58index 0000000..3cce676
59--- /dev/null
60+++ b/src/usocket_dummy.lua
61@@ -0,0 +1 @@
62+return error("This file was created to suppress build of usocket.c for MXE")
63--
642.1.4
65
plugins/luarocks/luasocket-2-lual-checkint.patch+56−0
@@ -0,0 +1,56 @@
1This file is part of MXE.
2See index.html for further information.
3
4From 25007fd7fed18926728b9a1249f827a27e1d03f1 Mon Sep 17 00:00:00 2001
5From: Boris Nagaev <bnagaev@gmail.com>
6Date: Sat, 10 Oct 2015 23:14:31 +0100
7Subject: [PATCH 2/2] luaL_checkint -> luaL_checkinteger
8
9---
10 gem/gem.c | 2 +-
11 src/luasocket.c | 2 +-
12 src/mime.c | 2 +-
13 3 files changed, 3 insertions(+), 3 deletions(-)
14
15diff --git a/gem/gem.c b/gem/gem.c
16index 976f74d..40f33b0 100644
17--- a/gem/gem.c
18+++ b/gem/gem.c
19@@ -24,7 +24,7 @@ static int pushchar(int c, int last, const char *marker,
20 }
21
22 static int eol(lua_State *L) {
23- int context = luaL_checkint(L, 1);
24+ int context = luaL_checkinteger(L, 1);
25 size_t isize = 0;
26 const char *input = luaL_optlstring(L, 2, NULL, &isize);
27 const char *last = input + isize;
28diff --git a/src/luasocket.c b/src/luasocket.c
29index e6ee747..1bdfb13 100644
30--- a/src/luasocket.c
31+++ b/src/luasocket.c
32@@ -64,7 +64,7 @@ static luaL_Reg func[] = {
33 * Skip a few arguments
34 \*-------------------------------------------------------------------------*/
35 static int global_skip(lua_State *L) {
36- int amount = luaL_checkint(L, 1);
37+ int amount = luaL_checkinteger(L, 1);
38 int ret = lua_gettop(L) - amount - 1;
39 return ret >= 0 ? ret : 0;
40 }
41diff --git a/src/mime.c b/src/mime.c
42index dd37dcf..bd9a2a9 100644
43--- a/src/mime.c
44+++ b/src/mime.c
45@@ -661,7 +661,7 @@ static int eolprocess(int c, int last, const char *marker,
46 \*-------------------------------------------------------------------------*/
47 static int mime_global_eol(lua_State *L)
48 {
49- int ctx = luaL_checkint(L, 1);
50+ int ctx = luaL_checkinteger(L, 1);
51 size_t isize = 0;
52 const char *input = luaL_optlstring(L, 2, NULL, &isize);
53 const char *last = input + isize;
54--
552.1.4
56
plugins/luarocks/luasocket.mk+22−0
@@ -0,0 +1,22 @@
1# This file is part of MXE.
2# See index.html for further information.
3
4PKG := luasocket
5$(PKG)_IGNORE :=
6$(PKG)_VERSION := 3.0-rc1
7$(PKG)_CHECKSUM := 8b67d9b5b545e1b694753dab7bd6cdbc24c290f2b21ba1e14c77b32817ea1249
8$(PKG)_SUBDIR := luasocket-$($(PKG)_VERSION)
9$(PKG)_FILE := $($(PKG)_SUBDIR).tar.gz
10$(PKG)_URL := https://github.com/diegonehab/luasocket/archive/v$($(PKG)_VERSION).tar.gz
11$(PKG)_DEPS := gcc luarocks
12
13define $(PKG)_UPDATE
14 $(call MXE_GET_GITHUB_TAGS, diegonehab/luasocket) | \
15 $(SED) 's,^v,,g'
16endef
17
18# shared-only because luarocks is shared-only
19
20define $(PKG)_BUILD_SHARED
21 cd '$(1)' && '$(TARGET)-luarocks' make
22endef
plugins/luarocks/test.lua+16−0
@@ -0,0 +1,16 @@
1local lpeg = require 'lpeg'
2assert(((lpeg.R('AZ'))^1):match("TEXT") == 5)
3
4local http = require "socket.http"
5assert(http.request("http://mxe.cc"):match('MXE'))
6
7local ll = require 'llthreads2'
8local thread = ll.new("return 123")
9thread:start()
10local ok, result = thread:join()
11assert(ok)
12assert(result == 123)
13
14local rapidjson = require 'rapidjson'
15assert(rapidjson.encode(123) == '123')
16assert(rapidjson.decode('["xyz"]')[1] == "xyz")

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t