Sync from SUSE:SLFO:Main luajit revision 9029ac716108c384671287f8f78cf32c

This commit is contained in:
Adrian Schröter 2024-05-03 16:26:50 +02:00
commit fc687abb8c
11 changed files with 7558 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

View File

@ -0,0 +1,22 @@
From: =?utf-8?q?Ond=C5=99ej_Sur=C3=BD?= <ondrej@sury.org>
Date: Tue, 17 Nov 2015 16:27:11 +0100
Subject: Enable debugging symbols in the build
---
src/Makefile | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/src/Makefile
+++ b/src/Makefile
@@ -54,9 +54,9 @@ CCOPT_arm64=
CCOPT_ppc=
CCOPT_mips=
#
-CCDEBUG=
+#CCDEBUG=
# Uncomment the next line to generate debug information:
-#CCDEBUG= -g
+CCDEBUG= -g
#
CCWARN= -Wall
# Uncomment the next line to enable more warnings:

View File

@ -0,0 +1,44 @@
From: =?utf-8?q?Ond=C5=99ej_Sur=C3=BD?= <ondrej@sury.org>
Date: Thu, 19 Nov 2015 16:29:02 +0200
Subject: Get rid of LUAJIT_VERSION_SYM that changes ABI on every patch release
---
src/lj_dispatch.c | 5 -----
src/luajit.c | 1 -
src/luajit_rolling.h | 3 ---
3 files changed, 9 deletions(-)
--- a/src/lj_dispatch.c
+++ b/src/lj_dispatch.c
@@ -318,11 +318,6 @@ int luaJIT_setmode(lua_State *L, int idx
return 1; /* OK. */
}
-/* Enforce (dynamic) linker error for version mismatches. See luajit.c. */
-LUA_API void LUAJIT_VERSION_SYM(void)
-{
-}
-
/* -- Hooks --------------------------------------------------------------- */
/* This function can be called asynchronously (e.g. during a signal). */
--- a/src/luajit.c
+++ b/src/luajit.c
@@ -515,7 +515,6 @@ static int pmain(lua_State *L)
int argn;
int flags = 0;
globalL = L;
- LUAJIT_VERSION_SYM(); /* Linker-enforced version check. */
argn = collectargs(argv, &flags);
if (argn < 0) { /* Invalid args? */
--- a/src/luajit_rolling.h
+++ b/src/luajit_rolling.h
@@ -73,7 +73,4 @@ LUA_API void luaJIT_profile_stop(lua_Sta
LUA_API const char *luaJIT_profile_dumpstack(lua_State *L, const char *fmt,
int depth, size_t *len);
-/* Enforce (dynamic) linker error for version mismatches. Call from main. */
-LUA_API void LUAJIT_VERSION_SYM(void);
-
#endif

16
_service Normal file
View File

@ -0,0 +1,16 @@
<services>
<service name="tar_scm" mode="manual">
<param name="scm">git</param>
<param name="url">https://github.com/LuaJIT/LuaJIT.git</param>
<param name="versionprefix">5.1.2.1.0+git</param>
<param name="revision">v2.1</param>
<param name="filename">luajit</param>
<param name="changesgenerate">enable</param>
<param name="changesauthor">mcepl@cepl.eu</param>
</service>
<service name="recompress" mode="manual">
<param name="file">*.tar</param>
<param name="compression">xz</param>
</service>
<service name="set_version" mode="manual"/>
</services>

4
_servicedata Normal file
View File

@ -0,0 +1,4 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/LuaJIT/LuaJIT.git</param>
<param name="changesrevision">41fb94defa8f830ce69a8122b03f6ac3216d392a</param></service></servicedata>

1
baselibs.conf Normal file
View File

@ -0,0 +1 @@
libluajit-5_1-2

BIN
luajit-5.1.2.1.0+git.1693350652.41fb94d.tar.xz (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,93 @@
---
Makefile | 9 +++++----
etc/luajit.pc | 2 +-
src/Makefile | 3 ++-
src/luaconf.h | 2 +-
4 files changed, 9 insertions(+), 7 deletions(-)
--- a/Makefile
+++ b/Makefile
@@ -16,13 +16,14 @@
MAJVER= 2
MINVER= 1
ABIVER= 5.1
+SUFFIX= 5_1
# LuaJIT uses rolling releases. The release version is based on the time of
# the latest git commit. The 'git' command must be available during the build.
RELVER= $(shell cat src/luajit_relver.txt 2>/dev/null || : )
# Note: setting it with := doesn't work, since it will change during the build.
-MMVERSION= $(MAJVER).$(MINVER)
+MMVERSION= $(SUFFIX)-$(MAJVER).$(MINVER)
VERSION= $(MMVERSION).$(RELVER)
##############################################################################
@@ -51,7 +52,7 @@ INSTALL_MAN= $(INSTALL_SHARE)/man/man1
INSTALL_PKGCONFIG= $(INSTALL_LIB)/pkgconfig
INSTALL_TNAME= luajit-$(VERSION)
-INSTALL_TSYMNAME= luajit
+INSTALL_TSYMNAME= luajit-$(SUFFIX)
INSTALL_ANAME= libluajit-$(ABIVER).a
INSTALL_SOSHORT1= libluajit-$(ABIVER).so
INSTALL_SOSHORT2= libluajit-$(ABIVER).so.$(MAJVER)
@@ -89,7 +90,7 @@ ifneq ($(INSTALL_DEFINC),$(INSTALL_INC))
SED_PC+= -e "s|^includedir=.*|includedir=$(INSTALL_INC)|"
endif
-FILE_T= luajit
+FILE_T= luajit-$(SUFFIX)
FILE_A= libluajit.a
FILE_SO= libluajit.so
FILE_MAN= luajit.1
@@ -136,7 +137,7 @@ install: $(INSTALL_DEP)
( $(LDCONFIG) $(INSTALL_LIB) || : ) && \
$(SYMLINK) $(INSTALL_SONAME) $(INSTALL_SHORT1) && \
$(SYMLINK) $(INSTALL_SONAME) $(INSTALL_SHORT2) || :
- cd etc && $(INSTALL_F) $(FILE_MAN) $(INSTALL_MAN)
+ cd etc && $(INSTALL_F) $(FILE_MAN) $(INSTALL_MAN)/luajit-$(SUFFIX).1
cd etc && $(SED_PC) $(FILE_PC) > $(FILE_PC).tmp && \
$(INSTALL_F) $(FILE_PC).tmp $(INSTALL_PC) && \
$(RM) $(FILE_PC).tmp
--- a/etc/luajit.pc
+++ b/etc/luajit.pc
@@ -10,7 +10,7 @@ multilib=lib
exec_prefix=${prefix}
libdir=${exec_prefix}/${multilib}
libname=luajit-${abiver}
-includedir=${prefix}/include/luajit-${majver}.${minver}
+includedir=${prefix}/include/luajit-5_1-${majver}.${minver}
INSTALL_LMOD=${prefix}/share/lua/${abiver}
INSTALL_CMOD=${prefix}/${multilib}/lua/${abiver}
--- a/src/Makefile
+++ b/src/Makefile
@@ -14,6 +14,7 @@ MAJVER= 2
MINVER= 1
ABIVER= 5.1
NODOTABIVER= 51
+SUFFIX= 5_1
##############################################################################
############################# COMPILER OPTIONS #############################
@@ -520,7 +521,7 @@ LIB_VMDEFP= $(LIB_VMDEF)
LUAJIT_O= luajit.o
LUAJIT_A= libluajit.a
LUAJIT_SO= libluajit.so
-LUAJIT_T= luajit
+LUAJIT_T= luajit-$(SUFFIX)
ALL_T= $(LUAJIT_T) $(LUAJIT_A) $(LUAJIT_SO) $(HOST_T)
ALL_HDRGEN= lj_bcdef.h lj_ffdef.h lj_libdef.h lj_recdef.h lj_folddef.h \
--- a/src/luaconf.h
+++ b/src/luaconf.h
@@ -37,7 +37,7 @@
#endif
#define LUA_LROOT "/usr/local"
#define LUA_LUADIR "/lua/5.1/"
-#define LUA_LJDIR "/luajit-2.1/"
+#define LUA_LJDIR "/luajit-5_1-2.1/"
#ifdef LUA_ROOT
#define LUA_JROOT LUA_ROOT

6919
luajit-s390x.patch Normal file

File diff suppressed because it is too large Load Diff

301
luajit.changes Normal file
View File

@ -0,0 +1,301 @@
-------------------------------------------------------------------
Mon Oct 9 20:09:43 UTC 2023 - Matej Cepl <mcepl@cepl.eu>
- Adjust luajit-lua-versioned.patch to have correct LUA_LJDIR
(bsc#1215592).
-------------------------------------------------------------------
Wed Sep 06 21:51:55 UTC 2023 - mcepl@cepl.eu
- Update to version 5.1.2.1.0+git.1693350652.41fb94d:
* Add randomized register allocation for fuzz testing.
* ARM64: Improve register allocation for integer IR_MUL/IR_MULOV.
* ARM64: Fix register allocation for IR_*LOAD.
* Update external MSDN URL in code.
* FFI/ARM64/OSX: Handle non-standard OSX C calling conventions.
* FFI: Unify stack setup for C calls in interpreter.
* ARM64: Prevent STP fusion for conditional code emitted by TBAR.
* ARM64: Fix LDP/STP fusing for unaligned accesses.
* Handle table unsinking in the presence of IRFL_TAB_NOMM.
* Use fallback name for install files without valid .git or .relver.
* Handle non-.git checkout with .relver in .bat-file builds.
* Fix external C call stack check when using LUAJIT_MODE_WRAPCFUNC.
* Fix predict_next() in parser (again).
- Update luajit-lua-versioned.patch to work with the git checkout
created tarball. The point of the patch is to extend the
version number so that it is always bigger than 2.2.0 version
of moonjit, which is Obsoleted by this package.
-------------------------------------------------------------------
Wed Aug 23 14:18:06 UTC 2023 - mcepl@cepl.eu
- Update to version 2.1.0~beta3+git.1692716794.03c3112:
* Fix typo.
* Handle the case when .git is not a directory.
* Add .gitattributes to dynamically resolve .relver.
* Add .gitattributes to dynamically resolve .relver.
* Fix for last commit: also remove symlink on uninstall.
* Switch to rolling releases: mark v2.1 as production.
* Fix Windows build scripts for rolling releases.
* Switch MSVC and console build scripts to rolling releases.
* Switch build system to rolling releases.
* Update documentation for switch to rolling releases.
* Bump copyright date.
* Remove work-in-progress notice in string buffer docs.
* MIPS: Fix "bad FP FLOAD" assertion.
* Ensure forward progress on trace exit to BC_ITERN.
* ARM64: Add support for ARM64e pointer authentication codes (PAC).
* DynASM/ARM64: Add instructions for ARM64e PAC.
* Fix maxslots when recording BC_VARG, part 3.
* Fix predict_next() in parser.
* MIPS32: Declare that the assembler part uses the FR=0 model.
* ARM64: Fix assembly of HREFK (again).
* Fix frame for more types of on-trace error messages.
* Add workaround for bytecode dump of builtins.
* DynASM: Fix regression due to warning fix.
* Fix base register coalescing in side trace.
* ARM64: Fix assembly of HREFK.
* Fix maxslots when recording BC_VARG, part 2.
* Fix maxslots when recording BC_TSETM.
* Fix maxslots when recording BC_VARG.
* Fix register mask for stack check in head of side trace.
* FFI: Fix ffi.metatype() for non-raw types.
* ARM64: Fix LDP code generation.
* MIPSr6: Add missing files to Makefile install target.
* DynASM: Fix warnings.
* Fix frame for on-trace out-of-memory error.
* Fix handling of instable types in TNEW/TDUP load forwarding.
* Fix compiler warning.
* Fix last commit.
* Print errors from __gc finalizers instead of rethrowing them.
* Fix TDUP load forwarding after table rehash.
* Fix canonicalization of +-0.0 keys for IR_NEWREF.
* Improve error reporting on stack overflow.
* Allow building sources with mixed LF/CRLF line-endings.
* Fix compiler warning.
* Don't fail for Clang builds, which pretend to be an ancient GCC.
* Avoid negation of signed integers in C that may hold INT*_MIN.
* Correct fix for stack check when recording BC_VARG.
* Disable FMA by default. Use -Ofma or jit.opt.start("+fma") to enable.
* FFI: Fix dangling reference to CType. Improve checks.
* ARM64: Fix code generation for IR_SLOAD with typecheck + conversion.
* PS4/PS5: Fix build scripts.
* Avoid assertion in case of stack overflow from stitched trace.
-------------------------------------------------------------------
Mon Aug 21 13:04:40 UTC 2023 - Matej Cepl <mcepl@suse.com>
- Update luajit-s390x.patch from gh#LuaJIT/LuaJIT#631 to the
current form.
-------------------------------------------------------------------
Wed Jan 25 10:52:05 UTC 2023 - Michal Suchanek <msuchanek@suse.de>
- Opencode %make_build to prevent build failure when not defined.
-------------------------------------------------------------------
Tue Nov 22 23:18:13 UTC 2022 - mcepl@cepl.eu
- Update to version 2.1.0~beta3+git.1669107176.46aa45d:
* NX: Always compile with -fPIC.
* Clarify contact page.
* Ensure correct stack top for OOM error message.
* ARM64: Fix IR_SLOAD assembly.
* Fix trace join to BC_JLOOP originating from BC_ITERN.
* Fix compiler warnings.
* Fix last edit.
* Remove dead Wiki links.
* Fix QNX build.
* Add -F option to override filename in jit.bcsave (luajit -b).
* Patch luajit.pc with INSTALL_INC, if customized.
* LJ_GC64: Fix lua_concat().
* Prevent use of RTLD_DEFAULT when NO_RTLD_DEFAULT is defined.
* Improve GC estimation for userdata with attached managed memory.
* Add missing GC steps to string buffer methods.
* x86/x64: Limit VLOAD fusion to simple cases.
* OSX/iOS/ARM64: Fix generation of Mach-O object files.
* Prevent trace start at BC_ITERL after compiled BC_ITERN.
* ARM64: Allow building with unwinding disabled.
* FFI: Fix sizeof expression in C parser for reference types.
* FFI: Fix ffi.alignof() for reference types.
* FFI: Allow ffi.metatype() for typedefs with attributes.
* OSX/iOS/ARM64: Fix bytecode embedding in Mach-O object file.
* LJ_GC64: Fix IR_VARG offset for fixed number of results.
* x86/x64: Fix math.ceil(-0.9) result sign.
* Grammar and spell check.
* Make embedded bytecode readable and forward-compatible.
* DynASM: Fix warnings.
* Fix warnings in minilua.c.
* Update console build instructions.
* Add Nintendo Switch port.
* Avoid zero-sized arrays in jit_State.
* Don't use jit_State during build with JIT disabled.
* DynASM/ARM64: Fix LSL/BFI* encoding with variable registers.
* Fix ITERN loop detection when hook checks are enabled.
* Prevent C compiler undefined-behavior optimization.
* Fix alias analysis for table length forwarding.
* Fix loop initialization in table.foreach().
* LJ_GC64: Fix HREFK optimization.
* Fix recording of __concat metamethod.
* Cleanup of system and architecture support docs.
* Add PS5 port.
* Fix assertions.
* x64: Fix RETHI/RETLO swap after call.
* Fix assertion for LJ_KEYINDEX.
* Add missing check for LJ_KEYINDEX in ITERN recording.
* DynASM/ARM64: Fix NOP instruction for aligment
- Was forced to remove perhaps in future important patches:
- luajit-ppc64-replace-asserts.patch
- 0004-Add-ppc64-support-based-on-koriakin-GitHub-patchset.patch
-------------------------------------------------------------------
Tue Nov 22 16:22:18 UTC 2022 - Michael Gorse <mgorse@suse.com>
- Also exclude s390x from the build (boo#1204557).
-------------------------------------------------------------------
Tue Nov 1 16:01:53 UTC 2022 - Michael Gorse <mgorse@suse.com>
- Add ppc64 and ppc64le to ExcludeArch for now. This can be
removed if we rebase the ppc64 patch, but it is no longer being
maintained and seems unlikely to land upstream (bsc#1204557).
-------------------------------------------------------------------
Tue Oct 4 19:00:14 UTC 2022 - Dirk Müller <dmueller@suse.com>
- exclude luajit from building on riscv64 - not yet supported
-------------------------------------------------------------------
Wed Mar 23 21:33:11 UTC 2022 - mcepl@cepl.eu
- Update to version 2.1.0~beta3+git.1647772157.43ebb949:
* Fix soft-float IR_POW splitting.
* Fix BC_UCLO insertion for returns.
* Fix compiler warning.
* Revert to trival pow() optimizations to prevent inaccuracies.
* Fix string buffer COW handling, part 2.
* Fix install docs for Android.
* *BSD: Fix getentropy() declaration.
* Fix string buffer COW handling.
* Fix command-line argv handling.
* Don't export internal symbol.
* Fix pow() optimization inconsistencies.
* Always exit after machine code page protection change fails.
* Fix FOLD rule for BUFHDR append with intervening buffer use.
* Fix compiled error handling for buffer methods.
* Prevent unroll across BC_ITERN.
* Prevent replay of buffer operation for PHI operands.
* Save trace recorder state around VM event call.
* Bump copyright date.
* FFI: Ensure library is loaded before de-serializing FFI types.
* Fix HREFK forwarding vs. table.clear().
* Fix FOLD rule for BUFHDR append.
* OSX: Disable unreliable assertion for external frame unwinding.
* Limit exponent range in number parsing.
* Fix tonumber("-0") in dual-number mode.
* Limit work done in SINK pass.
* Fix ABC FOLD rule with constants.
* Prevent CSE of a REF_BASE operand across IR_RETF.
* Windows: Fix binary output of jit.bcsave to stdout.
* Fix FOLD rule for x-0.
* Update Android build docs.
* Update Android build docs.
* ARM64: Fix pcall() error case.
* OSX/ARM64: Fix external unwinding.
* Fix string buffer method recording.
* Fix interaction of profiler and ITERN recording.
* Fix compilation of multi-result call to next().
* ARM64: Fix IR_HREF code generation.
* MIPS64: Fix soft-float IR_TOSTR.
* MIPS: Fix register allocation in assembly of HREF.
* Fix compiler warning.
* Windows/x64: Document MSVC flags for C++ exception interoperability.
* FFI: Ensure returned string is alive in ffi.typeinfo().
* OSX/ARM64: Disable unwind info.
* Fix stack allocation after on-trace stack check.
* Fix ITERN blacklisting.
* Ensure ITERN forward progress on interpreter bailout.
* ARM64: Reorder interpreter stack frame and fix unwinding.
* Don't bail out to interpreter to JLOOP originating from ITERN.
* FFI: Don't load PC from non-function object in FFI continuation.
* FFI: Don't load PC from non-function object in FFI continuation.
* FFI: Fix missing cts->L initialization in argv2ctype().
* OSX/ARM64: Disable external unwinding for now.
* Compile table traversals: next(), pairs(), BC_ISNEXT/BC_ITERN.
* Use IR_HIOP for generalized two-register returns.
* Refactor table traversal.
* ARM: Fix symbol display in trace disassembly.
* Refactor IR_TMPREF generation.
* Refactor IR_VLOAD to take an offset.
* MIPS: Fix trace linking.
* String buffers, part 4b: Improve de-serialization checks.
* String buffers, part 4a: Add metatable serialization dictionary.
* Consider slots used by upvalues in use-def analysis.
* Prevent loop in snap_usedef().
* Fix io.close() error message.
* Fix io.close().
* Fix minilua vararg stack handling.
* PS4: Fix compile.
* Avoid out-of-range number of results when compiling select(k, ...).
* String buffers, part 3d: Compile string buffer methods and functions.
* Minor improvements of optimizations.
* Fix error message in lj_lib_checkintrange().
* String buffers, part 2f: Prevent self-put of buffer.
* String buffers, part 3c: Add IRBUFHDR_WRITE mode.
* Fix IRXLOAD_* mode bits description.
* String buffers, part 3b: Change IR_BUFHDR op2 mode bits to mode.
* String buffers, part 3a: Add IR_TMPREF for passing TValues to helpers.
* Add IRCONV_NONE for pass-through INT to I64/U64 type change.
* Fix jit.dump() output for IR_CONV.
- Patches broken in the need of rebase (temporarily switched off):
- 0004-Add-ppc64-support-based-on-koriakin-GitHub-patchset.patch
- luajit-ppc64-replace-asserts.patch
-------------------------------------------------------------------
Wed Oct 27 20:20:36 UTC 2021 - Fabian Vogt <fvogt@suse.com>
- Replace luajit-ppc64-remove-asserts.patch with
luajit-ppc64-replace-asserts.patch to use the proper assert
functions instead of removing them.
-------------------------------------------------------------------
Mon Oct 25 21:55:16 UTC 2021 - Michael Gorse <mgorse@suse.com>
- Add luajit-ppc64-remove-asserts.patch: remove calls to
lua_assert. Fixes the build with our revision (bsc#1191615).
- Add luajit-s390x.patch: add s390x support, based on Fedora's
patch and ported to our revision.
- Remove ExcludeArch, since package currently builds on s390x.
-------------------------------------------------------------------
Thu Oct 7 15:09:55 UTC 2021 - Michael Gorse <mgorse@suse.com>
- Exclude s390x for now. There is a not-yet-upstreamed port
available, but we would need to rebase it for our release.
-------------------------------------------------------------------
Mon Jul 12 17:15:55 UTC 2021 - Matej Cepl <mcepl@suse.com>
- Clean up SPEC. We don't need update-alternatives after all.
-------------------------------------------------------------------
Tue Jun 29 17:17:36 UTC 2021 - munix9@googlemail.com
- Update to version 2.1.0~beta3+git294.e9577376:
* Disable unreliable assertion for external frame unwinding.
* Flush and close output file after profiling run.
* Avoid conflict between 64 bit lightuserdata and ITERN key.
-------------------------------------------------------------------
Thu Jun 24 10:15:35 UTC 2021 - munix9@googlemail.com
- Update to version 2.1.0~beta3+git291.3f9389ed:
* Throw any errors before stack changes in trace stitching.
* DynASM/x86: Add missing escape in pattern.
* Fix HTML.
* String buffers, part 2e: add serialization string dictionary.
* DynASM/ARM64: Fix LSL/BFI* encoding with variable shifts.
* Fix MinGW static build.
* Fix dependencies.
* Fix IR_BUFHDR assembly.

132
luajit.spec Normal file
View File

@ -0,0 +1,132 @@
#
# spec file for package luajit
#
# Copyright (c) 2023 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/
#
# These numbers are from readelf -a /usr/lib*/lib*.so* |grep soname (dots replaced by underscores)
%define lib_version 5_1
%define so_version 2
Name: luajit
Version: 5.1.2.1.0+git.1693350652.41fb94d
Release: 0
Summary: JIT compiler for Lua language
License: MIT
URL: https://luajit.org/
Source0: %{name}-%{version}.tar.xz
Source1: baselibs.conf
# PATCH-FIX-OPENSUSE luajit-lua-versioned.patch mcepl@suse.com
# Because we obsolete moonjit with version number higher than %%{version} we have to emulate Epoch
Patch0: luajit-lua-versioned.patch
# https://salsa.debian.org/lua-team/luajit/-/raw/master/debian/patches/0002-Enable-debugging-symbols-in-the-build.patch
Patch2: 0002-Enable-debugging-symbols-in-the-build.patch
# https://salsa.debian.org/lua-team/luajit/-/raw/master/debian/patches/0003-Get-rid-of-LUAJIT_VERSION_SYM-that-changes-ABI-on-ev.patch
Patch3: 0003-Get-rid-of-LUAJIT_VERSION_SYM-that-changes-ABI-on-ev.patch
# Most recent s390x patches at https://github.com/luajit/luajit/pull/631
Patch4: luajit-s390x.patch
# PPC64 patches are out of sync
# # https://salsa.debian.org/lua-team/luajit/-/raw/master/debian/patches/0004-Add-ppc64-support-based-on-koriakin-GitHub-patchset.patch
# # Patch again out of sync, gh#LuaJIT/LuaJIT#140
# Patch5: 0004-Add-ppc64-support-based-on-koriakin-GitHub-patchset.patch
# Patch6: luajit-ppc64-replace-asserts.patch
BuildRequires: git
BuildRequires: pkgconfig
Requires: %{name}-%{lib_version}-%{so_version} = %{version}
Provides: lua51-luajit = %{version}-%{release}
Obsoletes: lua51-luajit <= 2.2.0
Provides: moonjit = %{version}-%{release}
Obsoletes: moonjit <= 2.2.0
# lj_arch.h:441:2: error: #error "No target architecture defined"
ExcludeArch: riscv64 ppc64 ppc64le
%description
A Just-In-Time Compiler for Lua language
%package -n libluajit-%{lib_version}-%{so_version}
Summary: Library for JIT Lua compiler
Provides: %{name}-%{lib_version}-%{so_version} = %{version}-%{release}
%description -n libluajit-%{lib_version}-%{so_version}
Libraries to use JIT Lua compiler
%package devel
Summary: Devel files for %{name}
Requires: %{name} = %{version}
Requires: luajit-%{lib_version}-%{so_version} = %{version}
Provides: moonjit-devel = %{version}-%{release}
Obsoletes: moonjit-devel <= 2.2.0
Provides: libluajit-devel = %{version}-%{release}
%description devel
Devel files for luajit package
%prep
%autosetup -p1
# Fix variables
sed -i "s,PREFIX= %{_prefix}/local,PREFIX= %{_prefix}," Makefile
sed -i "s,%{_libexecdir},%{_libdir}," etc/luajit.pc
# Unfortunately, tar_scm doesn't use git archive (gh#openSUSE/obs-service-tar_scm#144)
%global realver 2.1.%(echo '%{version}' | cut -d. -f 6)
echo '%{version}' | cut -d. -f 6 >.relver
%build
export CFLAGS="%{optflags}"
%make_build %{?_make_output_sync} \
Q= \
DYNAMIC_CC="cc -fPIC" \
LDCONFIG="true" \
TARGET_AR="ar rcus" \
TARGET_STRIP=: \
MULTILIB=%{_lib}
%install
make DESTDIR=%{buildroot} install \
INSTALL_LIB="%{buildroot}%{_libdir}" \
DYNAMIC_CC="cc -fPIC" \
LDCONFIG="true" \
TARGET_AR="ar rcus" \
TARGET_STRIP=: \
MULTILIB=%{_lib}
# remove static lib, not needed
rm %{buildroot}%{_libdir}/*.a
# Create runnable binary
ln -sf %{_bindir}/luajit-%{lib_version}-%{realver} %{buildroot}%{_bindir}/luajit
%post -n libluajit-%{lib_version}-%{so_version} -p /sbin/ldconfig
%postun -n libluajit-%{lib_version}-%{so_version} -p /sbin/ldconfig
%files
%license COPYRIGHT
%doc README
%{_bindir}/luajit
%{_bindir}/luajit-%{lib_version}
%{_bindir}/luajit-%{lib_version}-%{realver}
%{_mandir}/man1/luajit-%{lib_version}.1%{?ext_man}
%{_datadir}/luajit-%{lib_version}-2.1
%files -n libluajit-%{lib_version}-%{so_version}
%{_libdir}/libluajit-5.1.so.*
%files devel
%{_includedir}/luajit-%{lib_version}-2.1
%{_libdir}/libluajit-5.1.so
%{_libdir}/pkgconfig/luajit.pc
%changelog