commit:     84ee86e1399efb7a39b33f1ad7e00e5978111d5a
Author:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Fri Oct  8 04:29:12 2021 +0000
Commit:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Fri Oct  8 04:37:21 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=84ee86e1

dev-games/clanlib: fix consumers when built against glibc-2.34

Code to avoid issues was pre-existing but not enabled on Linux.

Affected 0.8 and 2.3 slots, >=4.0 is no longer using this function.

Closes: https://bugs.gentoo.org/808707
Closes: https://bugs.gentoo.org/811591
Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>

 dev-games/clanlib/clanlib-0.8.1-r2.ebuild          |  94 ++++++++++++++++++
 dev-games/clanlib/clanlib-2.3.7-r2.ebuild          | 107 +++++++++++++++++++++
 .../clanlib/files/clanlib-0.8.1-glibc2.34.patch    |  17 ++++
 .../clanlib/files/clanlib-2.3.7-glibc2.34.patch    |  17 ++++
 4 files changed, 235 insertions(+)

diff --git a/dev-games/clanlib/clanlib-0.8.1-r2.ebuild 
b/dev-games/clanlib/clanlib-0.8.1-r2.ebuild
new file mode 100644
index 00000000000..a52b9730199
--- /dev/null
+++ b/dev-games/clanlib/clanlib-0.8.1-r2.ebuild
@@ -0,0 +1,94 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DESCRIPTION="Multi-platform game development library"
+HOMEPAGE="http://www.clanlib.org/";
+SRC_URI="http://clanlib.org/download/releases-${PV:0:3}/ClanLib-${PV}.tgz";
+S="${WORKDIR}"/ClanLib-${PV}
+
+LICENSE="ZLIB"
+SLOT="0.8"
+# Not big endian safe! #82779
+KEYWORDS="~amd64 ~x86"
+IUSE="doc ipv6 mikmod opengl sdl static-libs vorbis"
+
+# opengl keyword does not drop the GL/GLU requirement.
+# Autoconf files need to be fixed
+RDEPEND="
+       media-libs/alsa-lib
+       media-libs/libpng:0
+       virtual/jpeg:0
+       virtual/glu
+       virtual/opengl
+       x11-libs/libXi
+       x11-libs/libXmu
+       x11-libs/libXxf86vm
+       mikmod? ( media-libs/libmikmod )
+       sdl? (
+               media-libs/libsdl[X]
+               media-libs/sdl-gfx
+       )
+       vorbis? ( media-libs/libvorbis )
+"
+DEPEND="
+       ${RDEPEND}
+       x11-base/xorg-proto
+"
+
+PATCHES=(
+       "${FILESDIR}/${P}-ndebug.patch"
+       "${FILESDIR}/${P}-gcc43.patch"
+       "${FILESDIR}/${P}-gcc44.patch"
+       "${FILESDIR}/${P}-gcc47.patch"
+       "${FILESDIR}/${P}-gcc6.patch"
+       "${FILESDIR}/${P}-llvm.patch"
+       "${FILESDIR}/${P}-libpng15.patch"
+       "${FILESDIR}/${P}-docbuilder.patch"
+       "${FILESDIR}/${P}-glibc2.34.patch"
+)
+
+DOCS=(
+       CODING_STYLE CREDITS NEWS PATCHES
+       README{,.anjuta,.distros,.kdevelop,.sdl,.upgrade} INSTALL.linux
+)
+
+src_prepare() {
+       default
+       # See #739358
+       sed -i -e "s:libdir=\${exec_prefix}/lib:libdir=@libdir@:g" \
+               pkgconfig/*.pc.in || die
+}
+
+src_configure() {
+       # clanSound only controls mikmod/vorbis so there's
+       # no need to pass --{en,dis}able-clanSound ...
+       # clanDisplay only controls X, SDL, OpenGL plugins
+       # so no need to pass --{en,dis}able-clanDisplay
+       # also same reason why we don't have to use clanGUI
+       econf \
+               --enable-dyn \
+               --enable-clanNetwork \
+               $(use_enable x86 asm386) \
+               $(use_enable doc docs) \
+               $(use_enable opengl clanGL) \
+               $(use_enable sdl clanSDL) \
+               $(use_enable vorbis clanVorbis) \
+               $(use_enable mikmod clanMikMod) \
+               $(use_enable ipv6 getaddr) \
+               $(use_enable static-libs static)
+}
+
+src_install() {
+       default
+
+       if use doc ; then
+               dodir /usr/share/doc/${PF}/html
+               mv "${D}"/usr/share/doc/clanlib/* 
"${D}"/usr/share/doc/${PF}/html/ || die
+               rm -rf "${D}"/usr/share/doc/clanlib
+               cp -r Examples Resources "${D}"/usr/share/doc/${PF}/ || die
+       fi
+
+       find "${ED}" -name '*.la' -delete || die
+}

diff --git a/dev-games/clanlib/clanlib-2.3.7-r2.ebuild 
b/dev-games/clanlib/clanlib-2.3.7-r2.ebuild
new file mode 100644
index 00000000000..b27100b9778
--- /dev/null
+++ b/dev-games/clanlib/clanlib-2.3.7-r2.ebuild
@@ -0,0 +1,107 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools toolchain-funcs
+
+MY_P=ClanLib-${PV}
+DESCRIPTION="Multi-platform game development library"
+HOMEPAGE="http://www.clanlib.org/";
+SRC_URI="http://clanlib.org/download/releases-2.0/${MY_P}.tgz";
+S="${WORKDIR}"/${MY_P}
+
+LICENSE="ZLIB"
+SLOT="2.3"
+# Not big endian safe! #82779
+KEYWORDS="~amd64 ~x86"
+IUSE="doc ipv6 mikmod opengl sound sqlite cpu_flags_x86_sse2 static-libs 
vorbis X"
+REQUIRED_USE="opengl? ( X )"
+
+BDEPEND="
+       virtual/pkgconfig
+       doc? ( app-doc/doxygen dev-lang/perl )
+"
+RDEPEND="
+       sys-libs/zlib
+       X? (
+               app-arch/bzip2
+               media-libs/libpng:0
+               media-libs/freetype
+               media-libs/fontconfig
+               virtual/jpeg:0
+               x11-libs/libX11
+               opengl? ( virtual/opengl )
+       )
+       mikmod? (
+               media-libs/alsa-lib
+               media-libs/libmikmod
+       )
+       sqlite? ( dev-db/sqlite:3 )
+       sound? ( media-libs/alsa-lib )
+       vorbis? (
+               media-libs/alsa-lib
+               media-libs/libogg
+               media-libs/libvorbis
+       )
+"
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+       "${FILESDIR}"/${P}-autotools.patch
+       "${FILESDIR}"/${P}-doc.patch
+       "${FILESDIR}"/${P}-freetype_pkgconfig.patch #764902
+       "${FILESDIR}"/${P}-glibc2.34.patch
+)
+
+DOCS=( CODING_STYLE CREDITS PATCHES README )
+
+src_prepare() {
+       default
+
+       eautoreconf
+
+       ln -sf ../../../Sources/API 
Documentation/Utilities/ReferenceDocs/ClanLib || die
+}
+
+src_configure() {
+       # Add -DPACKAGE_BUGREPORT?
+       local myeconfargs=(
+               $(use_enable doc docs)
+               $(use_enable cpu_flags_x86_sse2 sse2)
+               $(use_enable opengl clanGL)
+               $(use_enable opengl clanGL1)
+               $(use_enable opengl clanGUI)
+               $(use_enable X clanDisplay)
+               $(use_enable vorbis clanVorbis)
+               $(use_enable mikmod clanMikMod)
+               $(use_enable sqlite clanSqlite)
+               $(use_enable ipv6 getaddr)
+       )
+
+       use sound \
+               || use vorbis \
+               || use mikmod \
+               || myeconfargs+=( --disable-clanSound )
+
+       tc-export PKG_CONFIG
+
+       econf "${myeconfargs[@]}"
+}
+
+src_compile() {
+       emake
+
+       use doc && emake html
+}
+
+# html files are keeped in a directory that is dependent on the SLOT
+# so to keep eventual bookmarks to the doc from version to version
+src_install() {
+       default
+
+       if use doc ; then
+               emake DESTDIR="${D}" install-html
+               dodoc -r Examples Resources
+       fi
+}

diff --git a/dev-games/clanlib/files/clanlib-0.8.1-glibc2.34.patch 
b/dev-games/clanlib/files/clanlib-0.8.1-glibc2.34.patch
new file mode 100644
index 00000000000..85c20ccdbcf
--- /dev/null
+++ b/dev-games/clanlib/files/clanlib-0.8.1-glibc2.34.patch
@@ -0,0 +1,17 @@
+pthread_mutexattr_setkind_np() is long deprecated and should be using
+pthread_mutexattr_settype() instead even on Linux. Fixes consumers
+when built against glibc-2.34.
+
+https://bugs.gentoo.org/808707
+--- a/Sources/Core/System/Unix/mutex_pthread.cpp
++++ b/Sources/Core/System/Unix/mutex_pthread.cpp
+@@ -42,3 +42,3 @@
+ {
+-#ifdef __FreeBSD__
++#if 1
+       int pthread_mutexattr_settype(pthread_mutexattr_t *attr, int kind);
+@@ -65,3 +65,3 @@
+ #else
+-#ifdef __FreeBSD__
++#if 1
+         pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);

diff --git a/dev-games/clanlib/files/clanlib-2.3.7-glibc2.34.patch 
b/dev-games/clanlib/files/clanlib-2.3.7-glibc2.34.patch
new file mode 100644
index 00000000000..05e7320428c
--- /dev/null
+++ b/dev-games/clanlib/files/clanlib-2.3.7-glibc2.34.patch
@@ -0,0 +1,17 @@
+pthread_mutexattr_setkind_np() is long deprecated and should be using
+pthread_mutexattr_settype() instead even on Linux. Fixes consumers
+when built against glibc-2.34.
+
+https://bugs.gentoo.org/811591
+--- a/Sources/Core/System/mutex.cpp
++++ b/Sources/Core/System/mutex.cpp
+@@ -37,3 +37,3 @@
+ {
+-#if defined(__APPLE__) || defined (__FreeBSD__) || defined(__OpenBSD__)
++#if 1
+       int pthread_mutexattr_settype(pthread_mutexattr_t *attr, int kind);
+@@ -55,3 +55,3 @@
+       pthread_mutexattr_init(&attr);
+-      #if defined(__FreeBSD__) || defined(__APPLE__)
++      #if 1
+       pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);

Reply via email to