Browse Source

- luaexpat: bump version to 1.3.0

master
vanhofen 6 years ago
parent
commit
fabe027157
  1. 200
      archive-patches/luaexpat-1.3.0-lua-5.2.patch
  2. 116
      archive-patches/luaexpat-lua-5.2-test-fix.patch
  3. 39
      archive-patches/luaexpat-makefile.diff
  4. 23
      archive-patches/luaexpat-makefile.patch
  5. 6
      make/archives.mk
  6. 24
      make/system-libs.mk

200
archive-patches/luaexpat-1.3.0-lua-5.2.patch

@ -1,200 +0,0 @@
# HG changeset patch
# User Tom?s Guisasola Gorham <tomas@tecgraf.puc-rio.br>
# Date 1343430908 -3600
# Node ID e981a82571cf5c54d5e84f73fbcad7214f699c03
# Parent 5dfed844930e6ccd981d44290fe51d20255388bc
Add compatibility with Lua 5.2
diff -r 5dfed844930e -r e981a82571cf src/lxp/lom.lua
--- a/src/lxp/lom.lua Fri Jul 27 22:03:24 2012 +0100
+++ b/src/lxp/lom.lua Sat Jul 28 00:15:08 2012 +0100
@@ -1,13 +1,11 @@
-- See Copyright Notice in license.html
-- $Id: lom.lua,v 1.6 2005/06/09 19:18:40 tuler Exp $
-require "lxp"
+local lxp = require "lxp"
-local tinsert, tremove, getn = table.insert, table.remove, table.getn
+local tinsert, tremove = table.insert, table.remove
local assert, type, print = assert, type, print
-local lxp = lxp
-module ("lxp.lom")
local function starttag (p, tag, attr)
local stack = p:getcallbacks().stack
@@ -19,14 +17,14 @@
local stack = p:getcallbacks().stack
local element = tremove(stack)
assert(element.tag == tag)
- local level = getn(stack)
+ local level = #stack
tinsert(stack[level], element)
end
local function text (p, txt)
local stack = p:getcallbacks().stack
- local element = stack[getn(stack)]
- local n = getn(element)
+ local element = stack[#stack]
+ local n = #element
if type(element[n]) == "string" then
element[n] = element[n] .. txt
else
@@ -34,7 +32,7 @@
end
end
-function parse (o)
+local function parse (o)
local c = { StartElement = starttag,
EndElement = endtag,
CharacterData = text,
@@ -47,7 +45,7 @@
status, err = p:parse(o)
if not status then return nil, err end
else
- for l in o do
+ for l in pairs(o) do
status, err = p:parse(l)
if not status then return nil, err end
end
@@ -58,3 +56,4 @@
return c.stack[1][1]
end
+return { parse = parse }
diff -r 5dfed844930e -r e981a82571cf src/lxplib.c
--- a/src/lxplib.c Fri Jul 27 22:03:24 2012 +0100
+++ b/src/lxplib.c Sat Jul 28 00:15:08 2012 +0100
@@ -13,14 +13,16 @@
#include "lua.h"
#include "lauxlib.h"
-#if ! defined (LUA_VERSION_NUM) || LUA_VERSION_NUM < 501
-#include "compat-5.1.h"
-#endif
#include "lxplib.h"
+#if !defined(lua_pushliteral)
+#define lua_pushliteral(L, s) \
+ lua_pushstring(L, "" s, (sizeof(s)/sizeof(char))-1)
+#endif
+
enum XPState {
XPSpre, /* parser just initialized */
@@ -66,7 +68,7 @@
static void lxpclose (lua_State *L, lxp_userdata *xpu) {
- lua_unref(L, xpu->tableref);
+ luaL_unref(L, LUA_REGISTRYINDEX, xpu->tableref);
xpu->tableref = LUA_REFNIL;
if (xpu->parser)
XML_ParserFree(xpu->parser);
@@ -225,7 +227,7 @@
child->parser = XML_ExternalEntityParserCreate(p, context, NULL);
if (!child->parser)
luaL_error(L, "XML_ParserCreate failed");
- lua_getref(L, xpu->tableref); /* child uses the same table of its father */
+ lua_rawgeti(L, LUA_REGISTRYINDEX, xpu->tableref); /*lua_getref(L, xpu->tableref); */ /* child uses the same table of its father */
child->tableref = luaL_ref(L, LUA_REGISTRYINDEX);
lua_pushstring(L, base);
lua_pushstring(L, systemId);
@@ -449,7 +451,7 @@
xpu->state = XPSok;
xpu->b = &b;
lua_settop(L, 2);
- lua_getref(L, xpu->tableref); /* to be used by handlers */
+ lua_rawgeti(L, LUA_REGISTRYINDEX, xpu->tableref); /*lua_getref(L, xpu->tableref);*/ /* to be used by handlers */
status = XML_Parse(xpu->parser, s, (int)len, s == NULL);
if (xpu->state == XPSstring) dischargestring(xpu);
if (xpu->state == XPSerror) { /* callback error? */
@@ -517,7 +519,12 @@
return 1;
}
-static const struct luaL_reg lxp_meths[] = {
+#if !defined LUA_VERSION_NUM
+/* Lua 5.0 */
+#define luaL_Reg luaL_reg
+#endif
+
+static const struct luaL_Reg lxp_meths[] = {
{"parse", lxp_parse},
{"close", lxp_close},
{"__gc", parser_gc},
@@ -530,7 +537,7 @@
{NULL, NULL}
};
-static const struct luaL_reg lxp_funcs[] = {
+static const struct luaL_Reg lxp_funcs[] = {
{"new", lxp_make_parser},
{NULL, NULL}
};
@@ -541,25 +548,48 @@
*/
static void set_info (lua_State *L) {
lua_pushliteral (L, "_COPYRIGHT");
- lua_pushliteral (L, "Copyright (C) 2003-2007 Kepler Project");
+ lua_pushliteral (L, "Copyright (C) 2003-2012 Kepler Project");
lua_settable (L, -3);
lua_pushliteral (L, "_DESCRIPTION");
lua_pushliteral (L, "LuaExpat is a SAX XML parser based on the Expat library");
lua_settable (L, -3);
lua_pushliteral (L, "_VERSION");
- lua_pushliteral (L, "LuaExpat 1.2.0");
+ lua_pushliteral (L, "LuaExpat 1.3.0");
lua_settable (L, -3);
}
+#if !defined LUA_VERSION_NUM || LUA_VERSION_NUM==501
+/*
+** Adapted from Lua 5.2.0
+*/
+static void luaL_setfuncs (lua_State *L, const luaL_Reg *l, int nup) {
+ luaL_checkstack(L, nup, "too many upvalues");
+ for (; l->name != NULL; l++) { /* fill the table with given functions */
+ int i;
+ for (i = 0; i < nup; i++) /* copy upvalues to the top */
+ lua_pushvalue(L, -nup);
+ lua_pushstring(L, l->name);
+ lua_pushcclosure(L, l->func, nup); /* closure with those upvalues */
+ lua_settable(L, -(nup + 3));
+ }
+ lua_pop(L, nup); /* remove upvalues */
+}
+#endif
+
+
int luaopen_lxp (lua_State *L) {
- luaL_newmetatable(L, ParserType);
- lua_pushliteral(L, "__index");
- lua_pushvalue(L, -2);
- lua_rawset(L, -3);
- luaL_openlib (L, NULL, lxp_meths, 0);
- luaL_openlib (L, "lxp", lxp_funcs, 0);
- set_info (L);
+ luaL_newmetatable(L, ParserType);
- return 1;
+ lua_pushliteral(L, "__index");
+ lua_pushvalue(L, -2);
+ lua_rawset(L, -3);
+
+ luaL_setfuncs (L, lxp_meths, 0);
+ lua_pop (L, 1); /* remove metatable */
+
+ lua_newtable (L);
+ luaL_setfuncs (L, lxp_funcs, 0);
+ set_info (L);
+ return 1;
}

116
archive-patches/luaexpat-lua-5.2-test-fix.patch

@ -1,116 +0,0 @@
# HG changeset patch
# User Tom?s Guisasola Gorham <tomas@tecgraf.puc-rio.br>
# Date 1343436760 -3600
# Node ID b2a77ebe7aed73ef5318895dd8f34dcdece94114
# Parent e981a82571cf5c54d5e84f73fbcad7214f699c03
test.lua: Expand tests and add compatibility with Lua 5.2
diff -r e981a82571cf -r b2a77ebe7aed tests/test.lua
--- a/tests/test.lua Sat Jul 28 00:15:08 2012 +0100
+++ b/tests/test.lua Sat Jul 28 01:52:40 2012 +0100
@@ -2,8 +2,14 @@
-- See Copyright Notice in license.html
-- $Id: test.lua,v 1.6 2006/06/08 20:34:52 tomas Exp $
-require"lxp"
+if string.find(_VERSION, " 5.0") then
+ lxp = assert(loadlib("./lxp.so", "luaopen_lxp"))()
+else
+ lxp = require"lxp"
+ gcinfo = function () return collectgarbage"count" end
+end
print (lxp._VERSION)
+assert(lxp.new, "Cannot find function lxp.new ("..tostring(lxp.new)..")")
-- basic test with no preamble
local p = lxp.new{}
@@ -35,15 +41,44 @@
]>
]]
-local X
-function getargs (...) X = arg end
+X = {}
+if string.find(_VERSION, " 5.0") then
+ function getargs (...) X = arg end
+ function xgetargs (c)
+ return function (...)
+ table.insert(arg, 1, c)
+ table.insert(X, arg)
+ end
+ end
+else
+ (loadstring or load)[[
+ function getargs (...)
+ X = { ... }
+ X.n = select('#', ...)
+ end
+ function xgetargs (c)
+ return function (...)
+ local arg = { ... }
+ arg.n = select('#', ...) + 1
+ table.insert(arg, 1, c)
+ table.insert(X, arg)
+ end
+ end
+ table.getn = function (t)
+ if t.n then
+ return t.n
+ else
+ local n = 0
+ for i in pairs(t) do
+ if type(i) == "number" then
+ n = math.max(n, i)
+ end
+ end
+ return n
+ end
+ end]]()
+end
-function xgetargs (c)
- return function (...)
- table.insert(arg, 1, c)
- table.insert(X, arg)
- end
-end
-------------------------------
@@ -61,7 +96,7 @@
assert(X.n == 3 and X[1] == p and X[2] == "to")
x = X[3]
assert(x.priority=="10" and x.xu=="hi" and x.method=="POST")
-assert(x[1] == "priority" and x[2] == "xu" and table.getn(x) == 2)
+assert(x[1] == "priority" and x[2] == "xu" and table.getn(x) == 2, "x[1] == "..tostring(x[1])..", x[2] == "..tostring(x[2])..", #x == "..tostring(table.getn(x)))
assert(p:parse("</to>"))
assert(p:parse())
p:close()
@@ -95,7 +130,7 @@
assert(p:parse"<to>")
assert(p:parse"<![CDATA[hi]]>")
assert(table.getn(X) == 3)
-assert(X[1][1] == "s" and X[1][2] == p)
+assert(X[1][1] == "s" and X[1][2] == p, "X[1][1] == "..tostring(X[1][1])..", X[1][2] == "..tostring(X[1][2])..", p == "..tostring(p))
assert(X[2][1] == "c" and X[2][2] == p and X[2][3] == "hi")
assert(X[3][1] == "e" and X[3][2] == p)
assert(p:parse"</to>")
@@ -220,7 +255,7 @@
]])
p:close()
x = X[1]
-assert(x[1] == "sn" and x[3] == "space" and x[4] == "a/namespace" and table.getn(x) == 4)
+assert(x[1] == "sn" and x[3] == "space" and x[4] == "a/namespace" and table.getn(x) == 4, "x[1] == "..tostring(x[1])..", x[3] == "..tostring(x[3])..", x[4] == "..tostring(x[4])..", #x == "..tostring(table.getn(x)))
x = X[3]
assert(x[1] == "s" and x[3] == "a/namespace?a")
x = X[4]
@@ -316,7 +351,7 @@
local x = gcinfo()
for i=1,100000 do
-- due to a small bug in Lua...
- if math.mod(i, 100) == 0 then collectgarbage() end
+ if (math.mod or math.fmod)(i, 100) == 0 then collectgarbage() end
lxp.new({})
end
collectgarbage(); collectgarbage()

39
archive-patches/luaexpat-makefile.diff

@ -1,39 +0,0 @@
--- /dev/null 2014-02-16 10:23:32.271000394 +0100
+++ b/Makefile 2014-02-18 15:25:06.121294649 +0100
@@ -0,0 +1,36 @@
+CC ?= cc
+RM ?= rm -rf
+INSTALL ?= install
+INSTALL_PROGRAM ?= $(INSTALL)
+INSTALL_DATA ?= $(INSTALL) -m 644
+LUA_V ?= 5.1
+LUA_LDIR ?= /usr/share/lua/$(LUA_V)
+LUA_CDIR ?= /usr/lib/lua/$(LUA_V)
+T = lxp
+LIBNAME = $(T).so
+
+COMMON_CFLAGS = -g -pedantic -Wall -O2 -shared -fPIC -DPIC -ansi
+LUA_INC ?= -I/usr/include/lua$(LUA_V)
+EXPAT_INC ?= -I/usr/include
+CF = $(LUA_INC) $(EXPAT_INC) $(COMMON_CFLAGS) $(CFLAGS)
+
+EXPAT_LIB = -lexpat
+COMMON_LDFLAGS = -shared
+LF = $(COMMON_LDFLAGS) $(EXPAT_LIB) $(LDFLAGS)
+
+OBJS = src/lxplib.o
+
+lib: src/$(LIBNAME)
+
+src/$(LIBNAME):
+ export MACOSX_DEPLOYMENT_TARGET="10.3";
+ $(CC) $(CF) $(LF) -o $@ src/$(T)lib.c
+
+install:
+ $(INSTALL_PROGRAM) -D src/$(LIBNAME) $(DESTDIR)$(LUA_CDIR)/$(LIBNAME)
+ $(INSTALL_PROGRAM) -D src/$T/lom.lua $(DESTDIR)$(LUA_LDIR)/$T/lom.lua
+ $(INSTALL_DATA) -D tests/test.lua $(DESTDIR)$(LUA_LDIR)/$T/tests/test.lua
+ $(INSTALL_DATA) -D tests/test-lom.lua $(DESTDIR)$(LUA_LDIR)/$T/tests/test-lom.lua
+
+clean:
+ $(RM) src/$(LIBNAME) $(OBJS)

23
archive-patches/luaexpat-makefile.patch

@ -0,0 +1,23 @@
--- a/Makefile
+++ b/Makefile
@@ -3,15 +3,15 @@
INSTALL ?= install
INSTALL_PROGRAM ?= $(INSTALL)
INSTALL_DATA ?= $(INSTALL) -m 644
-LUA_V ?= 5.1
-LUA_LDIR ?= /usr/share/lua/$(LUA_V)
-LUA_CDIR ?= /usr/lib/lua/$(LUA_V)
+LUA_V ?= 5.2
+LUA_LDIR ?= $(PREFIX)/share/lua/$(LUA_V)
+LUA_CDIR ?= $(PREFIX)/lib/lua/$(LUA_V)
T = lxp
LIBNAME = $(T).so
COMMON_CFLAGS = -g -pedantic -Wall -O2 -fPIC -DPIC -ansi
-LUA_INC ?= -I/usr/include/lua$(LUA_V)
-EXPAT_INC ?= -I/usr/include
+LUA_INC ?= -I$(PREFIX)/include
+EXPAT_INC ?= -I$(PREFIX)/include
CF = $(LUA_INC) $(EXPAT_INC) $(COMMON_CFLAGS) $(CFLAGS)
EXPAT_LIB = -lexpat

6
make/archives.mk

@ -268,9 +268,9 @@ EXPAT_VER=2.2.6
$(ARCHIVE)/expat-$(EXPAT_VER).tar.bz2:
$(WGET) http://sourceforge.net/projects/expat/files/expat/$(EXPAT_VER)/expat-$(EXPAT_VER).tar.bz2
LUA_EXPAT_VER=1.2.0
$(ARCHIVE)/luaexpat-$(LUA_EXPAT_VER).tar.gz:
$(WGET) http://matthewwild.co.uk/projects/luaexpat/luaexpat-$(LUA_EXPAT_VER).tar.gz
LUAEXPAT_VER=1.3.0
$(ARCHIVE)/luaexpat-$(LUAEXPAT_VER).tar.gz:
$(WGET) http://matthewwild.co.uk/projects/luaexpat/luaexpat-$(LUAEXPAT_VER).tar.gz
LUACURL_VER=v3
$(ARCHIVE)/Lua-cURL$(LUACURL_VER).tar.xz:

24
make/system-libs.mk

@ -485,20 +485,16 @@ $(D)/expat: $(ARCHIVE)/expat-$(EXPAT_VER).tar.bz2 | $(TARGET_DIR)
# -----------------------------------------------------------------------------
$(D)/luaexpat: $(ARCHIVE)/luaexpat-$(LUA_EXPAT_VER).tar.gz $(D)/expat $(D)/lua | $(TARGET_DIR)
$(REMOVE)/luaexpat-$(LUA_EXPAT_VER)
$(UNTAR)/luaexpat-$(LUA_EXPAT_VER).tar.gz
$(CHDIR)/luaexpat-$(LUA_EXPAT_VER); \
rm makefile*; \
$(PATCH)/luaexpat-makefile.diff; \
$(PATCH)/luaexpat-1.3.0-lua-5.2.patch; \
$(PATCH)/luaexpat-lua-5.2-test-fix.patch; \
$(MAKE) \
CC=$(TARGET)-gcc LUA_V=$(LUA_ABIVER) LDFLAGS="$(TARGET_LDFLAGS)" \
LUA_INC=-I$(TARGET_INCLUDE_DIR) EXPAT_INC=-I$(TARGET_INCLUDE_DIR); \
$(MAKE) install LUA_LDIR=$(TARGET_DIR)/share/lua/$(LUA_ABIVER) LUA_CDIR=$(TARGET_LIB_DIR)/lua/$(LUA_ABIVER)
rm -rf $(TARGET_DIR)/share/lua/$(LUA_ABIVER)/lxp/tests
$(REMOVE)/luaexpat-$(LUA_EXPAT_VER)
LUAEXPAT_PATCH = luaexpat-makefile.patch
$(D)/luaexpat: $(D)/expat $(D)/lua $(ARCHIVE)/luaexpat-$(LUAEXPAT_VER).tar.gz | $(TARGET_DIR)
$(REMOVE)/luaexpat-$(LUAEXPAT_VER)
$(UNTAR)/luaexpat-$(LUAEXPAT_VER).tar.gz
$(CHDIR)/luaexpat-$(LUAEXPAT_VER); \
$(call apply_patches, $(LUAEXPAT_PATCH)); \
$(MAKE) CC=$(TARGET)-gcc LDFLAGS="$(TARGET_LDFLAGS)" PREFIX=$(TARGET_DIR); \
$(MAKE) install DESTDIR=$(TARGET_DIR)
$(REMOVE)/luaexpat-$(LUAEXPAT_VER)
$(TOUCH)
# -----------------------------------------------------------------------------

Loading…
Cancel
Save