File lua50.spec of Package lua50

#
# spec file for package lua50
#
# 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/
#


%define major_version 5.0
%define libsuf 5_0
Name:           lua50
Version:        5.0.3
Release:        0
Summary:        Small Embeddable Language with Simple Procedural Syntax
License:        MIT
Group:          System/Libraries
Url:            http://www.lua.org
Source:         lua-%{version}.tar.gz
Source1:        macros.lua50
Source98:       baselibs.conf
Patch0:         %{name}-5.0.2-dynamic-loading.diff
BuildRequires:  pkg-config
BuildRequires:  readline-devel
Requires(post):         update-alternatives
Requires(postun):	update-alternatives
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}
Requires:       liblua%{libsuf} = %{version}
Conflicts:      lua-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 -n lua-%{version}
%patch0

%build
make MYCFLAGS="%{optflags} -fPIC" all %{?_smp_mflags}
# can't be merged into one line in parallel build, or it'll link .so before
# src/*.o is built
make MYCFLAGS="%{optflags} -fPIC" so sobin %{?_smp_mflags}

%install
make install soinstall INSTALL_ROOT="%{buildroot}%{_prefix}" INSTALL_LIB="%{buildroot}%{_libdir}" INSTALL_MAN="%{buildroot}%{_mandir}/man1" STRIP=true
# update-alternatives
mkdir -p %{buildroot}%{_sysconfdir}/alternatives
for file in lua luac ; do
    mv "%{buildroot}%{_bindir}/${file}"        "%{buildroot}%{_bindir}/${file}%{major_version}"
    touch "%{buildroot}%{_sysconfdir}/alternatives/${file}"
    ln -sf "%{_sysconfdir}/alternatives/${file}" "%{buildroot}%{_bindir}/${file}"
    mv "%{buildroot}%{_mandir}/man1/${file}.1" "%{buildroot}%{_mandir}/man1/${file}%{major_version}.1"
    touch "%{buildroot}%{_sysconfdir}/alternatives/${file}.1.gz"
    ln -sf "%{_sysconfdir}/alternatives/${file}.1.gz" "%{buildroot}%{_mandir}/man1/${file}.1.gz"
done

install -D -m 644 %{SOURCE1} %{buildroot}%{_sysconfdir}/rpm/macros.lua50

# 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

%post
%{_sbindir}/update-alternatives --install                                                   \
            %{_bindir}/lua            lua       %{_bindir}/lua%{major_version}          5 \
    --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

%postun
if [ "$1" = 0 ] ; then
    %{_sbindir}/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 COPYRIGHT HISTORY README
%{_bindir}/lua%{major_version}
%{_bindir}/luac%{major_version}
%{_mandir}/man1/lua%{major_version}.1.gz
%{_mandir}/man1/luac%{major_version}.1.gz
%{_bindir}/lua
%{_bindir}/luac
%{_mandir}/man1/lua.1.gz
%{_mandir}/man1/luac.1.gz
%ghost %{_sysconfdir}/alternatives/lua
%ghost %{_sysconfdir}/alternatives/luac
%ghost %{_sysconfdir}/alternatives/lua.1.gz
%ghost %{_sysconfdir}/alternatives/luac.1.gz
%{_sysconfdir}/rpm/macros.lua50

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

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

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

%changelog
openSUSE Build Service is sponsored by