summaryrefslogtreecommitdiff
path: root/dev-lua
diff options
context:
space:
mode:
authorSam James <sam@gentoo.org>2025-10-05 03:07:27 +0100
committerSam James <sam@gentoo.org>2025-10-05 03:07:27 +0100
commitadab4b0ceb4cd28bb7074908b66252cb176afebb (patch)
tree52578147c58c37cbb1fdda482059ffab02ed0e7a /dev-lua
parent5e254adbc260604b1f2163d1a8648f6193e543d3 (diff)
downloadgentoo-adab4b0ceb4cd28bb7074908b66252cb176afebb.tar.gz
gentoo-adab4b0ceb4cd28bb7074908b66252cb176afebb.tar.bz2
gentoo-adab4b0ceb4cd28bb7074908b66252cb176afebb.zip
dev-lua/luajson: fix compat w/ >=dev-lua/lpeg-1.1.0
(Linked the 2nd bug as Vitaly seems to have cited it.) Bug: https://github.com/harningt/luajson/issues/47 Bug: https://github.com/harningt/luajson/issues/51 Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'dev-lua')
-rw-r--r--dev-lua/luajson/files/luajson-1.3.4-lpeg-1.1.patch75
-rw-r--r--dev-lua/luajson/luajson-1.3.4-r1.ebuild41
2 files changed, 116 insertions, 0 deletions
diff --git a/dev-lua/luajson/files/luajson-1.3.4-lpeg-1.1.patch b/dev-lua/luajson/files/luajson-1.3.4-lpeg-1.1.patch
new file mode 100644
index 000000000000..78b48f37468c
--- /dev/null
+++ b/dev-lua/luajson/files/luajson-1.3.4-lpeg-1.1.patch
@@ -0,0 +1,75 @@
+https://github.com/harningt/luajson/issues/47
+https://github.com/harningt/luajson/pull/48
+https://github.com/harningt/luajson/pull/49
+
+From 473d61d262a1c86a69ad9b4882352d122e42f3fa Mon Sep 17 00:00:00 2001
+From: Josh <jokajak@gmail.com>
+Date: Thu, 20 Jul 2023 15:49:33 -0400
+Subject: [PATCH] feat: support lpeg 1.1
+
+This changeset adds support for lpeg 1.1 which updated the lpeg.version from a function to a string.
+
+Therefore we have to check the type of the value.
+
+Refs: #47
+---
+ lua/json/decode/util.lua | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/lua/json/decode/util.lua b/lua/json/decode/util.lua
+index 2493bf3..8b23751 100644
+--- a/lua/json/decode/util.lua
++++ b/lua/json/decode/util.lua
+@@ -17,6 +17,8 @@ local table_concat = require("table").concat
+
+ local merge = require("json.util").merge
+
++local type = type
++
+ local _ENV = nil
+
+ local function get_invalid_character_info(input, index)
+@@ -94,7 +96,8 @@ local unicode_ignored = (unicode_space + comment)^0
+
+ -- Parse the lpeg version skipping patch-values
+ -- LPEG <= 0.7 have no version value... so 0.7 is value
+-local DecimalLpegVersion = lpeg.version and tonumber(lpeg.version():match("^(%d+%.%d+)")) or 0.7
++-- LPEG >= 1.1 uses a string for the version instead of function
++local DecimalLpegVersion = lpeg.version and tonumber((type(lpeg.version) == "string" and lpeg.version or lpeg.version()):match("^(%d+%.%d+)")) or 0.7
+
+ local function setObjectKeyForceNumber(t, key, value)
+ key = tonumber(key) or key
+
+From f23e38fc35cea8db78df124f1bd6d3d56e6c9ab1 Mon Sep 17 00:00:00 2001
+From: Josh <jokajak@gmail.com>
+Date: Wed, 4 Oct 2023 17:24:30 -0400
+Subject: [PATCH] fix: fix lpeg version detection
+
+This changeset fixes the lpeg version detection to properly handle
+version > 1.1.
+
+The original fix did not properly parse the string because it search for
+the number to start the string instead of being part of the string.
+
+Refs: #47
+---
+ lua/json/decode/util.lua | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/lua/json/decode/util.lua b/lua/json/decode/util.lua
+index 8b23751..4815650 100644
+--- a/lua/json/decode/util.lua
++++ b/lua/json/decode/util.lua
+@@ -97,7 +97,11 @@ local unicode_ignored = (unicode_space + comment)^0
+ -- Parse the lpeg version skipping patch-values
+ -- LPEG <= 0.7 have no version value... so 0.7 is value
+ -- LPEG >= 1.1 uses a string for the version instead of function
+-local DecimalLpegVersion = lpeg.version and tonumber((type(lpeg.version) == "string" and lpeg.version or lpeg.version()):match("^(%d+%.%d+)")) or 0.7
++local DecimalLpegVersion = lpeg.version
++ and tonumber(
++ (type(lpeg.version) == "string" and lpeg.version or lpeg.version()):match("(%d+%.%d+)")
++ )
++ or 0.7
+
+ local function setObjectKeyForceNumber(t, key, value)
+ key = tonumber(key) or key
diff --git a/dev-lua/luajson/luajson-1.3.4-r1.ebuild b/dev-lua/luajson/luajson-1.3.4-r1.ebuild
new file mode 100644
index 000000000000..9e4a2854d31e
--- /dev/null
+++ b/dev-lua/luajson/luajson-1.3.4-r1.ebuild
@@ -0,0 +1,41 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LUA_COMPAT=( lua5-{1..4} luajit )
+
+inherit lua
+
+DESCRIPTION="JSON Parser/Constructor for Lua"
+HOMEPAGE="https://www.eharning.us/wiki/luajson/"
+SRC_URI="https://github.com/harningt/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+
+REQUIRED_USE="${LUA_REQUIRED_USE}"
+
+RDEPEND="dev-lua/lpeg[${LUA_USEDEP}]"
+
+# Require lunitx, which is not in the tree yet
+RESTRICT="test"
+
+DOCS=( README.md docs/ReleaseNotes-${PV}.txt docs/LuaJSON.txt )
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.3.4-lpeg-1.1.patch
+)
+
+# nothing to compile
+src_compile() { :; }
+
+lua_src_install() {
+ emake DESTDIR="${ED}" INSTALL_LMOD="$(lua_get_lmod_dir)" install
+}
+
+src_install() {
+ lua_foreach_impl lua_src_install
+ einstalldocs
+}