File lua.spec of Package lua

#
# spec file for package lua
#
# Copyright (c) 2014 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.2.2
Release:        0
Summary:        Small Embeddable Language with Simple Procedural Syntax
License:        MIT
Group:          System/Libraries
Url:            http://www.lua.org
Source:         http://www.lua.org/ftp/lua-%{version}.tar.gz
Source1:        macros.lua
Source2:        baselibs.conf
# prefix and build shared libraries (upstream don't want this in Makefile)
# visibility: I don't see the point why divert from upstream except that
#             luaU_dump, luaP_opmodes and luaP_opnames need to be visible
#             to luac; if you will divert, don't forgot that LUAI_DDEC
#             prefixes declaration of _variables_
Patch0:         %{name}-suse.diff
Patch1:         lua-CVE-2014-5461.patch
%define major_version 5.2
%define libsuf        5_2
BuildRequires:  pkg-config
BuildRequires:  readline-devel
BuildRequires:  update-alternatives
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
Requires(pre):  update-alternatives

%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}
Requires:       liblua%{libsuf} = %{version}
Conflicts:      lua50-devel
Conflicts:      lua51-devel

%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%{libsuf}
Summary:        Small Embeddable Language with Simple Procedural Syntax
Group:          System/Libraries
Provides:       %{name}-libs = %{version}
Obsoletes:      %{name}-libs < %{version}

%description -n liblua%{libsuf}
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
%if 0%{?suse_version} >= 1120
BuildArch:      noarch
%endif

%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
%patch0 -p1
%patch1

%build
sed -i -e "s@lib/lua/@%{_lib}/lua/@g" src/luaconf.h
make %{?_smp_mflags} -C src CC="gcc" MYCFLAGS="%{optflags} -std=gnu99 -D_GNU_SOURCE -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"
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 %{SOURCE1} %{buildroot}%{_sysconfdir}/rpm/macros.lua

# create pkg-config file
cat > lua.pc <<-EOF
prefix=%{_prefix}
exec_prefix=%{_prefix}
libdir=%{_libdir}
includedir=%{_prefix}}/include

Name: Lua
Description: An Extensible Extension Language
Version: %{version}
Libs: -llua -lm
Cflags:
EOF
install -D -m 644 lua.pc %{buildroot}/%{_libdir}/pkgconfig/lua.pc

%check
cd src
LD_LIBRARY_PATH=`pwd` ./lua -e 'print(0)' > /dev/null

%post
/usr/sbin/update-alternatives --install                                                   \
            %{_bindir}/lua            lua       %{_bindir}/lua%{major_version}         15 \
    --slave %{_bindir}/luac           luac      %{_bindir}/luac%{major_version}           \
    --slave %{_mandir}/man1/lua.1.gz  lua.1.gz  %{_mandir}/man1/lua%{major_version}.1.gz  \
    --slave %{_mandir}/man1/luac.1.gz luac.1.gz %{_mandir}/man1/luac%{major_version}.1.gz

%preun
if [ "$1" = 0 ] ; then
    /usr/sbin/update-alternatives --remove lua %{_bindir}/lua%{major_version}
fi

%post -n liblua%{libsuf} -p /sbin/ldconfig

%postun -n liblua%{libsuf} -p /sbin/ldconfig

%files
%defattr(-,root,root)
%doc README
%ghost %{_mandir}/man1/lua.1.gz
%{_mandir}/man1/lua%{major_version}.1*
%ghost %{_mandir}/man1/luac.1.gz
%{_mandir}/man1/luac%{major_version}.1*
%ghost %{_bindir}/lua
%{_bindir}/lua%{major_version}
%ghost %{_bindir}/luac
%{_bindir}/luac%{major_version}
%dir %{_libdir}/lua
%dir %{_libdir}/lua/%{major_version}
%dir %{_datadir}/lua
%dir %{_datadir}/lua/%{major_version}
%{_sysconfdir}/rpm/macros.lua
%ghost %{_sysconfdir}/alternatives/luac
%ghost %{_sysconfdir}/alternatives/lua.1.gz
%ghost %{_sysconfdir}/alternatives/luac.1.gz
%ghost %{_sysconfdir}/alternatives/lua

%files -n liblua%{libsuf}
%defattr(-,root,root)
%{_libdir}/liblua.so.%{major_version}

%files devel
%defattr(-,root,root)
%{_includedir}/lauxlib.h
%{_includedir}/lua.h
%{_includedir}/lua.hpp
%{_includedir}/luaconf.h
%{_includedir}/lualib.h
%{_libdir}/liblua.a
%{_libdir}/liblua.so
%{_libdir}/pkgconfig/lua.pc

%files doc
%defattr(-,root,root)
%doc doc/*

%changelog
openSUSE Build Service is sponsored by