diff --git a/xpilot-ng-SDL_window.patch b/xpilot-ng-SDL_window.patch new file mode 100644 index 0000000..e2a9ba9 --- /dev/null +++ b/xpilot-ng-SDL_window.patch @@ -0,0 +1,13 @@ +diff --git a/src/client/sdl/scrap.c b/src/client/sdl/scrap.c +index e86beaff931d66e9..557e33f206f84d12 100644 +--- a/src/client/sdl/scrap.c ++++ b/src/client/sdl/scrap.c +@@ -57,6 +57,8 @@ typedef uint32_t scrap_type; + #if defined(X11_SCRAP) + /* * */ + static Display *SDL_Display; ++/* Avoid conflict with SDL_Window defined in . */ ++#define SDL_Window SDL_Window_variable + static Window SDL_Window; + static void (*Lock_Display)(void); + static void (*Unlock_Display)(void); diff --git a/xpilot-ng-c23.patch b/xpilot-ng-c23.patch new file mode 100644 index 0000000..0605b52 --- /dev/null +++ b/xpilot-ng-c23.patch @@ -0,0 +1,11 @@ +diff -up xpilot-ng-4.7.3/src/server/suibotdef.c~ xpilot-ng-4.7.3/src/server/suibotdef.c +--- xpilot-ng-4.7.3/src/server/suibotdef.c~ 2026-01-24 18:58:21.000000000 +0100 ++++ xpilot-ng-4.7.3/src/server/suibotdef.c 2026-01-24 18:59:54.806510851 +0100 +@@ -378,7 +378,6 @@ typedef struct { + } object_proximity_t; + + +-static bool Get_object_proximity(); + static bool Get_object_proximity(player_t *pl, object_t *shot, double sqmaxdist,int maxtime, object_proximity_t *object_proximity){ + /* get square of closest distance between player and object + * compare with sqmaxdist and maxtime and return sqdistance and time diff --git a/xpilot-ng-c99-incompatible-pointer-types.patch b/xpilot-ng-c99-incompatible-pointer-types.patch new file mode 100644 index 0000000..2679a6b --- /dev/null +++ b/xpilot-ng-c99-incompatible-pointer-types.patch @@ -0,0 +1,114 @@ +diff --git a/src/mapedit/proto.h b/src/mapedit/proto.h +index b4f19f7d25cfe63d..d6222f5c7aa02e83 100644 +--- a/src/mapedit/proto.h ++++ b/src/mapedit/proto.h +@@ -73,15 +73,15 @@ int NewMap(HandlerInfo_t info); + int ResizeWidth(HandlerInfo_t info); + int ResizeHeight(HandlerInfo_t info); + int OpenPreferencesPopup(HandlerInfo_t info); +-int OpenMapInfoPopup(void); +-int OpenRobotsPopup(void); +-int OpenVisibilityPopup(void); +-int OpenCannonsPopup(void); +-int OpenRoundsPopup(void); +-int OpenInitItemsPopup(void); +-int OpenMaxItemsPopup(void); +-int OpenProbsPopup(void); +-int OpenScoringPopup(void); ++int OpenMapInfoPopup(HandlerInfo_t info); ++int OpenRobotsPopup(HandlerInfo_t info); ++int OpenVisibilityPopup(HandlerInfo_t info); ++int OpenCannonsPopup(HandlerInfo_t info); ++int OpenRoundsPopup(HandlerInfo_t info); ++int OpenInitItemsPopup(HandlerInfo_t info); ++int OpenMaxItemsPopup(HandlerInfo_t info); ++int OpenProbsPopup(HandlerInfo_t info); ++int OpenScoringPopup(HandlerInfo_t info); + int ValidateCoordHandler(HandlerInfo_t info); + int ShowHoles(HandlerInfo_t info); + char MapData(int x, int y); +diff --git a/src/mapedit/tools.c b/src/mapedit/tools.c +index b99840a257dfa6f6..24a3ca0693e7bb02 100644 +--- a/src/mapedit/tools.c ++++ b/src/mapedit/tools.c +@@ -747,7 +747,7 @@ int OpenPreferencesPopup(HandlerInfo_t info) + /* Arguments : */ + /* Purpose : */ + /***************************************************************************/ +-int OpenMapInfoPopup() ++int OpenMapInfoPopup(HandlerInfo_t info) + { + Window *temp; + +@@ -790,7 +790,7 @@ int OpenMapInfoPopup() + /* Arguments : */ + /* Purpose : */ + /***************************************************************************/ +-int OpenRobotsPopup() ++int OpenRobotsPopup(HandlerInfo_t info) + { + XMapWindow(display, robots); + return 0; +@@ -801,7 +801,7 @@ int OpenRobotsPopup() + /* Arguments : */ + /* Purpose : */ + /***************************************************************************/ +-int OpenVisibilityPopup() ++int OpenVisibilityPopup(HandlerInfo_t info) + { + XMapWindow(display, visibility); + return 0; +@@ -812,7 +812,7 @@ int OpenVisibilityPopup() + /* Arguments : */ + /* Purpose : */ + /***************************************************************************/ +-int OpenCannonsPopup() ++int OpenCannonsPopup(HandlerInfo_t info) + { + XMapWindow(display, cannons); + return 0; +@@ -823,7 +823,7 @@ int OpenCannonsPopup() + /* Arguments : */ + /* Purpose : */ + /***************************************************************************/ +-int OpenRoundsPopup() ++int OpenRoundsPopup(HandlerInfo_t info) + { + XMapWindow(display, rounds); + return 0; +@@ -834,7 +834,7 @@ int OpenRoundsPopup() + /* Arguments : */ + /* Purpose : */ + /***************************************************************************/ +-int OpenInitItemsPopup() ++int OpenInitItemsPopup(HandlerInfo_t info) + { + XMapWindow(display, inititems); + return 0; +@@ -845,7 +845,7 @@ int OpenInitItemsPopup() + /* Arguments : */ + /* Purpose : */ + /***************************************************************************/ +-int OpenMaxItemsPopup() ++int OpenMaxItemsPopup(HandlerInfo_t info) + { + XMapWindow(display, maxitems); + return 0; +@@ -856,7 +856,7 @@ int OpenMaxItemsPopup() + /* Arguments : */ + /* Purpose : */ + /***************************************************************************/ +-int OpenProbsPopup() ++int OpenProbsPopup(HandlerInfo_t info) + { + XMapWindow(display, probs); + return 0; +@@ -867,7 +867,7 @@ int OpenProbsPopup() + /* Arguments : */ + /* Purpose : */ + /***************************************************************************/ +-int OpenScoringPopup() ++int OpenScoringPopup(HandlerInfo_t info) + { + XMapWindow(display, scoring); + return 0; diff --git a/xpilot-ng-c99-return-mismatch.patch b/xpilot-ng-c99-return-mismatch.patch new file mode 100644 index 0000000..ab75308 --- /dev/null +++ b/xpilot-ng-c99-return-mismatch.patch @@ -0,0 +1,13 @@ +diff --git a/src/server/suibotdef.c b/src/server/suibotdef.c +index d5202e3c323f0a8f..494f73f531848817 100644 +--- a/src/server/suibotdef.c ++++ b/src/server/suibotdef.c +@@ -405,7 +405,7 @@ static bool Get_object_proximity(player_t *pl, object_t *shot, double sqmaxdist, + /* ignore if there is enough time to deal with this object later */ + if((time_until_closest < 0) || (time_until_closest > maxtime)) + /*option instead of fixed value: options.dodgetime))*/ +- return; ++ return false; + + /* get the square of the distance */ + sqdistance = diff --git a/xpilot-ng-c99.patch b/xpilot-ng-c99.patch new file mode 100644 index 0000000..c003c25 --- /dev/null +++ b/xpilot-ng-c99.patch @@ -0,0 +1,16 @@ +Avoid implicit declaration of the Move_point function in +Wall_in_between_points in suibotdef.c. + +diff --git a/src/server/server.h b/src/server/server.h +index 5c0cdd66de1db008..30b7f7d0a8fb09e4 100644 +--- a/src/server/server.h ++++ b/src/server/server.h +@@ -151,6 +151,8 @@ void Groups_init(void); + void Walls_init(void); + void Treasure_init(void); + void Move_init(void); ++struct collans; ++void Move_point(const move_t *move, struct collans *answer); + void Move_object(object_t *obj); + void Move_player(player_t *pl); + void Turn_player(player_t *pl, bool push); diff --git a/xpilot-ng-server.conf b/xpilot-ng-server.conf new file mode 100644 index 0000000..2e77adf --- /dev/null +++ b/xpilot-ng-server.conf @@ -0,0 +1,3 @@ +#Type Name ID GECOS Home directory Shell +g xpilot - - - - +u xpilot - 'xpilot game server' /usr/share/xpilot-ng/ - diff --git a/xpilot-ng.rpmlintrc b/xpilot-ng.rpmlintrc index a8fdd7a..ed956be 100644 --- a/xpilot-ng.rpmlintrc +++ b/xpilot-ng.rpmlintrc @@ -3,3 +3,8 @@ addFilter("dangling-symlink") addFilter("no-documentation") addFilter("non-standard-uid") addFilter("non-readable") +addFilter("E: no-binary") +addFilter("W: no-%check-section") +addFilter("E: logrotate-log-dir-not-packaged") +# meh, this should be fixed really ... +addFilter("W: binary-or-shlib-calls-gethostbyname") diff --git a/xpilot-ng.spec b/xpilot-ng.spec index 8b579dd..fd348a7 100644 --- a/xpilot-ng.spec +++ b/xpilot-ng.spec @@ -4,10 +4,11 @@ Name: xpilot-ng Version: 4.7.3 -Release: 19%{?dist} +Release: 39%{?dist} Summary: Space arcade game for multiple players -License: GPLv2+ +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later URL: http://xpilot.sourceforge.net Source0: http://downloads.sourceforge.net/sourceforge/xpilot/xpilot-ng-%{version}.tar.gz Source1: xpilot-ng.png @@ -16,6 +17,7 @@ Source3: xpilot-ng-sdl.appdata.xml Source4: xpilot-ng-server.service Source5: xpilot-ng.sysconfig Source6: xpilot-ng.logrotate +Source7: xpilot-ng-server.conf Source10: logwatch.logconf.xpilot Source11: logwatch.script.xpilot Source12: logwatch.serviceconf.xpilot @@ -24,12 +26,18 @@ Source14: xpilot-ng-server.metainfo.xml Patch0: xpilot-ng-4.7.2-scoreassert.patch Patch1: xpilot-ng-4.7.2-rhbz830640.patch Patch2: xpilot-ng-4.7.3-fix-alut-detect.patch +Patch3: xpilot-ng-c99.patch +Patch4: xpilot-ng-SDL_window.patch +Patch5: xpilot-ng-c99-return-mismatch.patch +Patch6: xpilot-ng-c99-incompatible-pointer-types.patch +Patch7: xpilot-ng-c23.patch -BuildRequires: gcc +BuildRequires: gcc make BuildRequires: desktop-file-utils libappstream-glib BuildRequires: expat-devel SDL_ttf-devel SDL_image-devel zlib-devel BuildRequires: libXt-devel libGLU-devel BuildRequires: openal-soft-devel freealut-devel automake +BuildRequires: systemd-rpm-macros Requires: %{name}-data = %{version}-%{release} hicolor-icon-theme Provides: %{name}-engine = %{version}-%{release} @@ -62,7 +70,7 @@ Data files for %{name}. Summary: Server for hosting xpilot games Requires: %{name}-data = %{version}-%{release} Requires: logrotate -Requires(pre): shadow-utils +%{?sysusers_requires_compat} Requires(post): systemd Requires(preun): systemd Requires(postun): systemd @@ -138,6 +146,9 @@ install -p -D -m 600 lib/password.txt $RPM_BUILD_ROOT/%{_sysconfdir}/%{name}/pas install -p -D -m 644 %{SOURCE6} \ $RPM_BUILD_ROOT/%{_sysconfdir}/logrotate.d/%{name}-server +# Install sysusers file +install -p -D -m 0644 %{SOURCE7} %{buildroot}%{_sysusersdir}/xpilot-ng-server.conf + # Replace bundled fonts with system fonts rm $RPM_BUILD_ROOT%{_datadir}/%{name}/fonts/FreeSansBoldOblique.ttf @@ -153,11 +164,7 @@ install -pD -m 0644 %{SOURCE12} $RPM_BUILD_ROOT%{logwatch_conf}/services/%{name} install -pD -m 0644 %{SOURCE13} $RPM_BUILD_ROOT%{logwatch_scripts}/shared/applyxpilotdate %pre server -getent group xpilot >/dev/null || groupadd -r xpilot -getent passwd xpilot >/dev/null || \ -useradd -r -g xpilot -d %{_datadir}/%{name} -s /sbin/nologin \ - -c "xpilot game server" xpilot -exit 0 +%sysusers_create_compat %{SOURCE7} %post server %systemd_post xpilot-ng-server.service @@ -191,6 +198,7 @@ exit 0 %{_mandir}/man6/xpilot-ng-x11.6.gz %files server +%{_sysusersdir}/xpilot-ng-server.conf %{_bindir}/xpilot-ng-xp-mapedit %{_bindir}/xpilot-ng-server /lib/systemd/system/xpilot-ng-server.service @@ -215,6 +223,68 @@ exit 0 %changelog +* Fri Jul 17 2026 Fedora Release Engineering - 4.7.3-39 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild + +* Mon Feb 2 2026 Hans de Goede - 4.7.3-38 +- Use sysusers to create xpilot user for xpilot-ng-server (rhbz#2432687) + +* Sat Jan 24 2026 Hans de Goede - 4.7.3-37 +- Fix FTBFS (rhbz#2341581, rhbz#2385745) + +* Sat Jan 17 2026 Fedora Release Engineering - 4.7.3-36 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + +* Fri Jul 25 2025 Fedora Release Engineering - 4.7.3-35 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Sun Jan 19 2025 Fedora Release Engineering - 4.7.3-34 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Fri Jul 26 2024 Miroslav Suchý - 4.7.3-33 +- convert license to SPDX + +* Sat Jul 20 2024 Fedora Release Engineering - 4.7.3-32 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Sat Jan 27 2024 Fedora Release Engineering - 4.7.3-31 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Tue Jan 09 2024 Florian Weimer - 4.7.3-30 +- Additional C compatibility fixes (#2155781) + +* Sat Jul 22 2023 Fedora Release Engineering - 4.7.3-29 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Sat Jan 21 2023 Fedora Release Engineering - 4.7.3-28 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Thu Dec 22 2022 Florian Weimer - 4.7.3-27 +- C99 port (#2155781) +- Fix build issue due to SDL_Window identifier conflict with newer SDL + +* Sat Jul 23 2022 Fedora Release Engineering - 4.7.3-26 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Sat Jan 22 2022 Fedora Release Engineering - 4.7.3-25 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Fri Jul 23 2021 Fedora Release Engineering - 4.7.3-24 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Thu Jan 28 2021 Fedora Release Engineering - 4.7.3-23 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Sat Aug 01 2020 Fedora Release Engineering - 4.7.3-22 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Jul 29 2020 Fedora Release Engineering - 4.7.3-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Fri Jan 31 2020 Fedora Release Engineering - 4.7.3-20 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + * Sat Aug 10 2019 Hans de Goede - 4.7.3-19 - Drop libXxf86misc-devel BuildRequires, all #if HAVE_XF86MISC code was commented out already, so this does not influence xpilot-ng behavior