Added support for Lua 5.1, 5.2 and 5.4 (#6606)
authorDerek Bailey <derekbailey@google.com>
Wed, 5 May 2021 23:36:49 +0000 (16:36 -0700)
committerGitHub <noreply@github.com>
Wed, 5 May 2021 23:36:49 +0000 (16:36 -0700)
This adds basic support for different Lua versions.

For Lua 5.2 and Lua 5.3, both the Bit32 and Compat53 Lua modules must be
installed for it to work. You can typically get these on Linux using

apt install lua-compat53 lua-bit32

For Lua 5.4, it should work as is, as it is a clean superset of Lua 5.3,
which is what the original Lua Flatbuffers supported.

lua/flatbuffers/compat.lua
lua/flatbuffers/compat_5_1.lua [new file with mode: 0644]
tests/LuaTest.sh
tests/luatest.lua

index fbce457..1296c33 100644 (file)
@@ -1,12 +1,15 @@
-local m
-if _VERSION == "Lua 5.3" then
-    m = require("flatbuffers.compat_5_3")
-else
-    local ok = pcall(require, "jit")
-    if not ok then
-        error("Only Lua 5.3 or LuaJIT is supported")
-    else
-        m = require("flatbuffers.compat_luajit")
-    end
-end
-return m
\ No newline at end of file
+local compats = {
+    ["Lua 5.1"] = function()  
+        -- Check if Lua JIT is installed first
+        local ok = pcall(require, "jit")
+        if not ok then
+            return require("flatbuffers.compat_5_1")
+        else
+            return require("flatbuffers.compat_luajit")
+        end
+    end,
+    ["Lua 5.2"] = function() return require("flatbuffers.compat_5_1") end,
+    ["Lua 5.3"] = function() return require("flatbuffers.compat_5_3") end,
+    ["Lua 5.4"] = function() return require("flatbuffers.compat_5_3") end,
+}
+return assert(compats[_VERSION], "Unsupported Lua Version: ".._VERSION)()
\ No newline at end of file
diff --git a/lua/flatbuffers/compat_5_1.lua b/lua/flatbuffers/compat_5_1.lua
new file mode 100644 (file)
index 0000000..8c5e432
--- /dev/null
@@ -0,0 +1,21 @@
+local m = {}
+local ok, bit = pcall(require, "bit32")
+assert(ok, "The Bit32 library must be installed")
+assert(pcall(require, "compat53"), "The Compat 5.3 library must be installed")
+
+m.GetAlignSize = function(k, size)
+    return bit.band(bit.bnot(k) + 1,(size - 1))
+end
+
+if not table.unpack then
+    table.unpack = unpack
+end
+
+if not table.pack then
+    table.pack = pack
+end
+
+m.string_pack = string.pack
+m.string_unpack = string.unpack
+
+return m
index b6f17b5..d736a6b 100755 (executable)
@@ -19,7 +19,7 @@ test_dir="$(pwd)"
 
 ${test_dir}/../flatc --lua -I include_test monster_test.fbs
 
-declare -a versions=(luajit lua5.3)
+declare -a versions=(luajit lua5.1 lua5.2 lua5.3 lua5.4)
 
 for i in "${versions[@]}"
 do
index 952c4fa..7380d7d 100644 (file)
@@ -370,4 +370,4 @@ if not result then
     print("Unable to run tests due to test framework error: ",err)
 end
 
-os.exit(result or -1)
+os.exit(result and 0 or -1)