summaryrefslogtreecommitdiff
path: root/community/luaexpat
diff options
context:
space:
mode:
Diffstat (limited to 'community/luaexpat')
-rw-r--r--community/luaexpat/PKGBUILD56
-rw-r--r--community/luaexpat/config.5126
-rw-r--r--community/luaexpat/config.5226
-rw-r--r--community/luaexpat/lua52.patch372
4 files changed, 480 insertions, 0 deletions
diff --git a/community/luaexpat/PKGBUILD b/community/luaexpat/PKGBUILD
new file mode 100644
index 000000000..9ae182732
--- /dev/null
+++ b/community/luaexpat/PKGBUILD
@@ -0,0 +1,56 @@
+# $Id: PKGBUILD 81392 2012-12-19 13:28:13Z seblu $
+# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Contributor: Lucas Hermann Negri <kkndrox@gmail.com>
+
+pkgbase=luaexpat
+pkgname=(lua-expat lua51-expat)
+pkgver=1.2.0
+pkgrel=4
+pkgdesc='SAX XML parser based on the Expat library'
+arch=('i686' 'x86_64')
+url='http://matthewwild.co.uk/projects/luaexpat/'
+license=('MIT')
+makedepends=('gcc' 'lua' 'lua51' 'expat')
+source=("http://matthewwild.co.uk/projects/luaexpat/luaexpat-$pkgver.tar.gz"
+ 'config.51'
+ 'config.52'
+ 'lua52.patch')
+md5sums=('03efe50c7f30a34580701e6527d7bfee'
+ '64abbf5b602e0e31b68db2925a5e6b2f'
+ '60ae0633ac6f829cc3359f3533252eb0'
+ '21da93cbf0d3cef80d00e2380b7c2679')
+
+build() {
+ # 5.1
+ msg2 "Building $pkgbase with lua 5.1"
+ cp -a $pkgbase-$pkgver $pkgbase-$pkgver-51
+ cd $pkgbase-$pkgver-51
+ cp -L "$srcdir/config.51" config
+ make LUA_INC=/usr/include/lua5.1
+ # 5.2
+ msg2 "Building $pkgbase with lua 5.2"
+ cd "$srcdir/$pkgbase-$pkgver"
+ patch -p1 < "$srcdir/lua52.patch"
+ cp -L "$srcdir/config.52" config
+ make
+}
+
+package_lua-expat() {
+ depends=('lua' 'expat')
+
+ cd $pkgbase-$pkgver
+ make DESTDIR="$pkgdir" install
+ mv usr "$pkgdir"
+ install -Dm0644 doc/us/license.html "$pkgdir/usr/share/licenses/$pkgname/license.html"
+}
+
+package_lua51-expat() {
+ depends=('lua51' 'expat')
+ replaces=('luaexpat')
+ conflicts=('luaexpat')
+
+ cd $pkgbase-$pkgver-51
+ make DESTDIR="$pkgdir" install
+ mv usr "$pkgdir"
+ install -Dm0644 doc/us/license.html "$pkgdir/usr/share/licenses/$pkgname/license.html"
+}
diff --git a/community/luaexpat/config.51 b/community/luaexpat/config.51
new file mode 100644
index 000000000..64afe1cca
--- /dev/null
+++ b/community/luaexpat/config.51
@@ -0,0 +1,26 @@
+LUA_LIBDIR= usr/lib/lua/5.1
+LUA_DIR= usr/share/lua/5.1
+LUA_INC= /usr/include/lua5.1
+EXPAT_INC= /usr/include
+
+# OS dependent
+LIB_OPTION= -shared
+
+LIBNAME= $T.so.$V
+LUA_VERSION_NUM= 515
+COMPAT_DIR= ../compat/src
+
+# Compilation parameters
+CWARNS = -Wall -pedantic \
+ -Waggregate-return \
+ -Wcast-align \
+ -Wmissing-prototypes \
+ -Wstrict-prototypes \
+ -Wnested-externs \
+ -Wpointer-arith \
+ -Wshadow \
+ -Wwrite-strings
+
+CFLAGS = $(CWARNS) -ansi -O2 -I$(LUA_INC) \
+ -I$(COMPAT_DIR) -I$(EXPAT_INC) -fPIC
+CC = gcc
diff --git a/community/luaexpat/config.52 b/community/luaexpat/config.52
new file mode 100644
index 000000000..bc5b25d8f
--- /dev/null
+++ b/community/luaexpat/config.52
@@ -0,0 +1,26 @@
+LUA_LIBDIR= usr/lib/lua/5.2
+LUA_DIR= usr/share/lua/5.2
+LUA_INC= /usr/include
+EXPAT_INC= /usr/include
+
+# OS dependent
+LIB_OPTION= -shared
+
+LIBNAME= $T.so.$V
+LUA_VERSION_NUM= 521
+COMPAT_DIR= ../compat/src
+
+# Compilation parameters
+CWARNS = -Wall -pedantic \
+ -Waggregate-return \
+ -Wcast-align \
+ -Wmissing-prototypes \
+ -Wstrict-prototypes \
+ -Wnested-externs \
+ -Wpointer-arith \
+ -Wshadow \
+ -Wwrite-strings
+
+CFLAGS = $(CWARNS) -ansi -O2 -I$(LUA_INC) \
+ -I$(COMPAT_DIR) -I$(EXPAT_INC) -fPIC
+CC = gcc
diff --git a/community/luaexpat/lua52.patch b/community/luaexpat/lua52.patch
new file mode 100644
index 000000000..8b418e3a7
--- /dev/null
+++ b/community/luaexpat/lua52.patch
@@ -0,0 +1,372 @@
+diff -wbBur luaexpat-1.2.0/config lua-expat-b4e6b167e020/config
+--- luaexpat-1.2.0/config 2011-06-03 18:17:04.000000000 +0400
++++ lua-expat-b4e6b167e020/config 2012-07-28 04:59:45.000000000 +0400
+@@ -17,8 +17,7 @@
+ # (according to Lua 5.1 definition:
+ # first version digit * 100 + second version digit
+ # e.g. Lua 5.0.2 => 500, Lua 5.1 => 501, Lua 5.1.1 => 501)
+-LUA_VERSION_NUM= 500
+-COMPAT_DIR= ../compat/src
++LUA_VERSION_NUM= 502
+
+ # Compilation parameters
+ CWARNS = -Wall -pedantic \
+@@ -31,6 +30,6 @@
+ -Wshadow \
+ -Wwrite-strings
+
+-CFLAGS = $(CWARNS) -ansi -O2 -I$(LUA_INC) \
+- -I$(COMPAT_DIR) -I$(EXPAT_INC)
++CFLAGS = $(CWARNS) -ansi -O2 -fPIC -I$(LUA_INC) \
++ -I$(EXPAT_INC)
+ CC = gcc
+diff -wbBur luaexpat-1.2.0/.hg_archival.txt lua-expat-b4e6b167e020/.hg_archival.txt
+--- luaexpat-1.2.0/.hg_archival.txt 2011-06-03 18:17:04.000000000 +0400
++++ lua-expat-b4e6b167e020/.hg_archival.txt 2012-07-28 04:59:45.000000000 +0400
+@@ -1,4 +1,5 @@
+ repo: 24d141cb2d1e66a1bb42b445f049fcc037972f2b
+-node: 30c2491fe44a485caf2dd24643052670c91b91e3
++node: b4e6b167e020ba1bd9402acd0a142ef6e91d912a
+ branch: default
+-tag: 1.2.0
++latesttag: 1.2.0
++latesttagdistance: 7
+diff -wbBur luaexpat-1.2.0/makefile lua-expat-b4e6b167e020/makefile
+--- luaexpat-1.2.0/makefile 2011-06-03 18:17:04.000000000 +0400
++++ lua-expat-b4e6b167e020/makefile 2012-07-28 04:59:45.000000000 +0400
+@@ -1,22 +1,15 @@
+ T= lxp
+-V= 1.2.0
++V= 1.3.0
+ CONFIG= ./config
+
+ include $(CONFIG)
+
+-ifeq "$(LUA_VERSION_NUM)" "500"
+-COMPAT_O= $(COMPAT_DIR)/compat-5.1.o
+-endif
+-
+-OBJS= src/lxplib.o $(COMPAT_O)
++OBJS= src/lxplib.o
+ lib: src/$(LIBNAME)
+
+ src/$(LIBNAME) : $(OBJS)
+ export MACOSX_DEPLOYMENT_TARGET="10.3"; $(CC) -o src/$(LIBNAME) $(LIB_OPTION) $(OBJS) -lexpat
+
+-$(COMPAT_DIR)/compat-5.1.o: $(COMPAT_DIR)/compat-5.1.c
+- $(CC) -c $(CFLAGS) -o $@ $(COMPAT_DIR)/compat-5.1.c
+-
+ install:
+ mkdir -p $(LUA_LIBDIR)
+ cp src/$(LIBNAME) $(LUA_LIBDIR)
+diff -wbBur luaexpat-1.2.0/README lua-expat-b4e6b167e020/README
+--- luaexpat-1.2.0/README 2011-06-03 18:17:04.000000000 +0400
++++ lua-expat-b4e6b167e020/README 2012-07-28 04:59:45.000000000 +0400
+@@ -47,11 +47,11 @@
+
+ Credits
+
+-Version 1.0 was designed by Roberto Ierusalimschy, André Carregal and Tomás Guisasola
++Version 1.0 was designed by Roberto Ierusalimschy, André Carregal and Tomás Guisasola
+ as part of the Kepler Project which holds its copyright. The implementation was coded
+ by Roberto Ierusalimschy, based on a previous design by Jay Carlson.
+
+-LuaExpat development was sponsored by Fábrica Digital and FINEP.
++LuaExpat development was sponsored by Fábrica Digital and FINEP.
+
+ Contact
+
+diff -wbBur luaexpat-1.2.0/src/lxp/lom.lua lua-expat-b4e6b167e020/src/lxp/lom.lua
+--- luaexpat-1.2.0/src/lxp/lom.lua 2011-06-03 18:17:04.000000000 +0400
++++ lua-expat-b4e6b167e020/src/lxp/lom.lua 2012-07-28 04:59:45.000000000 +0400
+@@ -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 -wbBur luaexpat-1.2.0/src/lxplib.c lua-expat-b4e6b167e020/src/lxplib.c
+--- luaexpat-1.2.0/src/lxplib.c 2011-06-03 18:17:04.000000000 +0400
++++ lua-expat-b4e6b167e020/src/lxplib.c 2012-07-28 04:59:45.000000000 +0400
+@@ -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,19 +548,39 @@
+ */
+ 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);
+@@ -557,9 +584,12 @@
+ 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_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;
+ }
+diff -wbBur luaexpat-1.2.0/tests/test.lua lua-expat-b4e6b167e020/tests/test.lua
+--- luaexpat-1.2.0/tests/test.lua 2011-06-03 18:17:04.000000000 +0400
++++ lua-expat-b4e6b167e020/tests/test.lua 2012-07-28 04:59:45.000000000 +0400
+@@ -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,9 +41,9 @@
+ ]>
+ ]]
+
+-local X
++X = {}
++if string.find(_VERSION, " 5.0") then
+ function getargs (...) X = arg end
+-
+ function xgetargs (c)
+ return function (...)
+ table.insert(arg, 1, c)
+@@ -44,6 +50,35 @@
+ 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
++
+
+
+ -------------------------------
+@@ -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()