Accepting request 961861 from home:bmwiedemann:branches:games

Add fix-i586-build.patch to fix build on i586

OBS-URL: https://build.opensuse.org/request/show/961861
OBS-URL: https://build.opensuse.org/package/show/games/0ad?expand=0&rev=118
This commit is contained in:
Dirk Stoecker 2022-03-15 15:46:06 +00:00 committed by Git OBS Bridge
parent cffe6cb9d3
commit d043fd1f1e
3 changed files with 49 additions and 1 deletions

View File

@ -1,3 +1,8 @@
-------------------------------------------------------------------
Sun Mar 13 11:57:58 UTC 2022 - Bernhard Wiedemann <bwiedemann@suse.com>
- Add fix-i586-build.patch to fix build on i586
-------------------------------------------------------------------
Fri Mar 11 10:35:08 UTC 2022 - Dominique Leuenberger <dimstar@opensuse.org>

View File

@ -22,7 +22,6 @@
%else
%bcond_with nvtt
%endif
ExcludeArch: %{ix86}
# We can use the system mozjs on Tumbleweed and Leap 15.4.
%if 0%{?suse_version} > 1500 || 0%{?sle_version} >= 150400
%bcond_without system_mozjs
@ -47,6 +46,7 @@ Patch1: no-version-check.patch
Patch2: PrepareZoneForGC.patch
# PATCH-FIX-UPSTREAM -- Don't define M_PIf if glibc already provides it
Patch3: glibc-2.35.patch
Patch4: fix-i586-build.patch
BuildRequires: cmake
BuildRequires: gcc-c++
BuildRequires: libXcursor-devel
@ -101,6 +101,9 @@ flexible game engine.
%patch1 -p1
%patch2 -p1
%endif
%ifarch %{ix86}
%patch4 -p1
%endif
%build
export CFLAGS="%{optflags}"

40
fix-i586-build.patch Normal file
View File

@ -0,0 +1,40 @@
Date: 2022-03-13
Author: Bernhard M. Wiedemann <bwiedemann suse.de>
fix/workaround i586 build
https://bugzilla.opensuse.org/show_bug.cgi?id=1197065
It was segfaulting in premake5 because of a problem with gcc11 and the premake5 source
(gdb) bt
#0 0x5666a68b in ?? ()
#1 0x565713e5 in luaL_requiref ()
#2 0x5658e67f in luaL_openlibs ()
#3 0x5656edc7 in main ()
diff --git a/build/premake/premake5/contrib/lua/src/lapi.c b/build/premake/premake5/contrib/lua/src/lapi.c
index 02b7fab..cd4e176 100644
--- a/build/premake/premake5/contrib/lua/src/lapi.c
+++ b/build/premake/premake5/contrib/lua/src/lapi.c
@@ -204,7 +204,7 @@ static void reverse (lua_State *L, StkId from, StkId to) {
** Let x = AB, where A is a prefix of length 'n'. Then,
** rotate x n == BA. But BA == (A^r . B^r)^r.
*/
-LUA_API void lua_rotate (lua_State *L, int idx, int n) {
+LUA_API __attribute__((noipa)) void lua_rotate (lua_State *L, int idx, int n) {
StkId p, t, m;
lua_lock(L);
t = L->top - 1; /* end of stack segment being rotated */
diff --git a/build/premake/premake5/contrib/lua/src/lua.h b/build/premake/premake5/contrib/lua/src/lua.h
index c236e36..7d4aebb 100644
--- a/build/premake/premake5/contrib/lua/src/lua.h
+++ b/build/premake/premake5/contrib/lua/src/lua.h
@@ -159,7 +159,7 @@ LUA_API int (lua_absindex) (lua_State *L, int idx);
LUA_API int (lua_gettop) (lua_State *L);
LUA_API void (lua_settop) (lua_State *L, int idx);
LUA_API void (lua_pushvalue) (lua_State *L, int idx);
-LUA_API void (lua_rotate) (lua_State *L, int idx, int n);
+LUA_API __attribute__((noipa)) void (lua_rotate) (lua_State *L, int idx, int n);
LUA_API void (lua_copy) (lua_State *L, int fromidx, int toidx);
LUA_API int (lua_checkstack) (lua_State *L, int n);