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); +