[packages/luajit] build luajit both with and wthout lua 5.2 compat changes

atler atler at pld-linux.org
Thu Dec 26 17:35:55 CET 2024


commit 98da746aafadca1a8137a29e5a5db8c8818f5451
Author: Jan Palus <atler at pld-linux.org>
Date:   Thu Dec 26 16:43:34 2024 +0100

    build luajit both with and wthout lua 5.2 compat changes
    
    Luajit is first and foremost implementation of Lua 5.1 hence we should
    aim for best compatibility with Lua 5.1. It is commonly known fact that
    Lua versions are not backward compatible so ie Lua 5.2 breaks
    compatibility with 5.1, 5.3 breaks compatibility with 5.2 and so does
    5.4 with 5.3. Luajit already enables some of Lua 5.2 extensions by
    default, but not those that introduce incompatibilities with Lua 5.1.
    The latter are ebabled with LUAJIT_ENABLE_LUA52COMPAT.
    
    Also Luajit no longer loads system Lua 5.1 modules (common between all
    Lua 5.1 interpreters) which it did since forever and its generally
    easier to maintain dependcies if it's known it continues to do so.
    
    Hence build Luajit with 5.2 extensions for packages that need it, but
    most importantly keep building Luajit without them for others.

 luajit.spec | 169 ++++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 file changed, 153 insertions(+), 16 deletions(-)
---
diff --git a/luajit.spec b/luajit.spec
index 4a6d667..fd1e0fd 100644
--- a/luajit.spec
+++ b/luajit.spec
@@ -24,7 +24,6 @@ Requires:	%{name}-libs = %{version}-%{release}
 ExclusiveArch:	%{ix86} %{x8664} %{arm} aarch64 mips mips64 mipsel ppc
 BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
-%define		lua_abi		5.2
 %define		luajit_abi	2.1
 
 %description
@@ -34,10 +33,22 @@ language.
 %description -l pl.UTF-8
 LuaJIT to działający w locie (Just-In-Time) kompilator języka Lua.
 
+%package common
+Summary:	Common files for LuaJIT libraries
+Summary(pl.UTF-8):	Pliki wspólne dla bibliotek LuaJIT
+Group:		Libraries
+
+%description common
+Common files for LuaJIT libraries.
+
+%description common -l pl.UTF-8
+Pliki wspólne dla bibliotek LuaJIT.
+
 %package libs
 Summary:	LuaJIT libraries
 Summary(pl.UTF-8):	Biblioteki LuaJIT
 Group:		Libraries
+Requires:	%{name}-common = %{version}-%{release}
 
 %description libs
 LuaJIT libraries.
@@ -45,10 +56,22 @@ LuaJIT libraries.
 %description libs -l pl.UTF-8
 Biblioteki LuaJIT.
 
+%package common-devel
+Summary:	Common header files for LuaJIT library
+Summary(pl.UTF-8):	Wspólne pliki nagłówkowe biblioteki LuaJIT
+Group:		Development/Libraries
+
+%description common-devel
+Common header files for LuaJIT library.
+
+%description common-devel -l pl.UTF-8
+Wspólne pliki nagłówkowe biblioteki LuaJIT.
+
 %package devel
 Summary:	Header files for LuaJIT library
 Summary(pl.UTF-8):	Pliki nagłówkowe biblioteki LuaJIT
 Group:		Development/Libraries
+Requires:	%{name}-common-devel = %{version}-%{release}
 Requires:	%{name}-libs = %{version}-%{release}
 
 %description devel
@@ -69,8 +92,70 @@ Static LuaJIT library.
 %description static -l pl.UTF-8
 Statyczna biblioteka LuaJIT.
 
+%package -n luajit52
+Summary:	Just-in-Time compiler for Lua (with Lua 5.2 extensions)
+Summary(pl.UTF-8):	Kompilator JIT dla języka Lua (z rozszerzeniami Lua 5.2)
+Group:		Libraries
+Requires:	luajit52-libs = %{version}-%{release}
+
+%description -n luajit52
+LuaJIT is a Just-In-Time (JIT) compiler for the Lua programming
+language (with Lua 5.2 extensions).
+
+%description -n luajit52 -l pl.UTF-8
+LuaJIT to działający w locie (Just-In-Time) kompilator języka Lua (z
+rozszerzeniami Lua 5.2).
+
+%package -n luajit52-libs
+Summary:	LuaJIT libraries (with Lua 5.2 extensions)
+Summary(pl.UTF-8):	Biblioteki LuaJIT (z rozszerzeniami Lua 5.2)
+Group:		Libraries
+Requires:	%{name}-common = %{version}-%{release}
+
+%description -n luajit52-libs
+LuaJIT libraries (with Lua 5.2 extensions).
+
+%description -n luajit52-libs -l pl.UTF-8
+Biblioteki LuaJIT (z rozszerzeniami Lua 5.2).
+
+%package -n luajit52-devel
+Summary:	Header files for LuaJIT library (with Lua 5.2 extensions)
+Summary(pl.UTF-8):	Pliki nagłówkowe biblioteki LuaJIT (z rozszerzeniami Lua 5.2)
+Group:		Development/Libraries
+Requires:	%{name}-common-devel = %{version}-%{release}
+Requires:	luajit52-libs = %{version}-%{release}
+
+%description -n luajit52-devel
+Header files for LuaJIT library (with Lua 5.2 extensions).
+
+%description -n luajit52-devel -l pl.UTF-8
+Pliki nagłówkowe biblioteki LuaJIT (z rozszerzeniami Lua 5.2).
+
+%package -n luajit52-static
+Summary:	Static LuaJIT library (with Lua 5.2 extensions)
+Summary(pl.UTF-8):	Statyczna biblioteka LuaJIT (z rozszerzeniami Lua 5.2)
+Group:		Development/Libraries
+Requires:	luajit52-devel = %{version}-%{release}
+
+%description -n luajit52-static
+Static LuaJIT library (with Lua 5.2 extensions).
+
+%description -n luajit52-static -l pl.UTF-8
+Statyczna biblioteka LuaJIT (z rozszerzeniami Lua 5.2).
+
 %prep
-%setup -q -n luajit
+%setup -qcT
+tar --one-top-level=luajit-51 --strip-components=1 -xf %{SOURCE0}
+cd luajit-51
+%patch -P 0 -p1
+
+# preserve timestamps
+sed -i -e '/install -m/s/-m/-p -m/' Makefile
+
+echo %{rolling_ver} > .relver
+cd ..
+tar --one-top-level=luajit-52 --strip-components=1 -xf %{SOURCE0}
+cd luajit-52
 %patch -P 0 -p1
 %patch -P 1 -p1
 
@@ -78,12 +163,14 @@ Statyczna biblioteka LuaJIT.
 sed -i -e '/install -m/s/-m/-p -m/' Makefile
 
 echo %{rolling_ver} > .relver
+cd ..
 
 %build
 # Q= - enable verbose output
 # E= @: - disable @echo messages
 # NOTE: we use amalgamated build as per documentation suggestion doc/install.html
-%{__make} \
+for v in 51 52; do
+%{__make} -C luajit-$v \
 	VERSION="%{version}" \
 	PREFIX=%{_prefix} \
 	MULTILIB=%{_lib} \
@@ -96,13 +183,31 @@ echo %{rolling_ver} > .relver
 	E="@:" \
 	Q= \
 	amalg
+done
 
 %install
 rm -rf $RPM_BUILD_ROOT
 
 install -d $RPM_BUILD_ROOT%{_libdir}/luajit/%{luajit_abi}
 
-%{__make} install \
+%{__make} -C luajit-52 install \
+	DESTDIR=$RPM_BUILD_ROOT \
+	VERSION="%{version}" \
+	PREFIX=%{_prefix} \
+	MULTILIB=%{_lib} \
+	LMULTILIB=%{_lib} \
+	INSTALL_BIN=$RPM_BUILD_ROOT%{_bindir} \
+	INSTALL_LIB=$RPM_BUILD_ROOT%{_libdir} \
+	INSTALL_SHARE=$RPM_BUILD_ROOT%{_datadir} \
+	INSTALL_MAN=$RPM_BUILD_ROOT%{_mandir}/man1 \
+	INSTALL_PKGCONFIG=$RPM_BUILD_ROOT%{_pkgconfigdir} \
+	LDCONFIG="/sbin/ldconfig -n"
+%{__mv} $RPM_BUILD_ROOT%{_bindir}/luajit{,52}-%{version}
+%{__ln_s} luajit52-%{version} $RPM_BUILD_ROOT%{_bindir}/luajit52
+%{__mv} $RPM_BUILD_ROOT%{_pkgconfigdir}/luajit{,52}.pc
+%{__mv} $RPM_BUILD_ROOT%{_mandir}/man1/luajit{,52}.1
+
+%{__make} -C luajit-51 install \
 	DESTDIR=$RPM_BUILD_ROOT \
 	VERSION="%{version}" \
 	PREFIX=%{_prefix} \
@@ -121,34 +226,66 @@ rm -rf $RPM_BUILD_ROOT
 %post	libs -p /sbin/ldconfig
 %postun	libs -p /sbin/ldconfig
 
+%post	-n luajit52-libs -p /sbin/ldconfig
+%postun	-n luajit52-libs -p /sbin/ldconfig
+
 %files
 %defattr(644,root,root,755)
-%doc COPYRIGHT README
+%doc luajit-51/{COPYRIGHT,README}
 %attr(755,root,root) %{_bindir}/luajit
 %attr(755,root,root) %{_bindir}/luajit-%{version}
 %{_mandir}/man1/luajit.1*
 
-%files libs
+%files common
 %defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/libluajit-%{lua_abi}.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libluajit-*.so.2
 %dir %{_libdir}/luajit
 %dir %{_libdir}/luajit/%{luajit_abi}
 %dir %{_datadir}/luajit
 %{_datadir}/luajit/%{luajit_abi}
-# lua module dirs (shared with lua interpreters)
 %dir %{_libdir}/lua
-%dir %{_libdir}/lua/%{lua_abi}
-%dir %{_datadir}/lua
-%dir %{_datadir}/lua/%{lua_abi}
 
-%files devel
+%files libs
 %defattr(644,root,root,755)
-%doc doc/*
-%attr(755,root,root) %{_libdir}/libluajit-%{lua_abi}.so
+%attr(755,root,root) %{_libdir}/libluajit-5.1.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libluajit-5.1.so.2
+# lua module dirs (shared with lua interpreters)
+%dir %{_libdir}/lua/5.1
+%dir %{_datadir}/lua/5.1
+
+%files common-devel
+%defattr(644,root,root,755)
+%doc luajit-51/doc/*
 %{_includedir}/luajit-%{luajit_abi}
+
+%files devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libluajit-5.1.so
 %{_pkgconfigdir}/luajit.pc
 
 %files static
 %defattr(644,root,root,755)
-%{_libdir}/libluajit-%{lua_abi}.a
+%{_libdir}/libluajit-5.1.a
+
+%files -n luajit52
+%defattr(644,root,root,755)
+%doc luajit-52/{COPYRIGHT,README}
+%attr(755,root,root) %{_bindir}/luajit52
+%attr(755,root,root) %{_bindir}/luajit52-%{version}
+%{_mandir}/man1/luajit52.1*
+
+%files -n luajit52-libs
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libluajit-5.2.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libluajit-5.2.so.2
+# lua module dirs (shared with lua interpreters)
+%dir %{_libdir}/lua/5.2
+%dir %{_datadir}/lua/5.2
+
+%files -n luajit52-devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libluajit-5.2.so
+%{_pkgconfigdir}/luajit52.pc
+
+%files -n luajit52-static
+%defattr(644,root,root,755)
+%{_libdir}/libluajit-5.2.a
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/luajit.git/commitdiff/98da746aafadca1a8137a29e5a5db8c8818f5451



More information about the pld-cvs-commit mailing list