From d40e02493a349ba1b8bba72ad84af6d251769de2 Mon Sep 17 00:00:00 2001
From: dstoecker <>
Date: Mar 16 2022 19:25:52 +0000
Subject: Update 0ad to version 0.0.25b / rev 4 via SR 961957
https://build.opensuse.org/request/show/961957
by user dstoecker + dimstar_suse
---
diff --git a/.files b/.files
index 738b223..e1b20fc 100644
Binary files a/.files and b/.files differ
diff --git a/.rev b/.rev
index f11b9ad..f13ef30 100644
--- a/.rev
+++ b/.rev
@@ -23,4 +23,12 @@
961440
+
+ adfbdcb1f04f145a43c023a531918a57
+ 0.0.25b
+
+ dimstar_suse
+
+ 961957
+
diff --git a/0ad.changes b/0ad.changes
index f68e362..7cd8e1a 100644
--- a/0ad.changes
+++ b/0ad.changes
@@ -1,4 +1,9 @@
-------------------------------------------------------------------
+Sun Mar 13 11:57:58 UTC 2022 - Bernhard Wiedemann
+
+- Add fix-i586-build.patch to fix build on i586
+
+-------------------------------------------------------------------
Fri Mar 11 10:35:08 UTC 2022 - Dominique Leuenberger
- Do not build on i586.
diff --git a/0ad.spec b/0ad.spec
index acc40e9..38e8304 100644
--- a/0ad.spec
+++ b/0ad.spec
@@ -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}"
diff --git a/fix-i586-build.patch b/fix-i586-build.patch
new file mode 100644
index 0000000..ee2b8e3
--- /dev/null
+++ b/fix-i586-build.patch
@@ -0,0 +1,40 @@
+Date: 2022-03-13
+Author: Bernhard M. Wiedemann
+
+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);
+