games-roguelike/crossfire-client: add 1.75.3

move to cmake build system
add vala and xdg eclasses

deps :
opengl and sdl renders have been removed with 1.75.2
but libsdl2 is still required for sound (sdl2-mixer) that is not optional
add rdeps inherited from gtk+

patches :
fix an overflow, from upstream
bump cmake_min, from upstream
fix the SDL search
fix a staticlib

bug #945644 fixed since 1.72.0

Bug: https://bugs.gentoo.org/945644
Closes: https://bugs.gentoo.org/628074
Closes: https://bugs.gentoo.org/934806
Signed-off-by: Nicolas PARLANT <nicolas.parlant@parhuet.fr>
Part-of: https://github.com/gentoo/gentoo/pull/42858
Closes: https://github.com/gentoo/gentoo/pull/42858
Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
Nicolas PARLANT
2025-07-04 09:03:39 +02:00
committed by Sam James
parent ae5738e827
commit d905b33fc3
6 changed files with 146 additions and 0 deletions

View File

@@ -1 +1,2 @@
DIST crossfire-client-1.71.0.tar.bz2 761156 BLAKE2B 6a5938ca8d9c7060f43f5b6a54ff2ed65521ec8ffbc76c10be25ae8802e95d77242edb6d52852410ccd352b51d5fc9edcdb9b85dc618cecfa79cd37ff0212c0f SHA512 86710d684fd7908ea9aaf5ba20bff0f1ba01ff0ba90c3e2847afff9d0db6f60c7b671413c8888b513c992fbf27474e744b79df185d5e2c04afc9d2dce3d8665e
DIST crossfire-client-1.75.3.tar.gz 1052116 BLAKE2B a093cba8bc5cf6719454ce80b6f55a918ca283c80fbf063b74fe74e751d95a8f22bab3e276b10f8d657456c8081d4d973515335c99a564db978b23480537ea4a SHA512 e838b3484f9637ccc01678559c7e7a1a7e29cdb37a850fa19b62dc64e2164345cfe3279c073c7b640ccb3ead54e5e6c0f16787d69257c36534730e72b7165a3e

View File

@@ -0,0 +1,61 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
LUA_COMPAT=( lua5-1 )
inherit cmake lua-single vala xdg
DESCRIPTION="Client for the nethack-style but more in the line of UO"
HOMEPAGE="https://crossfire.real-time.com/"
SRC_URI="https://downloads.sourceforge.net/project/crossfire/${PN}/${PV}/${P}.tar.gz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="lua"
REQUIRED_USE="lua? ( ${LUA_REQUIRED_USE} )"
RDEPEND="
dev-libs/glib:2
media-libs/libpng:=
media-libs/libsdl2
media-libs/sdl2-mixer[vorbis,wav]
net-misc/curl
x11-libs/cairo
x11-libs/gdk-pixbuf:2
x11-libs/gtk+:2
x11-libs/pango
lua? ( ${LUA_DEPS} )
"
DEPEND="${RDEPEND}"
BDEPEND="
$(vala_depend)
dev-lang/perl
virtual/pkgconfig
"
PATCHES=(
"${FILESDIR}"/${P}-sdl.patch
"${FILESDIR}"/${P}-staticlib.patch
"${FILESDIR}"/${P}-fix_overflow.patch
"${FILESDIR}"/${P}-cmake4.patch
)
pkg_setup() {
use lua && lua-single_pkg_setup
vala_setup
}
src_configure() {
local mycmakeargs=(
-DLUA=$(usex lua)
-DMETASERVER2=ON
# libsdl2 and sdl2-mixer are required anyway
-DSOUND=ON
-DVALA_EXECUTABLE="${VALAC}"
)
cmake_src_configure
}

View File

@@ -0,0 +1,11 @@
Bump for cmake4 compat, patch from upstream
https://sourceforge.net/p/crossfire/crossfire-client/ci/672ad8a6f5f499b7ac36b1fb8938267c5ff57e3d/
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.1)
+cmake_minimum_required(VERSION 3.5)
project(crossfire-client C)
set(VERSION 1.75.3)

View File

@@ -0,0 +1,32 @@
Fix overflow, from upstream
https://sourceforge.net/p/crossfire/crossfire-client/ci/4c98710209e39e379fccd6aa9db96978df21fe4b/
> inlined from cs_print_string at common/newsocket.c:260:15:
> /usr/include/bits/stdio2.h:100:10:
> warning: __builtin___vsnprintf_chk specified bound 256 exceeds destination size 254 [-Wstringop-overflow=]
--- a/common/newsocket.c
+++ b/common/newsocket.c
@@ -20,6 +20,7 @@
#include "client.h"
+#include <assert.h>
#include <errno.h>
#include "script.h"
@@ -257,12 +258,9 @@
SockList_Init(&sl, buf);
va_start(args, str);
- sl.len += vsnprintf((char*)sl.buf + sl.len, MAX_BUF-sl.len, str, args);
+ sl.len += vsnprintf((char*)sl.buf + sl.len, MAX_BUF-sl.len-3, str, args); // need 2 bytes for length, 1 for null termination
va_end(args);
- // Adjust sl.len to account for when we overflow the buffer.
- if (sl.len > MAX_BUF - 3) {
- sl.len = MAX_BUF - 3;
- }
+ assert(sl.len <= MAX_BUF - 3);
script_monitor_str((char*)sl.buf);

View File

@@ -0,0 +1,26 @@
Fix finding and including for SDL2
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e346c49..0461e8a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -26,6 +26,7 @@ set(CMAKE_INSTALL_DATADIR ${CMAKE_INSTALL_DATAROOTDIR}/crossfire-client)
find_program(GLIB_COMPILE_RESOURCES NAMES glib-compile-resources)
find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK gtk+-2.0 gio-2.0 REQUIRED)
+pkg_check_modules(SDL sdl2 REQUIRED)
find_package(PNG REQUIRED)
find_package(Perl REQUIRED)
find_package(Vala REQUIRED)
diff --git a/gtk-v2/src/CMakeLists.txt b/gtk-v2/src/CMakeLists.txt
index f9d3b30..a8ae5f2 100644
--- a/gtk-v2/src/CMakeLists.txt
+++ b/gtk-v2/src/CMakeLists.txt
@@ -45,7 +45,7 @@ target_include_directories(crossfire-client-gtk2
${GTK_INCLUDE_DIRS}
${PNG_INCLUDE_DIRS}
${SDLMIXER_INCLUDE_DIRS}
- ${SDL_INCLUDE_DIR}
+ ${SDL_INCLUDE_DIRS}
)
target_link_libraries(crossfire-client-gtk2 cfclient

View File

@@ -0,0 +1,15 @@
This library is not installed otherwise.
Make it shared has no interest.
diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt
index 1110890..081a245 100644
--- a/common/CMakeLists.txt
+++ b/common/CMakeLists.txt
@@ -13,7 +13,7 @@ add_custom_command(
# DEPENDS item-types
#)
-add_library(cfclient
+add_library(cfclient STATIC
client.c
client.h
commands.c