forked from pool/lua54
19f828beff
- Add upstream-bugs.patch, upstream fixes from https://www.lua.org/bugs.html - files_test.patch: use proper check for 64-bit time_t - Amend list of 64bit architectures - Don't use %make_build macro, which doesn't work on SLE-12 - Add attrib_test.patch and files_test.patch which fix failing tests (https://is.gd/6DYPgG). With these two patches full test suite passes. - Update to 5.4.0 * Changes from http://www.lua.org/manual/5.4/readme.html#changes * new generational mode for garbage collection * to-be-closed variables * const variables * userdata can have multiple user values * new implementation for math.random * warning system * debug information about function arguments and returns * new semantics for the integer 'for' loop * optional 'init' argument to 'string.gmatch' * new functions 'lua_resetthread' and 'coroutine.close' * string-to-number coercions moved to the string library * allocation function allowed to fail when shrinking a memory block * new format '%p' in 'string.format' * utf8 library accepts codepoints up to 2^31 - Changes copied from request by Matthias G. Eckermann <mge@suse.com> - Updated spec file for lua 5.4: copied from lua53 - lua-build-system.patch: updated from Debian - added tests - Use FAT LTO objects in order to provide proper static library. - Update to 5.3.5: (it is really problematic to find ANY documentation of changes between minor versions; the best we have is https://www.lua.org/bugs.html) - Long brackets with a huge number of '=' overflow some internal buffer arithmetic. - Small build tweaks. - Provide symbol for pkgconfig - Add INSTALL_LMOD and INSTALL_CMOD variables to lua53.pc: this is queried for example by rrdtool's buildsystem. - Properly set includedir in the .pc file - Require lua macros rather than bundling them with lua itself - Add patch lua-build-system.patch for all the builsystem changes - Drop patches merged to the above: * lua-5.3.3-prefix.patch * lua-5.3.3-shared.patch - Drop not really needed lua-5.3.3-visible.patch - Version update to lua 5.3.4 containing various bugfixes - Rename to lua53 - Let package description adhere to guidelines: trim redundant or biased wording and strip future goals. - update version 5.3.3 * bugfix release - changes in 5.3.2 * metatable may access its own deallocated field when it has a self reference in __newindex * label between local definitions can mix-up their initializations * gmatch iterator fails when called from a coroutine different from the one that created it - split lua-suse.diff to 3 reasonable patches * add lua-5.3.3-prefix.patch * add lua-5.3.3-shared.patch * add lua-5.3.3-visible.patch - Update RPM group classification - Provide Lua(API) = 5.3, so that packages installing files to /usr/share/lua/5.3 can properly depend on the right lua branch. - Provide Lua(devel) = 5.3 by lua-devel and conflict with other packages providing Lua(devel) (e.g lua51-devel, lua52-devel...). - macros.lua installs to lua-devel - build with LUA_COMPAT_MODULE to compatible w/ old module system - update version 5.3.1 * integers (64-bit by default) * official support for 32-bit numbers * bitwise operators * basic utf-8 support * functions for packing and unpacking values * see http://www.lua.org/manual/5.3/readme.html#changes - Update to 5.2.4 * Compiler can optimize away overflow check in table.unpack. * Ephemeron table can wrongly collect entry with strong key. * Chunk with too many lines may crash Lua. - the %dir is still needed. - fix update-alternatives - fix /etc/rpm/macros.lua perms - updated to 5.2.3: * yieldable pcall and metamethods * new lexical scheme for globals * ephemeron tables * new library for bitwise operations * light C functions * emergency garbage collector * <CODE>goto</CODE> statement * finalizers for tables - updated to 5.2.2: bugfix release, fixed: * Stack overflow in vararg functions with many fixed parameters called with few arguments. * Garbage collector can trigger too many times in recursive loops. * Wrong assert when reporting concatenation errors (manifests only when Lua is compiled in debug mode). * Wrong error message in some short-cut expressions. * luac listings choke on long strings. * see http://www.lua.org/bugs.html for details - fix visibility of global variables [bnc#803791] * modified lua-suse.diff - added LUA_SO target as dependency to LUAC_T and LUA_T to fix parallel build * modified lua-suse.diff - added regresion check for this error into %check - update alternatives need to be %ghosts - export luaU_dump in order to fix linking of luac binary - Tweak lua-suse.diff again: * LUA_IFUNC must be defined as upstream but without "extern", revert the previous mod. * LUA_API must be defined as visibility default - Even after the previous update, third party modules/libraries would not work because LUA_CDIR constant is wrong in x86_64 - devel package must require libluaver = %{version} - Broken lua-suse patch breaks loading third party modules or scripts - updated to 5.2.1: * main thread predefined in the registry * bugfixes - Correction in Provides and Obsolete for lua-libs - Passed the spec file through spec-cleaner - Require liblua5_2 from the -devel package: Otherwise the .so file is a dangling symlink and apps will use the static lib. - Update baselibs.conf to reference liblua5_2 instead of liblua5_1. - readd lua.pc for building rpm - raise update-alternatives priority to 15 (lua51 have 10, lua50 have 5) - updated to 5.2.0: * Main changes yieldable pcall and metamethods new lexical scheme for globals ephemeron tables new library for bitwise operations light C functions emergency garbage collector [goto] statement finalizers for tables * Language no more fenv for threads or functions tables honor the [__len] metamethod hex and [\z] escapes in strings support for hexadecimal floats order metamethods work for different types no more verification of opcode consistency hook event "tail return" replaced by "tail call" empty statement [break] statement may appear in the middle of a block * Libraries arguments for function called through [xpcall] optional 'mode' argument to load and loadfile (to control binary x text) optional 'env' argument to load and loadfile (environment for loaded chunk) [loadlib] may load libraries with global names (RTLD_GLOBAL) new function [package.searchpath] modules receive their paths when loaded optional base in [math.log] optional separator in [string.rep] [file:write] returns <CODE>file</CODE> closing a pipe returns exit status [os.exit] may close state new metamethods [__pairs] and <CODE>__ipairs</CODE> new option 'isrunning' for [collectgarbage] and <CODE>lua_gc</CODE> frontier patterns [\0] in patterns new option [*L] for <CODE>io.read</CODE> options for [io.lines] [debug.getlocal] can access function varargs * C API new functions: lua_absindex, lua_arith, lua_compare, lua_copy, lua_len, lua_rawgetp, lua_rawsetp, lua_upvalueid, lua_upvaluejoin, lua_version, luaL_checkversion, luaL_setmetatable, luaL_testudata, luaL_tolstring [lua_pushstring] and <CODE>pushlstring</CODE> return string [nparams] and <CODE>isvararg</CODE> available in debug API new lua_Unsigned * Implementation max constants per function raised to 2^26 generational mode for garbage collection (experimental) NaN trick (experimental) internal (immutable) version of ctypes simpler implementation for string buffers parser uses much less C-stack space (no more auto arrays) * Lua standalone interpreter new [-E] option to avoid environment variables handling of non-string error messages - cross-build fix: use %__cc macro - use %_smp_mflags - removed -L/usr/lib from Libs: in etc/lua.pc [bnc#613497] - used upstream bugfix patch from http://www.lua.org/download.html - buildrequire pkg-config to fix provides - modified LUA_PATH_DEFAULT [bnc#589441]: search modules under /usr/%{_lib}/lua/%{major_version} too - add baselibs.conf as a source - package documentation as noarch - enable parallel building - updated patches to apply with fuzz=0 - add baselibs.conf - package owns /usr/{lib,share}/lua directories from now - emoved unneeded root.patch - updated to 5.1.4: bugfix release - Set LUA_ROOT to /usr and fix INSTALL_CMOD for lib64 - Add RPM macros file - Allows for lua-<modulename> packages like python, perl, and ruby - hint the solver about the package rename - do not package/provide the shared lib twice / follow shared lib policy - created -doc package - updated to version 5.1.3, bug fix release. Fixed bugs: * wrong error message in some concatenations * too many variables in an assignment may cause a C stack overflow * an error in a module loaded through the '-l' option shows no traceback * gsub may go wild when wrongly called without its third argument and with a large subject * table.remove removes last element of a table when given an out-of-bound index * lua_setfenv may crash if called over an invalid object * stand-alone interpreter shows incorrect error message when the "message" is a coroutine. * debug.sethook/gethook may overflow the thread's stack - using /sbin/ldconfig in specfile - updated to version 5.1.2, fixes some bugs: * count hook may be called without being set * code generated for "-nil", "-true", and "-false" is wrong * recursive coroutines may overflow C stack * wrong error message in some concatenations * very small numbers all collide in the hash function - package liblua.so as symlink. - the core package now uses update alternatives to allow installation of 5.0.x and 5.1.x - devel packages will conflict now - ARGH dont copy and paste!: lua-libs should not depend on lua. another run on (#217875) - really fix the file pattern (#217875) - splitted out lua-libs so we can install at least both libs in parallel. (#217875) - fix wrong prefix in lua.pc - link liblua with -lm to satisfy unresolved symbols - include lua.pc - update to 5.1.1 Language: * new module system. * new semantics for control variables of fors. * new semantics for setn/getn. * new syntax/semantics for varargs. * new long strings and comments. * new `mod' operator (`%') * new length operator #t * metatables for all types API: * new functions: lua_createtable, lua_get(set)field, lua_push(to)integer. * user supplies memory allocator (lua_open becomes lua_newstate). * luaopen_* functionst must be called through Lua. Implementation: * new configuration scheme via luaconf.h. * incremental garbage collection. * better handling of end-of-line in the lexer. * fully reentrant parser (new Lua function `load') * better support for 64-bit machines. * native loadlib support for Mac OS X. * standard distribution in only one library (lualib.a merged into lua.a) - converted neededforbuild to BuildRequires - Don't strip binaries. - Fix shared library linking. - enable dynamic loading capability (#106845) - initial packaging OBS-URL: https://build.opensuse.org/request/show/821637 OBS-URL: https://build.opensuse.org/package/show/devel:languages:lua/lua54?expand=0&rev=6
259 lines
9.4 KiB
RPMSpec
259 lines
9.4 KiB
RPMSpec
#
|
|
# spec file for package lua54
|
|
#
|
|
# Copyright (c) 2020 SUSE LLC
|
|
#
|
|
# 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 https://bugs.opensuse.org/
|
|
#
|
|
|
|
|
|
%define major_version 5.4
|
|
%define libname liblua5_4-5
|
|
Name: lua54
|
|
Version: 5.4.0
|
|
Release: 0
|
|
Summary: Small Embeddable Language with Procedural Syntax
|
|
License: MIT
|
|
Group: Development/Languages/Other
|
|
URL: http://www.lua.org
|
|
Source: http://www.lua.org/ftp/lua-5.4.0.tar.gz
|
|
Source1: http://www.lua.org/tests/lua-5.4.0-tests.tar.gz
|
|
Source99: baselibs.conf
|
|
# PATCH-FIX-SUSE tweak the buildsystem to produce what is needed for SUSE
|
|
Patch0: lua-build-system.patch
|
|
# PATCH-FIX-UPSTREAM attrib_test.patch https://is.gd/6DYPgG mcepl@suse.com
|
|
# Fix failing test
|
|
Patch1: attrib_test.patch
|
|
Patch2: files_test.patch
|
|
# PATCH-FIX-UPSTREAM https://www.lua.org/bugs.html
|
|
Patch3: upstream-bugs.patch
|
|
BuildRequires: libtool
|
|
BuildRequires: lua-macros
|
|
BuildRequires: pkgconfig
|
|
BuildRequires: readline-devel
|
|
Requires(post): update-alternatives
|
|
Requires(postun): update-alternatives
|
|
Provides: lua = %{version}
|
|
Obsoletes: lua < %{version}
|
|
Provides: Lua(API) = %{major_version}
|
|
|
|
%description
|
|
Lua is a programming language originally designed for extending
|
|
applications, but is also frequently used as a general-purpose,
|
|
stand-alone language.
|
|
|
|
Lua combines procedural syntax (similar to Pascal) with
|
|
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 suitable for configuration,
|
|
scripting, and rapid prototyping. Lua is implemented as a small library
|
|
of C functions, written in ANSI C.
|
|
|
|
%package devel
|
|
Summary: Development files for lua
|
|
Group: Development/Libraries/C and C++
|
|
Requires: %{libname} = %{version}
|
|
Requires: %{name} = %{version}
|
|
Requires: lua-macros
|
|
Requires(post): update-alternatives
|
|
Requires(postun): update-alternatives
|
|
Provides: lua-devel = %{version}
|
|
Provides: Lua(devel) = %{major_version}
|
|
Provides: pkgconfig(lua) = %{version}
|
|
|
|
%description devel
|
|
Lua is a programming language originally designed for extending
|
|
applications, but is also frequently used as a general-purpose,
|
|
stand-alone language.
|
|
|
|
This package contains files needed for embedding lua into your
|
|
application.
|
|
|
|
%package -n %{libname}
|
|
Summary: The Lua integration library
|
|
Group: System/Libraries
|
|
# Compat as libtool changes the soname
|
|
%ifarch aarch64 x86_64 ppc64 ppc64le s390x riscv64
|
|
Provides: liblua.so.5.4()(64bit)
|
|
%else
|
|
Provides: liblua.so.5.4
|
|
%endif
|
|
Provides: liblua5_4 = %{version}-%{release}
|
|
Obsoletes: liblua5_4 < %{version}-%{release}
|
|
Provides: %{name}-libs = %{version}
|
|
Obsoletes: %{name}-libs < %{version}
|
|
|
|
%description -n %{libname}
|
|
Lua is a programming language originally designed for extending
|
|
applications, but is also frequently used as a general-purpose,
|
|
stand-alone language.
|
|
|
|
Lua combines procedural syntax (similar to Pascal) with
|
|
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 suitable for configuration,
|
|
scripting, and rapid prototyping. Lua is implemented as a small library
|
|
of C functions, written in ANSI C.
|
|
|
|
%package doc
|
|
Summary: Documentation for Lua, a small embeddable language
|
|
Group: Documentation/HTML
|
|
BuildArch: noarch
|
|
|
|
%description doc
|
|
Lua is a programming language originally designed for extending
|
|
applications, but is also frequently used as a general-purpose,
|
|
stand-alone language.
|
|
|
|
Lua combines procedural syntax (similar to Pascal) with
|
|
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 suitable for configuration,
|
|
scripting, and rapid prototyping. Lua is implemented as a small library
|
|
of C functions, written in ANSI C.
|
|
|
|
%prep
|
|
%autosetup -n lua-%{version} -p1 -a1
|
|
|
|
# manpage
|
|
cat doc/lua.1 | sed 's/TH LUA 1/TH LUA%{major_version} 1/' > doc/lua%{major_version}.1
|
|
cat doc/luac.1 | sed 's/TH LUAC 1/TH LUAC%{major_version} 1/' > doc/luac%{major_version}.1
|
|
|
|
%build
|
|
%global _lto_cflags %{_lto_cflags} -ffat-lto-objects
|
|
sed -i -e "s@lib/lua/@%{_lib}/lua/@g" src/luaconf.h
|
|
export LIBTOOL="libtool --quiet"
|
|
make -O -j3 V=1 VERBOSE=1 -C src \
|
|
CC="cc" \
|
|
MYCFLAGS="%{optflags} -std=gnu99 -D_GNU_SOURCE -fPIC -DLUA_USE_LINUX -DLUA_COMPAT_MODULE" \
|
|
MYLIBS="-Wl,-E -ldl -lreadline -lhistory -lncurses" \
|
|
V=%{major_version} \
|
|
all
|
|
|
|
%install
|
|
%make_install \
|
|
V=%{major_version} \
|
|
INSTALL_TOP="%{buildroot}%{_prefix}" \
|
|
INSTALL_LIB="%{buildroot}%{_libdir}"
|
|
|
|
find %{buildroot} -type f -name "*.la" -delete -print
|
|
|
|
# create pkg-config file
|
|
cat > lua%{major_version}.pc <<-EOF
|
|
prefix=%{_prefix}
|
|
exec_prefix=%{_prefix}
|
|
libdir=%{_libdir}
|
|
includedir=%{_prefix}/include/lua%{major_version}
|
|
INSTALL_LMOD=%{_datadir}/lua/%{major_version}
|
|
INSTALL_CMOD=%{_libdir}/lua/%{major_version}
|
|
|
|
Name: Lua %{major_version}
|
|
Description: An Extensible Extension Language
|
|
Version: %{version}
|
|
Libs: -llua%{major_version} -lm
|
|
Cflags: -I\${includedir}
|
|
EOF
|
|
install -D -m 644 lua%{major_version}.pc %{buildroot}%{_libdir}/pkgconfig/lua%{major_version}.pc
|
|
|
|
# update-alternatives
|
|
mkdir -p %{buildroot}%{_sysconfdir}/alternatives
|
|
for file in lua luac ; do
|
|
touch "%{buildroot}%{_sysconfdir}/alternatives/${file}"
|
|
ln -sf "%{_sysconfdir}/alternatives/${file}" "%{buildroot}%{_bindir}/${file}"
|
|
touch "%{buildroot}%{_sysconfdir}/alternatives/${file}.1%{ext_man}"
|
|
ln -sf "%{_sysconfdir}/alternatives/${file}.1%{ext_man}" "%{buildroot}%{_mandir}/man1/${file}.1%{ext_man}"
|
|
done
|
|
|
|
# Compat link with older unprefixed library and with soname 0 from deb/etc
|
|
ln -s %{_libdir}/liblua%{major_version}.so.%{major_version}.0 %{buildroot}%{_libdir}/liblua%{major_version}.so.%{major_version}
|
|
ln -s %{_libdir}/liblua%{major_version}.so.%{major_version}.0 %{buildroot}%{_libdir}/liblua%{major_version}.so.0
|
|
ln -s %{_libdir}/liblua%{major_version}.so.%{major_version}.0 %{buildroot}%{_libdir}/liblua.so.%{major_version}
|
|
# Library devel alternatives
|
|
touch %{buildroot}%{_sysconfdir}/alternatives/liblua.so
|
|
ln -sf %{_sysconfdir}/alternatives/liblua.so %{buildroot}%{_libdir}/liblua.so
|
|
touch %{buildroot}%{_sysconfdir}/alternatives/lua.pc
|
|
ln -sf %{_sysconfdir}/alternatives/lua.pc %{buildroot}%{_libdir}/pkgconfig/lua.pc
|
|
|
|
%check
|
|
cd ./lua-%{version}-tests/
|
|
LD_LIBRARY_PATH=%{buildroot}%{_libdir} %{buildroot}%{_bindir}/lua%{major_version} all.lua
|
|
|
|
%post -n %{libname} -p /sbin/ldconfig
|
|
%postun -n %{libname} -p /sbin/ldconfig
|
|
|
|
%post
|
|
%{_sbindir}/update-alternatives --install \
|
|
%{_bindir}/lua lua %{_bindir}/lua%{major_version} 54 \
|
|
--slave %{_bindir}/luac luac %{_bindir}/luac%{major_version} \
|
|
--slave %{_mandir}/man1/lua.1%{ext_man} lua.1%{ext_man} %{_mandir}/man1/lua%{major_version}.1%{ext_man} \
|
|
--slave %{_mandir}/man1/luac.1%{ext_man} luac.1%{ext_man} %{_mandir}/man1/luac%{major_version}.1%{ext_man}
|
|
|
|
%postun
|
|
if [ "$1" = 0 ] ; then
|
|
%{_sbindir}/update-alternatives --remove lua %{_bindir}/lua%{major_version}
|
|
fi
|
|
|
|
%post devel
|
|
%{_sbindir}/update-alternatives --install \
|
|
%{_libdir}/liblua.so liblua.so %{_libdir}/liblua%{major_version}.so 54 \
|
|
--slave %{_libdir}/pkgconfig/lua.pc lua.pc %{_libdir}/pkgconfig/lua%{major_version}.pc
|
|
|
|
%postun devel
|
|
if [ "$1" = 0 ] ; then
|
|
%{_sbindir}/update-alternatives --remove liblua.so %{_libdir}/liblua%{major_version}.so
|
|
fi
|
|
|
|
%files
|
|
%doc README
|
|
%dir %{_libdir}/lua
|
|
%dir %{_libdir}/lua/%{major_version}
|
|
%dir %{_datadir}/lua
|
|
%dir %{_datadir}/lua/%{major_version}
|
|
%{_bindir}/lua%{major_version}
|
|
%{_bindir}/luac%{major_version}
|
|
%{_mandir}/man1/lua%{major_version}.1%{ext_man}
|
|
%{_mandir}/man1/luac%{major_version}.1%{ext_man}
|
|
# alternatives
|
|
%{_bindir}/lua
|
|
%{_bindir}/luac
|
|
%{_mandir}/man1/lua.1%{ext_man}
|
|
%{_mandir}/man1/luac.1%{ext_man}
|
|
%ghost %{_sysconfdir}/alternatives/lua
|
|
%ghost %{_sysconfdir}/alternatives/luac
|
|
%ghost %{_sysconfdir}/alternatives/lua.1%{ext_man}
|
|
%ghost %{_sysconfdir}/alternatives/luac.1%{ext_man}
|
|
|
|
%files -n %{libname}
|
|
%{_libdir}/liblua%{major_version}.so.*
|
|
%{_libdir}/liblua.so.*
|
|
|
|
%files devel
|
|
%dir %{_includedir}/lua%{major_version}
|
|
%{_includedir}/lua%{major_version}/lauxlib.h
|
|
%{_includedir}/lua%{major_version}/lua.h
|
|
%{_includedir}/lua%{major_version}/lua.hpp
|
|
%{_includedir}/lua%{major_version}/luaconf.h
|
|
%{_includedir}/lua%{major_version}/lualib.h
|
|
%{_libdir}/liblua%{major_version}.a
|
|
%{_libdir}/liblua%{major_version}.so
|
|
%{_libdir}/pkgconfig/lua%{major_version}.pc
|
|
# alternatives
|
|
%{_libdir}/liblua.so
|
|
%{_libdir}/pkgconfig/lua.pc
|
|
%ghost %{_sysconfdir}/alternatives/liblua.so
|
|
%ghost %{_sysconfdir}/alternatives/lua.pc
|
|
|
|
%files doc
|
|
%doc doc/*
|
|
|
|
%changelog
|