commit:     4570caacaf658978676d0571efc4c6a877ec183d
Author:     Nicolas PARLANT <nicolas.parlant <AT> parhuet <DOT> fr>
AuthorDate: Fri Oct  3 08:20:05 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Oct  4 00:56:04 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4570caac

games-arcade/blobby: add 1.1.1

update EAPI to 8
update SRC_URI (redirect)

unbundle lua and tinyxml2
use media-libs/libglvnd instead of virtual/opengl
builtin tar from cmake is used instead of app-arch/zip
filter-lto (Werror=strict-aliasing)
wakeup testsuite

Closes: https://bugs.gentoo.org/868723
Closes: https://bugs.gentoo.org/938116
Closes: https://bugs.gentoo.org/957868
Closes: https://bugs.gentoo.org/957869
Signed-off-by: Nicolas PARLANT <nicolas.parlant <AT> parhuet.fr>
Part-of: https://github.com/gentoo/gentoo/pull/44018
Signed-off-by: Sam James <sam <AT> gentoo.org>

 games-arcade/blobby/Manifest                       |   1 +
 games-arcade/blobby/blobby-1.1.1.ebuild            |  59 ++++++++++
 .../blobby/files/blobby-1.1.1-fix_deps.patch       |  36 ++++++
 .../blobby/files/blobby-1.1.1-fix_linkedlist.patch | 130 +++++++++++++++++++++
 4 files changed, 226 insertions(+)

diff --git a/games-arcade/blobby/Manifest b/games-arcade/blobby/Manifest
index c386ce1af196..abd759d52347 100644
--- a/games-arcade/blobby/Manifest
+++ b/games-arcade/blobby/Manifest
@@ -1 +1,2 @@
 DIST blobby2-linux-1.0.tar.gz 1772918 BLAKE2B 
ee2231d5c2a287f812debf43a95b6ffe4abdcd87fec41eea5e528253d83190f20d4b2245b5e530f1b8b9df310ce2757b06377f7305f8cf60e6d51db9964ea239
 SHA512 
b9e36de4a44e482c9d0742b95034c2979d7a51512ac5e3fd8f4933655132028dfc9642c3580e5523b5b95d38acc169932d24808cee236710731c2571321337fa
+DIST blobby2-linux-1.1.1.tar.gz 2549889 BLAKE2B 
120906ac3a01cb0abf00f288c6955df1e8f9dc2e0ed74c6bc70fb7069a6c29d38f860c2b9fbfb42084e4693cafc1bf40f09cd3eba355fac148d9860376bb6486
 SHA512 
4061de21586ed8404c1cfb5284820e5e0835d10270de12d5e336c1fd9bb080f27a732d9d6cd3a98cbf1eb9d674791d028692f8031b56a9e0be09fcadb2e64c03

diff --git a/games-arcade/blobby/blobby-1.1.1.ebuild 
b/games-arcade/blobby/blobby-1.1.1.ebuild
new file mode 100644
index 000000000000..717e0b8d523f
--- /dev/null
+++ b/games-arcade/blobby/blobby-1.1.1.ebuild
@@ -0,0 +1,59 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LUA_COMPAT=( lua5-{3,4} )
+
+inherit cmake edo flag-o-matic lua-single xdg
+
+DESCRIPTION="Beach ball game with blobs of goo"
+HOMEPAGE="https://sourceforge.net/projects/blobby/";
+SRC_URI="https://downloads.sourceforge.net/project/blobby/Blobby%20Volley%202%20%28Linux%29/${PV}/${PN}2-linux-${PV}.tar.gz";
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="test"
+REQUIRED_USE="${LUA_REQUIRED_USE}"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+       ${LUA_DEPS}
+       dev-games/physfs[zip]
+       dev-libs/tinyxml2:=
+       media-libs/libglvnd
+       media-libs/libsdl2[sound,joystick,opengl,video]
+"
+DEPEND="
+       ${RDEPEND}
+       dev-libs/boost
+"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-1.1.1-fix_linkedlist.patch # from upstream
+       "${FILESDIR}"/${PN}-1.1.1-fix_deps.patch
+)
+
+src_prepare() {
+       cmake_src_prepare
+       # lua and tinyxml2 unbundled by patch
+       cmake_comment_add_subdirectory deps
+}
+
+src_configure() {
+       # https://github.com/danielknobe/blobbyvolley2/issues/163
+       filter-lto
+       append-flags -fno-strict-aliasing
+       local mycmakeargs=(
+               -DBUILD_TESTS=$(usex test)
+       )
+       cmake_src_configure
+}
+
+src_test() {
+       pushd "${BUILD_DIR}"/test || die
+       edo ./blobbytest --report_level=short
+       popd || die
+}

diff --git a/games-arcade/blobby/files/blobby-1.1.1-fix_deps.patch 
b/games-arcade/blobby/files/blobby-1.1.1-fix_deps.patch
new file mode 100644
index 000000000000..8aa84ec2d12d
--- /dev/null
+++ b/games-arcade/blobby/files/blobby-1.1.1-fix_deps.patch
@@ -0,0 +1,36 @@
+use system-libs for lua and tinyxml2
+use pkgconfig for opengl to avoid X requirement due to findOpenGL.cmake
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -83,7 +83,10 @@ set (blobby-server_SRC ${common_SRC}
+       )
+ 
+ find_package(Boost REQUIRED)
+-find_package(OpenGL)
++find_package(PkgConfig REQUIRED)
++pkg_check_modules(OPENGL REQUIRED opengl)
++pkg_check_modules(lua REQUIRED IMPORTED_TARGET lua)
++pkg_check_modules(tinyxml2 REQUIRED IMPORTED_TARGET tinyxml2)
+ add_subdirectory(raknet)
+ add_subdirectory(blobnet)
+ 
+@@ -100,7 +103,7 @@ if (UNIX AND (NOT ANDROID))
+       
add_definitions("-DBLOBBY_DATA_DIR=\"${CMAKE_INSTALL_PREFIX}/share/blobby\"")
+ endif()
+ 
+-set(BLOBBY_COMMON_LIBS lua::lua blobnet::blobnet tinyxml2::tinyxml2 
PhysFS::PhysFS SDL2::SDL2main SDL2::SDL2 Boost::boost)
++set(BLOBBY_COMMON_LIBS PkgConfig::lua blobnet::blobnet PkgConfig::tinyxml2 
PhysFS::PhysFS SDL2::SDL2main SDL2::SDL2 Boost::boost)
+ 
+ # other additional dependencies
+ if (NOT WIN32)
+--- a/test/CMakeLists.txt
++++ b/test/CMakeLists.txt
+@@ -35,6 +35,6 @@ endif ("${SDL2_LIBRARIES}" STREQUAL "")
+ 
+ add_executable(blobbytest GenericIOTest.cpp FileTest.cpp Base64Test.cpp 
${SRC})
+ 
+-target_include_directories(blobbytest PRIVATE ${Boost_INCLUDE_DIR} 
${PHYSFS_INCLUDE_DIR} ${SDL2_INCLUDE_DIRS} ../src)
++target_include_directories(blobbytest PRIVATE ${Boost_INCLUDE_DIR} 
${PHYSFS_INCLUDE_DIR} ${SDL2_INCLUDE_DIRS} ${lua_INCLUDE_DIRS} 
${tinyxml2_INCLUDE_DIRS} ../src)
+ target_compile_definitions(blobbytest PRIVATE "BOOST_TEST_DYN_LINK=1")
+-target_link_libraries(blobbytest ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY} 
${PHYSFS_LIBRARY} ${SDL2_LIBRARIES} lua raknet tinyxml2)
++target_link_libraries(blobbytest ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY} 
${PHYSFS_LIBRARY} ${SDL2_LIBRARIES} ${lua_LIBRARIES} ${tinyxml2_LIBRARIES} 
raknet)

diff --git a/games-arcade/blobby/files/blobby-1.1.1-fix_linkedlist.patch 
b/games-arcade/blobby/files/blobby-1.1.1-fix_linkedlist.patch
new file mode 100644
index 000000000000..3f05c3ffc351
--- /dev/null
+++ b/games-arcade/blobby/files/blobby-1.1.1-fix_linkedlist.patch
@@ -0,0 +1,130 @@
+from upstream, fix compile with clang-19
+https://github.com/danielknobe/blobbyvolley2/pull/152/commits/f5111f93827bc7e1dc7423209986fe14a92823db.patch
+--- a/src/raknet/LinkedList.h
++++ b/src/raknet/LinkedList.h
+@@ -272,7 +272,9 @@ namespace BasicDataStructures
+       template <class LinkedListType>
+               bool LinkedList<LinkedListType>::operator= ( const 
LinkedList<LinkedListType>& original_copy )
+       {
+-              typename LinkedList::node * original_copy_pointer, 
*save_position;
++              typename LinkedList::node* original_copy_pointer;
++              typename LinkedList::node* last;
++              typename LinkedList::node* save_position;
+ 
+               if ( ( &original_copy ) != this )
+               {
+@@ -318,7 +320,7 @@ namespace BasicDataStructures
+ 
+ 
+                                               // Save the current element
+-                                              this->last = this->position;
++                                              last = this->position;
+ 
+                                               // Point to the next node in 
the source list
+                                               original_copy_pointer = 
original_copy_pointer->next;
+@@ -336,10 +338,10 @@ namespace BasicDataStructures
+ 
+ 
+                                               // Set the previous pointer for 
the new node
+-                                              ( this->position->previous ) = 
this->last;
++                                              ( this->position->previous ) = 
last;
+ 
+                                               // Set the next pointer for the 
old node to the new node
+-                                              ( this->last->next ) = 
this->position;
++                                              ( last->next ) = this->position;
+ 
+                                       }
+ 
+@@ -383,7 +385,9 @@ namespace BasicDataStructures
+       template <class LinkedListType>
+               LinkedList<LinkedListType>::LinkedList( const LinkedList& 
original_copy )
+       {
+-              typename LinkedList::node * original_copy_pointer, *last, 
*save_position;
++              typename LinkedList::node * original_copy_pointer;
++              typename LinkedList::node * last;
++              typename LinkedList::node * save_position;
+ 
+               if ( original_copy.list_size == 0 )
+               {
+@@ -422,7 +426,7 @@ namespace BasicDataStructures
+                               do
+                               {
+                                       // Save the current element
+-                                      this->last = this->position;
++                                      last = this->position;
+ 
+                                       // Point to the next node in the source 
list
+                                       original_copy_pointer = 
original_copy_pointer->next;
+@@ -442,7 +446,7 @@ namespace BasicDataStructures
+                                       ( this->position->previous ) = last;
+ 
+                                       // Set the next pointer for the old 
node to the new node
+-                                      ( this->last->next ) = this->position;
++                                      ( last->next ) = this->position;
+ 
+                               }
+ 
+@@ -462,7 +466,8 @@ namespace BasicDataStructures
+       template <class CircularLinkedListType>
+               CircularLinkedList<CircularLinkedListType>::CircularLinkedList( 
const CircularLinkedList& original_copy )
+       {
+-              node * original_copy_pointer;
++              node *original_copy_pointer;
++              node *last;
+               node *save_position;
+ 
+               if ( original_copy.list_size == 0 )
+@@ -504,7 +509,7 @@ namespace BasicDataStructures
+ 
+ 
+                                       // Save the current element
+-                                      this->last = this->position;
++                                      last = this->position;
+ 
+                                       // Point to the next node in the source 
list
+                                       original_copy_pointer = 
original_copy_pointer->next;
+@@ -521,10 +526,10 @@ namespace BasicDataStructures
+                                               save_position = position;
+ 
+                                       // Set the previous pointer for the new 
node
+-                                      ( this->position->previous ) = 
this->last;
++                                      ( this->position->previous ) = last;
+ 
+                                       // Set the next pointer for the old 
node to the new node
+-                                      ( this->last->next ) = this->position;
++                                      ( last->next ) = this->position;
+ 
+                               }
+ 
+@@ -544,7 +549,8 @@ namespace BasicDataStructures
+       template <class CircularLinkedListType>
+               bool CircularLinkedList<CircularLinkedListType>::operator= ( 
const CircularLinkedList& original_copy )
+       {
+-              node * original_copy_pointer;
++              node *original_copy_pointer;
++              node *last;
+               node *save_position;
+ 
+               if ( ( &original_copy ) != this )
+@@ -589,7 +595,7 @@ namespace BasicDataStructures
+                                       do
+                                       {
+                                               // Save the current element
+-                                              this->last = this->position;
++                                              last = this->position;
+ 
+                                               // Point to the next node in 
the source list
+                                               original_copy_pointer = 
original_copy_pointer->next;
+@@ -606,10 +612,10 @@ namespace BasicDataStructures
+                                                       save_position = 
this->position;
+ 
+                                               // Set the previous pointer for 
the new node
+-                                              ( this->position->previous ) = 
this->last;
++                                              ( this->position->previous ) = 
last;
+ 
+                                               // Set the next pointer for the 
old node to the new node
+-                                              ( this->last->next ) = 
this->position;
++                                              ( last->next ) = this->position;
+ 
+                                       }
+ 

Reply via email to