import luajit-2.1.1720049189-1.el10

i10ce changed/i10ce/luajit-2.1.1720049189-1.el10
Arkady L. Shane 1 month ago
commit 7765cffa06
Signed by: tigro
GPG Key ID: 1EC08A25C9DB2503

2
.gitignore vendored

@ -0,0 +1,2 @@
SOURCES/LuaJIT-test-cleanup.tar.gz
SOURCES/LuaJIT-2.1.1720049189.tar.gz

@ -0,0 +1,2 @@
4a813c4c4e17e2f564418c764ca7023f1be3083d SOURCES/LuaJIT-test-cleanup.tar.gz
8fc378c5c5eee3c1174bfd0162dc9aa1229e9f2e SOURCES/LuaJIT-2.1.1720049189.tar.gz

@ -0,0 +1,400 @@
From 170b3e6e07613f83afa320bec3e0e0e6da53f583 Mon Sep 17 00:00:00 2001
From: Sameera Deshpande <sameera.deshpande@linaro.org>
Date: Fri, 15 Feb 2019 07:46:16 +0530
Subject: [PATCH 1/8] Add support for FNMADD and FNMSUB.
---
src/lj_asm_arm64.h | 32 +++++++++++++++++++++++++++++++-
1 file changed, 31 insertions(+), 1 deletion(-)
diff --git a/src/lj_asm_arm64.h b/src/lj_asm_arm64.h
index 5b40f4cc..cc842b53 100644
--- a/src/lj_asm_arm64.h
+++ b/src/lj_asm_arm64.h
@@ -361,6 +361,35 @@ static int asm_fusemadd(ASMState *as, IRIns *ir, A64Ins ai, A64Ins air)
return 0;
}
+/* Fuse FP neg-multiply-add/sub. */
+static int asm_fusenmadd(ASMState *as, IRIns *ir, A64Ins ai, A64Ins air)
+{
+ IRRef ref = ir->op1;
+ IRIns *irn = IR(ref);
+ if (irn->o != IR_ADD && irn->o != IR_SUB)
+ return 0;
+
+ if (!mayfuse(as, ref))
+ return 0;
+
+ IRRef lref = irn->op1, rref = irn->op2;
+ IRIns *irm;
+ if (lref != rref &&
+ ((mayfuse(as, lref) && (irm = IR(lref), irm->o == IR_MUL) &&
+ ra_noreg(irm->r)) ||
+ (mayfuse(as, rref) && (irm = IR(rref), irm->o == IR_MUL) &&
+ (rref = lref, ra_noreg(irm->r))))) {
+ Reg dest = ra_dest(as, ir, RSET_FPR);
+ Reg add = ra_hintalloc(as, rref, dest, RSET_FPR);
+ Reg left = ra_alloc2(as, irm,
+ rset_exclude(rset_exclude(RSET_FPR, dest), add));
+ Reg right = (left >> 8); left &= 255;
+ emit_dnma(as, (irn->o == IR_ADD ? ai : air), (dest & 31), (left & 31), (right & 31), (add & 31));
+ return 1;
+ }
+ return 0;
+}
+
/* Fuse BAND + BSHL/BSHR into UBFM. */
static int asm_fuseandshift(ASMState *as, IRIns *ir)
{
@@ -1461,7 +1490,8 @@ static void asm_mul(ASMState *as, IRIns *ir)
static void asm_neg(ASMState *as, IRIns *ir)
{
if (irt_isnum(ir->t)) {
- asm_fpunary(as, ir, A64I_FNEGd);
+ if (!asm_fusenmadd(as, ir, A64I_FNMADDd))
+ asm_fpunary(as, ir, A64I_FNEGd);
return;
}
asm_intneg(as, ir);
--
2.43.2
From 09b3c908b4e6397655e0c476ca7d3528d2b4773d Mon Sep 17 00:00:00 2001
From: Vivien HENRIET <bubuabu@bubuabu.org>
Date: Wed, 30 Jan 2019 23:44:51 +0100
Subject: [PATCH 2/8] Fix os.date() for timezone change awareness
On POSIX target, system timezone change are not taken into account.
To reproduce,
1. call os.date()
2. change your timezone
3. call os.date() within the same luajit instance
On POSIX target, os.date use localtime_r to retrieve time.
On other target, the function localtime is used. But there is a behaviour
diference between these two function. localtime acts as if it called tzset
which localtime_r don't.
To fix the issue tzset is called before localtime_r.
---
src/lib_os.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/lib_os.c b/src/lib_os.c
index cf0df281..d9dda853 100644
--- a/src/lib_os.c
+++ b/src/lib_os.c
@@ -185,6 +185,7 @@ LJLIB_CF(os_date)
#endif
} else {
#if LJ_TARGET_POSIX
+ tzset();
stm = localtime_r(&t, &rtm);
#else
stm = localtime(&t);
--
2.43.2
From 78ec3dbc5a3f6c0198e3dbe7901d80f7feb77344 Mon Sep 17 00:00:00 2001
From: Siddhesh Poyarekar <siddhesh@sourceware.org>
Date: Thu, 14 Mar 2019 23:08:24 +0530
Subject: [PATCH 3/8] Revert "FFI: Make FP to U64 conversions match JIT backend
behavior."
This reverts commit f5d424afe8b9395f0df05aba905e0e1f6a2262b8.
The patch breaks test 279, i.e.
assert(tostring(bit.band(1ll, 1, 1ull, -1)) == "1ULL")
The patch was put in to make the JIT and interpreter behaviour
consistent[1] for float to unsigned int conversions but it ended up
making things worse. There needs to be a better fix for this.
[1] https://github.com/LuaJIT/LuaJIT/pull/415
---
src/lj_obj.h | 18 +++++-------------
1 file changed, 5 insertions(+), 13 deletions(-)
diff --git a/src/lj_obj.h b/src/lj_obj.h
index 2d4386e1..d40f7264 100644
--- a/src/lj_obj.h
+++ b/src/lj_obj.h
@@ -996,22 +996,14 @@ static LJ_AINLINE int32_t lj_num2bit(lua_Number n)
#define lj_num2int(n) ((int32_t)(n))
-/*
-** This must match the JIT backend behavior. In particular for archs
-** that don't have a common hardware instruction for this conversion.
-** Note that signed FP to unsigned int conversions have an undefined
-** result and should never be relied upon in portable FFI code.
-** See also: C99 or C11 standard, 6.3.1.4, footnote of (1).
-*/
static LJ_AINLINE uint64_t lj_num2u64(lua_Number n)
{
-#if LJ_TARGET_X86ORX64 || LJ_TARGET_MIPS
- int64_t i = (int64_t)n;
- if (i < 0) i = (int64_t)(n - 18446744073709551616.0);
- return (uint64_t)i;
-#else
- return (uint64_t)n;
+#ifdef _MSC_VER
+ if (n >= 9223372036854775808.0) /* They think it's a feature. */
+ return (uint64_t)(int64_t)(n - 18446744073709551616.0);
+ else
#endif
+ return (uint64_t)n;
}
static LJ_AINLINE int32_t numberVint(cTValue *o)
--
2.43.2
From b71187a97405c03c64caa9a295e94c7708ffab35 Mon Sep 17 00:00:00 2001
From: Siddhesh Poyarekar <siddhesh@sourceware.org>
Date: Sun, 17 Mar 2019 11:34:04 +0530
Subject: [PATCH 4/8] Guard against undefined behaviour when casting from float
to unsigned
Only range (-1.0, UINT64_MAX) can be safely converted to unsigned
directly, and (-INT64_MAX,INT_64_MAX) through a cast to int64_t first.
The remaining range is undefined.
TODO: Do the same for JIT as well as for float to other ranges.
---
src/lj_obj.h | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/lj_obj.h b/src/lj_obj.h
index d40f7264..f79cd02c 100644
--- a/src/lj_obj.h
+++ b/src/lj_obj.h
@@ -998,12 +998,18 @@ static LJ_AINLINE int32_t lj_num2bit(lua_Number n)
static LJ_AINLINE uint64_t lj_num2u64(lua_Number n)
{
+ /* Undefined behaviour. This is deliberately not a full check because we
+ don't want to slow down compliant code. */
+ lj_assertX(n >= -9223372036854775809.0, "Overflow");
#ifdef _MSC_VER
if (n >= 9223372036854775808.0) /* They think it's a feature. */
return (uint64_t)(int64_t)(n - 18446744073709551616.0);
else
#endif
- return (uint64_t)n;
+ if (n > -1.0)
+ return (uint64_t)n;
+ else
+ return (uint64_t)(int64_t)n;
}
static LJ_AINLINE int32_t numberVint(cTValue *o)
--
2.43.2
From 19908a818ccd8d5888bab6f4a4d518701570eaf8 Mon Sep 17 00:00:00 2001
From: Siddhesh Poyarekar <siddhesh@sourceware.org>
Date: Mon, 25 Mar 2019 17:56:53 +0530
Subject: [PATCH 5/8] Fix build erro with fnmsub fusing
---
src/lj_asm_arm64.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/lj_asm_arm64.h b/src/lj_asm_arm64.h
index cc842b53..d56a376a 100644
--- a/src/lj_asm_arm64.h
+++ b/src/lj_asm_arm64.h
@@ -1490,7 +1490,7 @@ static void asm_mul(ASMState *as, IRIns *ir)
static void asm_neg(ASMState *as, IRIns *ir)
{
if (irt_isnum(ir->t)) {
- if (!asm_fusenmadd(as, ir, A64I_FNMADDd))
+ if (!asm_fusenmadd(as, ir, A64I_FNMADDd, A64I_FNMSUBd))
asm_fpunary(as, ir, A64I_FNEGd);
return;
}
--
2.43.2
From e8279fb7d556553adb6f645f481ba399f144c80b Mon Sep 17 00:00:00 2001
From: Siddhesh Poyarekar <siddhesh@sourceware.org>
Date: Thu, 28 Mar 2019 09:19:34 +0530
Subject: [PATCH 6/8] aarch64: better float to unsigned int conversion
A straight float to unsigned conversion has a limited range of (-1.0,
UTYPE_MAX) which should be fine in general but for the sake of
consistency across the interpreter and the JIT compiler, it is
necessary to work a wee bit harder to expand this range to (TYPE_MIN,
UTYPE_MAX), which can be done with a simple range check. This adds a
couple of branches but only one of the branches should have a
noticeable performance impact on most processors with branch
predictors, and that too only if the input number varies wildly in
range.
This currently works only for 64-bit conversions, 32-bit is still WIP.
---
src/lj_asm_arm64.h | 30 ++++++++++++++++++++++--------
src/lj_target_arm64.h | 1 +
2 files changed, 23 insertions(+), 8 deletions(-)
diff --git a/src/lj_asm_arm64.h b/src/lj_asm_arm64.h
index d56a376a..a1b44ec2 100644
--- a/src/lj_asm_arm64.h
+++ b/src/lj_asm_arm64.h
@@ -665,14 +665,28 @@ static void asm_conv(ASMState *as, IRIns *ir)
} else {
Reg left = ra_alloc1(as, lref, RSET_FPR);
Reg dest = ra_dest(as, ir, RSET_GPR);
- A64Ins ai = irt_is64(ir->t) ?
- (st == IRT_NUM ?
- (irt_isi64(ir->t) ? A64I_FCVT_S64_F64 : A64I_FCVT_U64_F64) :
- (irt_isi64(ir->t) ? A64I_FCVT_S64_F32 : A64I_FCVT_U64_F32)) :
- (st == IRT_NUM ?
- (irt_isint(ir->t) ? A64I_FCVT_S32_F64 : A64I_FCVT_U32_F64) :
- (irt_isint(ir->t) ? A64I_FCVT_S32_F32 : A64I_FCVT_U32_F32));
- emit_dn(as, ai, dest, (left & 31));
+
+ A64Ins ai_signed = st == IRT_NUM ?
+ (irt_is64(ir->t) ? A64I_FCVT_S64_F64 : A64I_FCVT_S32_F64) :
+ (irt_is64(ir->t) ? A64I_FCVT_S64_F32 : A64I_FCVT_S32_F32);
+
+ if (irt_isi64(ir->t) || irt_isint(ir->t))
+ emit_dn(as, ai_signed, dest, (left & 31));
+ else {
+ A64Ins ai_unsigned = st == IRT_NUM ?
+ (irt_is64(ir->t) ? A64I_FCVT_U64_F64 : A64I_FCVT_U32_F64) :
+ (irt_is64(ir->t) ? A64I_FCVT_U64_F32 : A64I_FCVT_U32_F32);
+
+ MCLabel l_done = emit_label(as);
+ emit_dn(as, ai_unsigned, dest, (left & 31));
+ MCLabel l_signed = emit_label(as);
+ emit_jmp(as, l_done);
+ emit_dn(as, ai_signed, dest, (left & 31));
+ /* The valid range for float to unsigned int conversion is (-1.0,
+ UINT{,64}_MAX-1), but we just compare with 0 to save a load. */
+ emit_cond_branch(as, CC_PL, l_signed);
+ emit_nm(as, st == IRT_NUM ? A64I_FCMPZd : A64I_FCMPZs, left & 31, 0);
+ }
}
} else if (st >= IRT_I8 && st <= IRT_U16) { /* Extend to 32 bit integer. */
Reg dest = ra_dest(as, ir, RSET_GPR);
diff --git a/src/lj_target_arm64.h b/src/lj_target_arm64.h
index c34f1e59..1e2f19ea 100644
--- a/src/lj_target_arm64.h
+++ b/src/lj_target_arm64.h
@@ -288,6 +288,7 @@ typedef enum A64Ins {
A64I_STPs = 0x2d000000,
A64I_STPd = 0x6d000000,
A64I_FCMPd = 0x1e602000,
+ A64I_FCMPZs = 0x1e202008,
A64I_FCMPZd = 0x1e602008,
A64I_FCSELd = 0x1e600c00,
A64I_FRINTMd = 0x1e654000,
--
2.43.2
From f37d7e3dac8648771171038c13408811ab3e2694 Mon Sep 17 00:00:00 2001
From: Siddhesh Poyarekar <siddhesh@sourceware.org>
Date: Thu, 28 Mar 2019 10:50:23 +0530
Subject: [PATCH 7/8] Better behaviour for float to uint32_t conversions
This is the uint32_t part of the float to unsigned int conversions for
the interpreter. The cast ends up working correctly for x86 but not
for aarch64 since fcvtzu sets the result to zero on negative inputs.
Work slightly harder to make sure that negative number inputs behave
like x86.
This fixes the interpreter but not the JIT compiler, which errors out
during the narrowing pass.
---
src/lj_cconv.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/lj_cconv.c b/src/lj_cconv.c
index 419a8f45..ebb98521 100644
--- a/src/lj_cconv.c
+++ b/src/lj_cconv.c
@@ -203,7 +203,13 @@ void lj_cconv_ct_ct(CTState *cts, CType *d, CType *s,
else if (dsize == 2) *(int16_t *)dp = (int16_t)i;
else *(int8_t *)dp = (int8_t)i;
} else if (dsize == 4) {
- *(uint32_t *)dp = (uint32_t)n;
+ /* Undefined behaviour. This is deliberately not a full check because we
+ * don't want to slow down compliant code. */
+ lj_assertX(n >= -2147483649.0, "Overflow");
+ if (n > -1.0)
+ *(uint32_t *)dp = (uint32_t)n;
+ else
+ *(uint32_t *)dp = (uint32_t)(int32_t)n;
} else if (dsize == 8) {
if (!(dinfo & CTF_UNSIGNED))
*(int64_t *)dp = (int64_t)n;
--
2.43.2
From 9d79974a1e059f34ad9d2ad38419be34acd6c343 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= <ondrej@sury.org>
Date: Thu, 19 Nov 2015 16:29:02 +0200
Subject: [PATCH 8/8] 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(-)
diff --git a/src/lj_dispatch.c b/src/lj_dispatch.c
index b9748bba..d09238f8 100644
--- a/src/lj_dispatch.c
+++ b/src/lj_dispatch.c
@@ -318,11 +318,6 @@ int luaJIT_setmode(lua_State *L, int idx, int mode)
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). */
diff --git a/src/luajit.c b/src/luajit.c
index 73e29d44..31fdba18 100644
--- 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? */
diff --git a/src/luajit_rolling.h b/src/luajit_rolling.h
index 2d04402c..5ab4167d 100644
--- a/src/luajit_rolling.h
+++ b/src/luajit_rolling.h
@@ -73,8 +73,5 @@ LUA_API void luaJIT_profile_stop(lua_State *L);
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);
-
#error "DO NOT USE luajit_rolling.h -- only include build-generated luajit.h"
#endif
--
2.43.2

@ -0,0 +1,157 @@
From fdd83775c8e0e6a4e0ffd30dacd0b841bd243820 Mon Sep 17 00:00:00 2001
From: Siddhesh Poyarekar <siddhesh@sourceware.org>
Date: Thu, 21 Oct 2021 11:04:58 +0200
Subject: [PATCH] Update Makefile to run LuaJIT-test-cleanup
The tests and benchmarks in the LuaJIT-test-cleanup repo are more or
less complete and with scaffolding added, they can now be called
seamlessly from within the luajit sources using `make check` and `make
bench` respectively.
---
Makefile | 17 ++++++++++++---
bench/Makefile | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 70 insertions(+), 3 deletions(-)
create mode 100644 bench/Makefile
Index: LuaJIT-2.1/Makefile
===================================================================
--- LuaJIT-2.1.orig/Makefile 2023-08-29 08:35:57.939200606 +0200
+++ LuaJIT-2.1/Makefile 2023-08-29 08:40:59.284925468 +0200
@@ -118,14 +118,14 @@ endif
##############################################################################
-INSTALL_DEP= src/luajit
+LUAJIT_BIN= src/luajit
default all $(INSTALL_DEP):
@echo "==== Building LuaJIT $(MMVERSION) ===="
$(MAKE) -C src
@echo "==== Successfully built LuaJIT $(MMVERSION) ===="
-install: $(INSTALL_DEP)
+install: $(LUAJIT_BIN)
@echo "==== Installing LuaJIT $(VERSION) to $(PREFIX) ===="
$(MKDIR) $(INSTALL_DIRS)
cd src && $(INSTALL_X) $(FILE_T) $(INSTALL_T)
@@ -158,6 +158,17 @@ uninstall:
$(RMDIR) $(UNINSTALL_DIRS) || :
@echo "==== Successfully uninstalled LuaJIT $(VERSION) from $(PREFIX) ===="
+check: $(LUAJIT_BIN)
+ @echo "==== Running tests for LuaJIT $(VERSION) ===="
+ $^ test/test.lua
+ @echo "==== All tests for LuaJIT $(VERSION) succeeded ===="
+
+# It is assumed that libluajit.a is built in the process of building LUAJIT_BIN.
+bench: $(LUAJIT_BIN)
+ @echo "==== Running benchmark for LuaJIT $(VERSION) ===="
+ make -C bench FILE_A=$(FILE_A)
+ @echo "==== Successfully finished running benchmark for LuaJIT $(VERSION) ===="
+
##############################################################################
amalg:
@@ -168,6 +179,6 @@ amalg:
clean:
$(MAKE) -C src clean
-.PHONY: all install amalg clean
+.PHONY: all install amalg clean bench check
##############################################################################
Index: LuaJIT-2.1/bench/Makefile
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ LuaJIT-2.1/bench/Makefile 2023-08-29 08:36:28.443172755 +0200
@@ -0,0 +1,56 @@
+CC=gcc
+
+LUA_FILE_ARG = -a
+LUA_ARG = $(patsubst %.lua,%,$^)
+
+ifndef LUA_BIN
+BENCH_BIN = luajit-bench
+LUA_BIN_NAME = ./$(BENCH_BIN)
+else
+ifdef BENCH_DURATION
+BENCH_ARG = -t $(BENCH_DURATION)
+endif
+LUA_BIN_NAME = $(LUA_BIN) luajit-bench.lua $(BENCH_ARG)
+endif
+
+BENCHMARKS = array3d binary-trees chameneos coroutine-ring euler14-bit \
+ fannkuch fasta k-nucleotide life mandelbrot mandelbrot-bit md5 \
+ meteor nbody nsieve nsieve-bit nsieve-bit-fp partialsums \
+ pidigits-nogmp ray recursive-ack recursive-fib revcomp \
+ scimark-2010-12-20 scimark-fft scimark-lu series scimark-sparse \
+ scimark-sor spectral-norm sum-file
+
+# Specify benchmarks that need input files.
+INPUT-k-nucleotide = FASTA_1000000
+INPUT-revcomp = FASTA_1000000
+INPUT-sum-file = SUMCOL_1000
+
+input-file = $(INPUT-$(patsubst %.result,%,$@))
+input-file-arg = $(if $(input-file),$(LUA_FILE_ARG) $(input-file),)
+LUA_CMD = $(LUA_BIN_NAME) $(LUA_ARG) $(input-file-arg)
+
+bench_targets = $(patsubst %,%.result,$(BENCHMARKS))
+
+all: $(BENCH_BIN) $(bench_targets)
+
+%.result: %.lua
+ @$(LUA_CMD)
+
+ifndef LUA_BIN
+ifdef BENCH_DURATION
+DURATION = -DBENCH_DURATION=$(BENCH_DURATION)
+endif
+
+LUAJIT_A = ../src/$(FILE_A)
+
+$(BENCH_BIN): $(LUAJIT_A) $(BENCH_BIN).c Makefile
+ $(CC) $@.c -std=gnu11 $(DURATION) -g -O3 -c -o $@.o -I ../src
+ $(CC) $@.o -lpthread $< -lm -ldl -o $@
+
+# Build the luajit static library if it doesn't exist.
+$(LUAJIT_A):
+ make -C ..
+
+clean:
+ rm -f $(BENCH_BIN) main.o
+endif
Index: LuaJIT-2.1/LuaJIT-test-cleanup-master/test/lib/contents.lua
===================================================================
--- LuaJIT-2.1.orig/LuaJIT-test-cleanup-master/test/lib/contents.lua 2016-10-19 23:27:03.000000000 +0200
+++ LuaJIT-2.1/LuaJIT-test-cleanup-master/test/lib/contents.lua 2023-08-29 08:36:28.444172754 +0200
@@ -76,8 +76,9 @@ do --- 5.2 string +lua>=5.2
assert(not string.gfind)
end
+-- Adapted for latest changes
do --- pre-5.2 table +lua<5.2
- check(table, "concat:foreach:foreachi:getn:insert:maxn:remove:sort", "pack:unpack:setn:new")
+ check(table, "concat:foreach:foreachi:getn:insert:maxn:move:remove:sort", "pack:unpack:setn:new")
end
do --- 5.2 table +lua>=5.2
@@ -118,10 +119,17 @@ end
do --- pre-5.2 package +lua<5.2
assert(package.loaders)
- assert(not package.searchers)
assert(package.seeall)
end
+-- LuaJIT version check for lua will return true for +lua<5.2 since it
+-- does not fully implement 5.2. Move the (not package.searchers) check
+-- to +compat5.2 instead of the version check since it is implemented by
+-- compat5.2.
+do --- 5.2 compat package +compat5.2
+ assert(package.searchers)
+end
+
do --- 5.2 package +lua>=5.2
assert(not package.loaders)
assert(package.searchers)

File diff suppressed because it is too large Load Diff

@ -0,0 +1,50 @@
#!/bin/bash
LUAJIT_PKGNAME="LuaJIT"
LUAJIT_URL=$(rpmspec -P *.spec | awk '/Source0/ { print $NF }')
LUAJIT_TARBALL=$(basename $LUAJIT_URL)
LUAJIT_VERSION_MAJOR=$(awk '/%global luajit_version_major/ { print $NF }' *.spec)
LUAJIT_VERSION_MINOR=$(awk '/%global luajit_version_minor/ { print $NF }' *.spec)
LUAJIT_VERSION_PATCH=$(awk '/%global luajit_version_patch/ { print $NF }' *.spec)
LUAJIT_VERSION="${LUAJIT_VERSION_MAJOR}.${LUAJIT_VERSION_MINOR}.${LUAJIT_VERSION_PATCH}"
LUAJIT_PKGDIR="$(pwd)"
LUAJIT_TMPDIR=$(mktemp --tmpdir -d luajit-XXXXXXXX)
cleanup_tmpdir() {
popd 2>/dev/null || true
rm -rf "${LUAJIT_TMPDIR}"
}
trap cleanup_tmpdir SIGINT
cleanup_and_exit() {
cleanup_tmpdir
if test "$1" = 0 -o -z "$1" ; then
exit 0
else
exit "${1}"
fi
}
pushd "${LUAJIT_TMPDIR}" || cleanup_and_exit 1
wget "${LUAJIT_URL}"
tar xf ${LUAJIT_PKGNAME}-${LUAJIT_VERSION}.tar.gz
# commiter date, unix timestamp
LUAJIT_VERSION_PATCH_NEW=$(<${LUAJIT_PKGNAME}-${LUAJIT_VERSION_MAJOR}.${LUAJIT_VERSION_MINOR}/.relver)
LUAJIT_VERSION_NEW="${LUAJIT_VERSION_MAJOR}.${LUAJIT_VERSION_MINOR}.${LUAJIT_VERSION_PATCH_NEW}"
echo "LUAJIT_VERSION=${LUAJIT_VERSION_NEW}"
mv "${LUAJIT_PKGNAME}-${LUAJIT_VERSION}.tar.gz" "${LUAJIT_PKGDIR}/${LUAJIT_PKGNAME}-${LUAJIT_VERSION_NEW}.tar.gz"
echo
echo ">>> New tarball ${LUAJIT_PKGNAME}-${LUAJIT_VERSION_NEW}.tar.gz"
popd || cleanup_and_exit 1
echo
echo ">>> Update spec file with: %global luajit_version_patch ${LUAJIT_VERSION_PATCH_NEW}"
echo
cleanup_and_exit 0

@ -0,0 +1,316 @@
## START: Set by rpmautospec
## (rpmautospec version 0.7.2)
## RPMAUTOSPEC: autorelease, autochangelog
%define autorelease(e:s:pb:n) %{?-p:0.}%{lua:
release_number = 1;
base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}"));
print(release_number + base_release_number - 1);
}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}}
## END: Set by rpmautospec
%global pkgname LuaJIT
%global luajit_version_major 2
%global luajit_version_minor 1
%global luajit_version_patch 1720049189
%global luajit_version %{luajit_version_major}.%{luajit_version_minor}.%{luajit_version_patch}
Name: luajit
Version: %{luajit_version}
%global apiver %(v=%{version}; echo ${v%.${v#[0-9].[0-9].}})
Release: %autorelease
Summary: Just-In-Time Compiler for Lua
License: MIT
URL: http://luajit.org
# LuaJIT is a rolling release, see http://luajit.org/status.html
# To update the tarball you can use the update_tarball.sh script
Source0: https://github.com/LuaJIT/LuaJIT/archive/refs/heads/v2.1/%{pkgname}-%{version}.tar.gz
Source1: https://github.com/LuaJIT/LuaJIT-test-cleanup/archive/refs/heads/master/LuaJIT-test-cleanup.tar.gz
Source2: update_tarball.sh
# Add 'make check'
Patch0: luajit-2.1-make-check.patch
# Patches from https://github.com/cryptomilk/LuaJIT/commits/v2.1-fedora
# git format-patch --stdout -l1 --no-renames origin/v2.1..v2.1-fedora > luajit-2.1-fedora.patch
Patch1: luajit-2.1-fedora.patch
# If the patch doesn't apply, send a mail to:
# Ilya Leoshkevich <iii@de.ibm.com> or Andreas.Krebbel@de.ibm.com
# https://bugzilla.redhat.com/show_bug.cgi?id=2222911
Patch2: https://github.com/luajit/luajit/pull/631.patch#/luajit-2.1-s390x-support.patch
ExcludeArch: riscv64 ppc64 ppc64le
BuildRequires: gcc
BuildRequires: make
%description
LuaJIT implements the full set of language features defined by Lua 5.1.
The virtual machine (VM) is API- and ABI-compatible to the standard
Lua interpreter and can be deployed as a drop-in replacement.
%package devel
Summary: Development files for %{name}
Requires: %{name}%{?_isa} = %{version}-%{release}
%description devel
This package contains development files for %{name}.
%prep
%autosetup -p1 -n %{pkgname}-%{luajit_version_major}.%{luajit_version_minor} -a1
echo "%{luajit_version_patch}" > .relver
ln -s LuaJIT-test-cleanup-master/bench bench
ln -s LuaJIT-test-cleanup-master/test test
# Enable Lua 5.2 features
sed -i -e '/-DLUAJIT_ENABLE_LUA52COMPAT/s/^#//' src/Makefile
# preserve timestamps (cicku)
sed -i -e '/install -m/s/-m/-p -m/' Makefile
%build
# Q= - enable verbose output
# E= @: - disable @echo messages
# NOTE: we use amalgamated build as per documentation suggestion doc/install.html
make amalg Q= E=@: PREFIX=%{_prefix} TARGET_STRIP=: \
CFLAGS="%{build_cflags}" LDFLAGS="%{build_ldflags}" \
MULTILIB=%{_lib} \
%{?_smp_mflags}
%install
# PREREL= - disable -betaX suffix
# INSTALL_TNAME - executable name
%make_install PREFIX=%{_prefix} \
MULTILIB=%{_lib}
rm -rf _tmp_html ; mkdir _tmp_html
cp -a doc _tmp_html/html
# Remove static .a
find %{buildroot} -type f -name *.a -delete -print
%ldconfig_scriptlets
%check
make check
%files
%license COPYRIGHT
%doc README
%{_bindir}/%{name}
%{_bindir}/%{name}-%{luajit_version}
%{_libdir}/lib%{name}-*.so.*
%{_mandir}/man1/%{name}.1*
%{_datadir}/%{name}-%{luajit_version_major}.%{luajit_version_minor}/
%files devel
%doc _tmp_html/html/
%{_includedir}/%{name}-%{apiver}/
%{_libdir}/lib%{name}-*.so
%{_libdir}/pkgconfig/%{name}.pc
%changelog
* Wed Jan 01 2025 Arkady L. Shane <tigro@msvsphere-os.ru> - 2.1.1720049189-1
- Rebuilt for MSVSphere 10
## START: Generated by rpmautospec
* Thu Jul 25 2024 Andreas Schneider <asn@cryptomilk.org> - 2.1.1720049189-1
- Update to version 2.1.1720049189
* Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.1713773202-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Thu May 23 2024 Andreas Schneider <asn@cryptomilk.org> - 2.1.1713773202-1
- Update to verion 2.1.1713773202
* Fri Mar 01 2024 Andreas Schneider <asn@redhat.com> - 2.1.1707061634-2
- Add support for s390x
resolves: rhbz#2222911
* Thu Feb 22 2024 Andreas Schneider <asn@redhat.com> - 2.1.1707061634-1
- Update to version 2.1.1707061634
* Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.1692716794-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.1692716794-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Sat Aug 26 2023 Andreas Schneider <asn@redhat.com> - 2.1.1692716794-1
- Update to rolling release version of luajit
- Adapted patches and cleaned up spec file
* Thu Jul 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.0-0.28beta3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Sun Mar 12 2023 Andreas Schneider <asn@redhat.com> - 2.1.0-0.27beta3
- Update to latest luajit v2.1 git version
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.0-0.26beta3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Sun Aug 21 2022 Andreas Schneider <asn@redhat.com> - 2.1.0-0.25beta3
- Update to latest luajit v2.1 git version
* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.0-0.24beta3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.0-0.23beta3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Tue Oct 26 2021 Siddhesh Poyarekar <siddhesh@gotplt.org> - 2.1.0-0.22beta3
- Bring back the earlier code to do ln -sf.
* Tue Oct 12 2021 Andreas Schneider <asn@redhat.com> - 2.1.0-0.21beta3
- Rebase onto https://github.com/LuaJIT/LuaJIT/tree/v2.1
- Dropped support for ppc64le
- Dropped support for s390x
* Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.0-0.20beta3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.0-0.19beta3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.0-0.18beta3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.0-0.17beta3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Wed Sep 25 2019 Siddhesh Poyarekar <sid@reserved-bit.com> - 2.1.0-0.16beta3
- New API functions jit.prngstate and thread.exdata from OpenResty.
- Bug fixes in ppc64le and aarch64.
- Optimised string hash function for SSE4.2
- Miscellaneous bug fixes.
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.0-0.16beta3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Tue Jun 25 2019 Siddhesh Poyarekar <sid@reserved-bit.com> - 2.1.0-0.15beta3
- Port JIT features and fixes from openresty/luajit2.
* Wed Jun 19 2019 Siddhesh Poyarekar <sid@reserved-bit.com> - 2.1.0-0.14beta3
- Patch for PPC64 support.
* Wed Jun 19 2019 Siddhesh Poyarekar <sid@reserved-bit.com> - 2.1.0-0.13beta3
- arm: Fix up condition codes for conditional arithmetic insn.
- bugfix: fixed a segfault when unsinking 64-bit pointers.
- Remove setrlimit on FreeBSD.
- test: Check for package.searchers only in compat5.2.
* Mon Jun 17 07:10:20 CEST 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 2.1.0-0.12beta3
- Enable Lua 5.2 compatibility
* Wed Apr 24 2019 Siddhesh Poyarekar <sid@reserved-bit.com> - 2.1.0-0.11beta3
- Add s390x support.
* Fri Apr 12 2019 Siddhesh Poyarekar <sid@reserved-bit.com> - 2.1.0-0.10beta3
- Add upstream bug fixes from the v2.1 branch.
- Add bug fixes from https://github.com/siddhesh/LuaJIT.git
- Incorporate tests and benchmarks from LuaJIT-test-cleanup.
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.0-0.9beta3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.0-0.8beta3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Thu Feb 08 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.0-0.7beta3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.0-0.6beta3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.0-0.5beta3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Mon May 15 2017 Tom Callaway <spot@fedoraproject.org> - 2.1.0-0.4beta3
- Update to 2.1.0-beta3
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.0-0.3beta2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Mon Aug 29 2016 Igor Gnatenko <ignatenko@redhat.com> - 2.1.0-0.2beta2
- Add aarch64 to ExclusiveArch
* Mon Aug 29 2016 Igor Gnatenko <ignatenko@redhat.com> - 2.1.0-0.1beta2
- Update to 2.1.0-beta2 (RHBZ #1371158)
* Mon May 09 2016 Dan Horák <dan[at]danny.cz> - 2.0.4-5
- set ExclusiveArch also for Fedora
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.4-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Fri Aug 07 2015 Oliver Haessler <oliver@redhat.com> - 2.0.4-3
- only build x86_64 on EPEL as luajit has no support for ppc64
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.0.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Thu May 21 2015 Igor Gnatenko <i.gnatenko.brain@gmail.com> - 2.0.4-1
- 2.0.4
* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.0.3-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Wed Jul 09 2014 Igor Gnatenko <i.gnatenko.brain@gmail.com> - 2.0.3-3
- rebuild against lua 5.2
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.0.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Thu Mar 13 2014 Igor Gnatenko <i.gnatenko.brain@gmail.com> - 2.0.3-1
- 2.0.3 upstream release
* Sun Dec 15 2013 Clive Messer <clive.messer@communitysqueeze.org> - 2.0.2-9
- Apply luajit-path64.patch on x86_64.
* Mon Dec 09 2013 Igor Gnatenko <i.gnatenko.brain@gmail.com> - 2.0.2-8
- Fix strip (thanks Ville Skyttä)
* Fri Dec 06 2013 Igor Gnatenko <i.gnatenko.brain@gmail.com> - 2.0.2-7
- Fix executable binary
* Mon Dec 02 2013 Igor Gnatenko <i.gnatenko.brain@gmail.com> - 2.0.2-6
- Fix .pc
* Sun Dec 01 2013 Igor Gnatenko <i.gnatenko.brain@gmail.com> - 2.0.2-5
- Fixed short-circuit builds (schwendt)
* Sat Nov 30 2013 Igor Gnatenko <i.gnatenko.brain@gmail.com> - 2.0.2-4
- Preserve timestamps at install
* Fri Nov 29 2013 Igor Gnatenko <i.gnatenko.brain@gmail.com> - 2.0.2-3
- fixed some issues found by besser82
- Moved html-docs to -devel subpackage (besser82)
* Thu Nov 28 2013 Igor Gnatenko <i.gnatenko.brain@gmail.com> - 2.0.2-2
- Re-update
* Mon Sep 02 2013 Muayyad Alsadi <alsadi@gmail.com> - 2.0.2-1
- Update to new upstream version
- remove PREREL= option
* Mon Feb 06 2012 Andrei Lapshin - 2.0.0-0.4.beta9
- Update to new upstream version
- Rename main executable to luajit
- Remove BuildRoot tag and %%clean section
* Sun Oct 09 2011 Andrei Lapshin - 2.0.0-0.3.beta8
- Enable debug build
- Enable verbose build output
- Move libluajit-*.so to -devel
- Add link to upstream hotfix #1
* Tue Jul 05 2011 Andrei Lapshin <alapshin@gmx.com> - 2.0.0-0.2.beta8
- Append upstream hotfix #1
* Sun Jul 03 2011 Andrei Lapshin <alapshin@gmx.com> - 2.0.0-0.1.beta8
- Initial build
## END: Generated by rpmautospec
Loading…
Cancel
Save