add packaging
authorAnas Nashif <anas.nashif@intel.com>
Mon, 5 Nov 2012 19:04:08 +0000 (11:04 -0800)
committerAnas Nashif <anas.nashif@intel.com>
Mon, 5 Nov 2012 19:04:08 +0000 (11:04 -0800)
packaging/baselibs.conf [new file with mode: 0644]
packaging/lua.spec [new file with mode: 0644]
packaging/lua51-5.1.4-libdir.diff [new file with mode: 0644]
packaging/lua51-5.1.4-module-path.diff [new file with mode: 0644]
packaging/lua51-5.1.4-shared.diff [new file with mode: 0644]
packaging/lua51-5.1.4-upstream-bugfix.diff [new file with mode: 0644]

diff --git a/packaging/baselibs.conf b/packaging/baselibs.conf
new file mode 100644 (file)
index 0000000..ef3c9ae
--- /dev/null
@@ -0,0 +1,2 @@
+liblua5
+       targetarch ia64 block!
diff --git a/packaging/lua.spec b/packaging/lua.spec
new file mode 100644 (file)
index 0000000..31ba81e
--- /dev/null
@@ -0,0 +1,161 @@
+#
+# spec file for package lua51
+#
+# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
+#
+# All modifications and additions to the file contributed by third parties
+# remain the property of their copyright owners, unless otherwise agreed
+# upon. The license for this file, and modifications and additions to the
+# file, is the same license as for the pristine package itself (unless the
+# license for the pristine package is not an Open Source License, in which
+# case the license is the MIT License). An "Open Source License" is a
+# license that conforms to the Open Source Definition (Version 1.9)
+# published by the Open Source Initiative.
+
+# Please submit bugfixes or comments via http://bugs.opensuse.org/
+#
+
+
+Name:           lua
+Version:        5.1.4
+Release:        0
+License:        MIT
+Summary:        Small Embeddable Language with Simple Procedural Syntax
+Url:            http://www.lua.org
+Group:          System/Libraries
+Source:         %{name}-%{version}.tar.gz
+Source1:        macros.lua
+Source2:        baselibs.conf
+Patch0:         lua51-%{version}-shared.diff
+Patch1:         lua51-%{version}-module-path.diff
+Patch2:         lua51-%{version}-upstream-bugfix.diff
+Patch3:         lua51-%{version}-libdir.diff
+%define major_version 5.1
+BuildRequires:  pkg-config
+BuildRequires:  readline-devel
+BuildRoot:      %{_tmppath}/%{name}-%{version}-build
+
+%description
+Lua is a programming language originally designed for extending
+applications, but also frequently used as a general-purpose,
+stand-alone language.
+
+Lua combines simple procedural syntax (similar to Pascal) with powerful
+data description constructs based on associative arrays and extensible
+semantics. Lua is dynamically typed, interpreted from byte codes, and
+has automatic memory management, making it ideal for configuration,
+scripting, and rapid prototyping. Lua is implemented as a small library
+of C functions, written in ANSI C, and the implementation goals are
+simplicity, efficiency, portability, and low embedding cost.
+
+%package devel
+Summary:        Development files for lua
+Group:          Development/Libraries/C and C++
+Requires:       %{name} = %{version}
+
+%description devel
+Lua is a programming language originally designed for extending
+applications, but also frequently used as a general-purpose,
+stand-alone language.
+
+This package contains files needed for embedding lua into your
+application.
+
+%package -n liblua
+Summary:        Small Embeddable Language with Simple Procedural Syntax
+Group:          System/Libraries
+
+%description -n liblua
+Lua is a programming language originally designed for extending
+applications, but also frequently used as a general-purpose,
+stand-alone language.
+
+Lua combines simple procedural syntax (similar to Pascal) with powerful
+data description constructs based on associative arrays and extensible
+semantics. Lua is dynamically typed, interpreted from byte codes, and
+has automatic memory management, making it ideal for configuration,
+scripting, and rapid prototyping. Lua is implemented as a small library
+of C functions, written in ANSI C, and the implementation goals are
+simplicity, efficiency, portability, and low embedding cost.
+
+%package doc
+Summary:        Small Embeddable Language with Simple Procedural Syntax
+Group:          System/Libraries
+BuildArch:      noarch
+
+%description doc
+Lua is a programming language originally designed for extending
+applications, but also frequently used as a general-purpose,
+stand-alone language.
+
+Lua combines simple procedural syntax (similar to Pascal) with powerful
+data description constructs based on associative arrays and extensible
+semantics. Lua is dynamically typed, interpreted from byte codes, and
+has automatic memory management, making it ideal for configuration,
+scripting, and rapid prototyping. Lua is implemented as a small library
+of C functions, written in ANSI C, and the implementation goals are
+simplicity, efficiency, portability, and low embedding cost.
+
+%prep
+%setup -q -n lua-%{version}
+%patch0 -b .shared
+%patch1 -p1
+%patch2
+%patch3 -p1
+
+%build
+sed -i 's:LUA_ROOT2 "LIBDIR/lua/%{major_version}/":LUA_ROOT2 \"%{_lib}/lua/%{major_version}/":' src/luaconf.h
+make %{?_smp_mflags} -C src CC="gcc" MYCFLAGS="%{optflags} -fPIC -DLUA_USE_LINUX" MYLIBS="-Wl,-E -ldl -lreadline -lhistory -lncurses" V=%{major_version} all
+
+%install
+make install INSTALL_TOP="%{buildroot}%{_prefix}" INSTALL_LIB="%{buildroot}%{_libdir}" INSTALL_CMOD=%{buildroot}%{_libdir}/lua/%{major_version} INSTALL_MAN="%{buildroot}%{_mandir}/man1"
+install -D -m644 etc/lua.pc %{buildroot}%{_libdir}/pkgconfig/lua.pc
+for file in lua luac ; do
+    mv "%{buildroot}%{_bindir}/${file}"        "%{buildroot}%{_bindir}/${file}%{major_version}"
+    mv "%{buildroot}%{_mandir}/man1/${file}.1" "%{buildroot}%{_mandir}/man1/${file}%{major_version}.1"
+done
+install -d -m 0755 %{buildroot}%{_libdir}/lua/%{major_version}
+install -d -m 0755 %{buildroot}%{_datadir}/lua/%{major_version}
+install -D %{SOURCE1} %{buildroot}%{_sysconfdir}/rpm/macros.lua
+
+#ln -sf liblua.so.%{major_version} %{buildroot}/%{_libdir}/liblua-%{major_version}.so
+chmod +x %{buildroot}/%{_libdir}/liblua.so.%{major_version}
+
+%post -n liblua -p /sbin/ldconfig
+
+%postun -n liblua -p /sbin/ldconfig
+
+%files
+%defattr(-,root,root)
+%doc COPYRIGHT HISTORY README
+%{_mandir}/man1/lua%{major_version}.1*
+%{_mandir}/man1/luac%{major_version}.1*
+%{_bindir}/lua%{major_version}
+%{_bindir}/luac%{major_version}
+%dir %{_libdir}/lua
+%dir %{_libdir}/lua/%{major_version}
+%dir %{_datadir}/lua
+%dir %{_datadir}/lua/%{major_version}
+%{_sysconfdir}/rpm/macros.lua
+
+%files -n liblua
+%defattr(-,root,root)
+%{_libdir}/liblua.so.%{major_version}
+###%{_libdir}/liblua-%{major_version}.so
+
+%files devel
+%defattr(-,root,root)
+%{_includedir}/lauxlib.h
+%{_includedir}/lua.h
+%{_includedir}/lua.hpp
+%{_includedir}/luaconf.h
+%{_includedir}/lualib.h
+%{_libdir}/pkgconfig/lua.pc
+%{_libdir}/liblua.a
+%{_libdir}/liblua.so
+
+%files doc
+%defattr(-,root,root)
+%doc doc/*
+
+%changelog
diff --git a/packaging/lua51-5.1.4-libdir.diff b/packaging/lua51-5.1.4-libdir.diff
new file mode 100644 (file)
index 0000000..c370527
--- /dev/null
@@ -0,0 +1,13 @@
+Index: lua-5.1.4/etc/lua.pc
+===================================================================
+--- lua-5.1.4.orig/etc/lua.pc
++++ lua-5.1.4/etc/lua.pc
+@@ -25,7 +25,7 @@ Name: Lua
+ Description: An Extensible Extension Language
+ Version: ${R}
+ Requires: 
+-Libs: -L${libdir} -llua -lm
++Libs: -llua -lm
+ Cflags: -I${includedir}
+ # (end of lua.pc)
diff --git a/packaging/lua51-5.1.4-module-path.diff b/packaging/lua51-5.1.4-module-path.diff
new file mode 100644 (file)
index 0000000..f7eb350
--- /dev/null
@@ -0,0 +1,21 @@
+diff -urNad trunk~/src/luaconf.h trunk/src/luaconf.h
+--- trunk~/src/luaconf.h       2006-02-10 12:44:06.000000000 -0500
++++ trunk/src/luaconf.h        2006-02-17 21:32:55.000000000 -0500
+@@ -83,13 +83,17 @@
+ #else
+ #define LUA_ROOT      "/usr/local/"
++#define LUA_ROOT2     "/usr/"
+ #define LUA_LDIR      LUA_ROOT "share/lua/5.1/"
++#define LUA_LDIR2     LUA_ROOT2 "share/lua/5.1/"
+ #define LUA_CDIR      LUA_ROOT "lib/lua/5.1/"
++#define LUA_CDIR2     LUA_ROOT2 "LIBDIR/lua/5.1/"
+ #define LUA_PATH_DEFAULT  \
+               "./?.lua;"  LUA_LDIR"?.lua;"  LUA_LDIR"?/init.lua;" \
+-                          LUA_CDIR"?.lua;"  LUA_CDIR"?/init.lua"
++                          LUA_CDIR"?.lua;"  LUA_CDIR"?/init.lua;" \
++                          LUA_LDIR2"?.lua;"  LUA_LDIR2"?/init.lua"
+ #define LUA_CPATH_DEFAULT \
+-      "./?.so;"  LUA_CDIR"?.so;" LUA_CDIR"loadall.so"
++      "./?.so;" LUA_CDIR"?.so;" LUA_CDIR2"?.so;" LUA_CDIR"loadall.so"
+ #endif
diff --git a/packaging/lua51-5.1.4-shared.diff b/packaging/lua51-5.1.4-shared.diff
new file mode 100644 (file)
index 0000000..c455556
--- /dev/null
@@ -0,0 +1,91 @@
+Index: etc/lua.pc
+===================================================================
+--- etc/lua.pc.orig
++++ etc/lua.pc
+@@ -8,7 +8,7 @@ V= 5.1
+ R= 5.1.4
+ # grep '^INSTALL_.*=' ../Makefile | sed 's/INSTALL_TOP/prefix/'
+-prefix= /usr/local
++prefix= /usr
+ INSTALL_BIN= ${prefix}/bin
+ INSTALL_INC= ${prefix}/include
+ INSTALL_LIB= ${prefix}/lib
+Index: src/luaconf.h
+===================================================================
+--- src/luaconf.h.orig
++++ src/luaconf.h
+@@ -184,7 +184,7 @@
+ #elif defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 302) && \
+       defined(__ELF__)
+-#define LUAI_FUNC     __attribute__((visibility("hidden"))) extern
++#define LUAI_FUNC     extern
+ #define LUAI_DATA     LUAI_FUNC
+ #else
+Index: src/Makefile
+===================================================================
+--- src/Makefile.orig
++++ src/Makefile
+@@ -23,6 +23,7 @@ MYLIBS=
+ PLATS= aix ansi bsd freebsd generic linux macosx mingw posix solaris
+ LUA_A=        liblua.a
++LUA_SO=       liblua.so
+ CORE_O=       lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o \
+       lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o  \
+       lundump.o lvm.o lzio.o
+@@ -36,7 +37,7 @@ LUAC_T=      luac
+ LUAC_O=       luac.o print.o
+ ALL_O= $(CORE_O) $(LIB_O) $(LUA_O) $(LUAC_O)
+-ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T)
++ALL_T= $(LUA_SO) $(LUA_A) $(LUA_T) $(LUAC_T)
+ ALL_A= $(LUA_A)
+ default: $(PLAT)
+@@ -47,15 +48,20 @@ o: $(ALL_O)
+ a:    $(ALL_A)
++# shared libraries (for Linux)
++$(LUA_SO): $(CORE_O) $(LIB_O)
++      $(CC) -o $(LUA_SO).$V -shared -Wl,-soname,$(LUA_SO).$V $(CORE_O) $(LIB_O) -lm -ldl
++      ln -fs $(LUA_SO).$(V) $(LUA_SO)
++
+ $(LUA_A): $(CORE_O) $(LIB_O)
+       $(AR) $@ $?
+       $(RANLIB) $@
+ $(LUA_T): $(LUA_O) $(LUA_A)
+-      $(CC) -o $@ $(MYLDFLAGS) $(LUA_O) $(LUA_A) $(LIBS)
++      $(CC) -o $@ $(MYLDFLAGS) $(LUA_O) -L. -llua $(LIBS)
+ $(LUAC_T): $(LUAC_O) $(LUA_A)
+-      $(CC) -o $@ $(MYLDFLAGS) $(LUAC_O) $(LUA_A) $(LIBS)
++      $(CC) -o $@ $(MYLDFLAGS) $(LUAC_O) -L. -llua $(LIBS)
+ clean:
+       $(RM) $(ALL_T) $(ALL_O)
+Index: Makefile
+===================================================================
+--- Makefile.orig
++++ Makefile
+@@ -43,7 +43,7 @@ PLATS= aix ansi bsd freebsd generic linu
+ # What to install.
+ TO_BIN= lua luac
+ TO_INC= lua.h luaconf.h lualib.h lauxlib.h ../etc/lua.hpp
+-TO_LIB= liblua.a
++TO_LIB= liblua.a liblua.so.$(V)
+ TO_MAN= lua.1 luac.1
+ # Lua version and release.
+@@ -62,6 +62,7 @@ install: dummy
+       cd src && $(MKDIR) $(INSTALL_BIN) $(INSTALL_INC) $(INSTALL_LIB) $(INSTALL_MAN) $(INSTALL_LMOD) $(INSTALL_CMOD)
+       cd src && $(INSTALL_EXEC) $(TO_BIN) $(INSTALL_BIN)
+       cd src && $(INSTALL_DATA) $(TO_INC) $(INSTALL_INC)
++      ln -s liblua.so.$(V) $(INSTALL_LIB)/liblua.so
+       cd src && $(INSTALL_DATA) $(TO_LIB) $(INSTALL_LIB)
+       cd doc && $(INSTALL_DATA) $(TO_MAN) $(INSTALL_MAN)
diff --git a/packaging/lua51-5.1.4-upstream-bugfix.diff b/packaging/lua51-5.1.4-upstream-bugfix.diff
new file mode 100644 (file)
index 0000000..34fdba8
--- /dev/null
@@ -0,0 +1,196 @@
+# patch-lua-5.1.4-2 created 2010-05-14T21:02:40-0300
+# apply to a pristine copy of Lua 5.1.4 with:
+#      wget http://www.lua.org/ftp/lua-5.1.4.tar.gz
+#      tar zxf lua-5.1.4.tar.gz
+#      cd lua-5.1.4/src
+#      wget http://www.lua.org/ftp/patch-lua-5.1.4-2
+#      patch < patch-lua-5.1.4-2
+# use curl -O -R if you don't have wget
+
+--- src/lcode.c        2007/12/28 15:32:23     2.25.1.3
++++ src/lcode.c        2009/06/15 14:12:25     2.25.1.4
+@@ -1,5 +1,5 @@
+ /*
+-** $Id: lcode.c,v 2.25.1.3 2007/12/28 15:32:23 roberto Exp $
++** $Id: lcode.c,v 2.25.1.4 2009/06/15 14:12:25 roberto Exp $
+ ** Code generator for Lua
+ ** See Copyright Notice in lua.h
+ */
+@@ -544,15 +544,18 @@
+       pc = NO_JUMP;  /* always true; do nothing */
+       break;
+     }
+-    case VFALSE: {
+-      pc = luaK_jump(fs);  /* always jump */
+-      break;
+-    }
+     case VJMP: {
+       invertjump(fs, e);
+       pc = e->u.s.info;
+       break;
+     }
++    case VFALSE: {
++      if (!hasjumps(e)) {
++        pc = luaK_jump(fs);  /* always jump */
++        break;
++      }
++      /* else go through */
++    }
+     default: {
+       pc = jumponcond(fs, e, 0);
+       break;
+@@ -572,14 +575,17 @@
+       pc = NO_JUMP;  /* always false; do nothing */
+       break;
+     }
+-    case VTRUE: {
+-      pc = luaK_jump(fs);  /* always jump */
+-      break;
+-    }
+     case VJMP: {
+       pc = e->u.s.info;
+       break;
+     }
++    case VTRUE: {
++      if (!hasjumps(e)) {
++        pc = luaK_jump(fs);  /* always jump */
++        break;
++      }
++      /* else go through */
++    }
+     default: {
+       pc = jumponcond(fs, e, 1);
+       break;
+--- src/ldblib.c       2008/01/21 13:11:21     1.104.1.3
++++ src/ldblib.c       2009/08/04 18:50:18     1.104.1.4
+@@ -1,5 +1,5 @@
+ /*
+-** $Id: ldblib.c,v 1.104.1.3 2008/01/21 13:11:21 roberto Exp $
++** $Id: ldblib.c,v 1.104.1.4 2009/08/04 18:50:18 roberto Exp $
+ ** Interface from Lua to its debug API
+ ** See Copyright Notice in lua.h
+ */
+@@ -45,6 +45,7 @@
+ static int db_getfenv (lua_State *L) {
++  luaL_checkany(L, 1);
+   lua_getfenv(L, 1);
+   return 1;
+ }
+--- src/liolib.c       2008/01/18 17:47:43     2.73.1.3
++++ src/liolib.c       2010/05/14 15:33:51     2.73.1.4
+@@ -1,5 +1,5 @@
+ /*
+-** $Id: liolib.c,v 2.73.1.3 2008/01/18 17:47:43 roberto Exp $
++** $Id: liolib.c,v 2.73.1.4 2010/05/14 15:33:51 roberto Exp $
+ ** Standard I/O (and system) library
+ ** See Copyright Notice in lua.h
+ */
+@@ -276,7 +276,10 @@
+     lua_pushnumber(L, d);
+     return 1;
+   }
+-  else return 0;  /* read fails */
++  else {
++    lua_pushnil(L);  /* "result" to be removed */
++    return 0;  /* read fails */
++  }
+ }
+--- src/llex.c 2007/12/27 13:02:25     2.20.1.1
++++ src/llex.c 2009/11/23 14:58:22     2.20.1.2
+@@ -1,5 +1,5 @@
+ /*
+-** $Id: llex.c,v 2.20.1.1 2007/12/27 13:02:25 roberto Exp $
++** $Id: llex.c,v 2.20.1.2 2009/11/23 14:58:22 roberto Exp $
+ ** Lexical Analyzer
+ ** See Copyright Notice in lua.h
+ */
+@@ -118,8 +118,10 @@
+   lua_State *L = ls->L;
+   TString *ts = luaS_newlstr(L, str, l);
+   TValue *o = luaH_setstr(L, ls->fs->h, ts);  /* entry for `str' */
+-  if (ttisnil(o))
++  if (ttisnil(o)) {
+     setbvalue(o, 1);  /* make sure `str' will not be collected */
++    luaC_checkGC(L);
++  }
+   return ts;
+ }
+--- src/loadlib.c      2008/08/06 13:29:28     1.52.1.3
++++ src/loadlib.c      2009/09/09 13:17:16     1.52.1.4
+@@ -1,5 +1,5 @@
+ /*
+-** $Id: loadlib.c,v 1.52.1.3 2008/08/06 13:29:28 roberto Exp $
++** $Id: loadlib.c,v 1.52.1.4 2009/09/09 13:17:16 roberto Exp $
+ ** Dynamic library loader for Lua
+ ** See Copyright Notice in lua.h
+ **
+@@ -639,7 +639,7 @@
+   lua_pushvalue(L, -1);
+   lua_replace(L, LUA_ENVIRONINDEX);
+   /* create `loaders' table */
+-  lua_createtable(L, 0, sizeof(loaders)/sizeof(loaders[0]) - 1);
++  lua_createtable(L, sizeof(loaders)/sizeof(loaders[0]) - 1, 0);
+   /* fill it with pre-defined loaders */
+   for (i=0; loaders[i] != NULL; i++) {
+     lua_pushcfunction(L, loaders[i]);
+--- src/lstrlib.c      2008/07/11 17:27:21     1.132.1.4
++++ src/lstrlib.c      2010/05/14 15:34:19     1.132.1.5
+@@ -1,5 +1,5 @@
+ /*
+-** $Id: lstrlib.c,v 1.132.1.4 2008/07/11 17:27:21 roberto Exp $
++** $Id: lstrlib.c,v 1.132.1.5 2010/05/14 15:34:19 roberto Exp $
+ ** Standard library for string operations and pattern-matching
+ ** See Copyright Notice in lua.h
+ */
+@@ -754,6 +754,7 @@
+ static int str_format (lua_State *L) {
++  int top = lua_gettop(L);
+   int arg = 1;
+   size_t sfl;
+   const char *strfrmt = luaL_checklstring(L, arg, &sfl);
+@@ -768,7 +769,8 @@
+     else { /* format item */
+       char form[MAX_FORMAT];  /* to store the format (`%...') */
+       char buff[MAX_ITEM];  /* to store the formatted item */
+-      arg++;
++      if (++arg > top)
++        luaL_argerror(L, arg, "no value");
+       strfrmt = scanformat(L, strfrmt, form);
+       switch (*strfrmt++) {
+         case 'c': {
+--- src/lvm.c  2007/12/28 15:32:23     2.63.1.3
++++ src/lvm.c  2009/07/01 21:10:33     2.63.1.4
+@@ -1,5 +1,5 @@
+ /*
+-** $Id: lvm.c,v 2.63.1.3 2007/12/28 15:32:23 roberto Exp $
++** $Id: lvm.c,v 2.63.1.4 2009/07/01 21:10:33 roberto Exp $
+ ** Lua virtual machine
+ ** See Copyright Notice in lua.h
+ */
+@@ -133,6 +133,7 @@
+ void luaV_settable (lua_State *L, const TValue *t, TValue *key, StkId val) {
+   int loop;
++  TValue temp;
+   for (loop = 0; loop < MAXTAGLOOP; loop++) {
+     const TValue *tm;
+     if (ttistable(t)) {  /* `t' is a table? */
+@@ -152,7 +153,9 @@
+       callTM(L, tm, t, key, val);
+       return;
+     }
+-    t = tm;  /* else repeat with `tm' */ 
++    /* else repeat with `tm' */
++    setobj(L, &temp, tm);  /* avoid pointing inside table (may rehash) */
++    t = &temp;
+   }
+   luaG_runerror(L, "loop in settable");
+ }
+