media-sound/easytag: fix up for id3lib bool changes

This is a temporary bandaid. I've concluded my previous approach isn't
going to work and will revisit it tomorrow, but this is good enough
for now.

Bug: https://bugs.gentoo.org/949086
Bug: https://bugs.gentoo.org/949814
Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
Sam James
2025-02-18 21:52:25 +00:00
parent aed12edb04
commit fd23dea403
2 changed files with 142 additions and 0 deletions

View File

@@ -0,0 +1,86 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
GNOME2_EAUTORECONF="yes"
inherit flag-o-matic gnome2
DESCRIPTION="GTK+ utility for editing MP2, MP3, MP4, FLAC, Ogg and other media tags"
HOMEPAGE="https://wiki.gnome.org/Apps/EasyTAG"
LICENSE="GPL-2 GPL-2+ LGPL-2 LGPL-2+ LGPL-2.1+"
SLOT="0"
KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~riscv ~x86 ~amd64-linux ~x86-linux ~ppc-macos"
IUSE="flac mp3 mp4 opus speex test vorbis wavpack"
# Disable nautilus support until https://gitlab.gnome.org/GNOME/easytag/-/issues/78
# is solved
RESTRICT="!test? ( test )"
REQUIRED_USE="
opus? ( vorbis )
speex? ( vorbis )"
RDEPEND="
>=dev-libs/glib-2.38:2
|| (
media-libs/libcanberra-gtk3
media-libs/libcanberra[gtk3(-)]
)
>=x11-libs/gtk+-3.10:3
flac? ( >=media-libs/flac-1.3:= )
mp3? (
>=media-libs/id3lib-3.8.3-r8
>=media-libs/libid3tag-0.15.1b-r4:=
)
mp4? ( media-libs/taglib:=[mp4(+)] )
opus? (
>=media-libs/opus-1.1
>=media-libs/opusfile-0.4
)
speex? ( >=media-libs/speex-1.2_rc1 )
vorbis? (
>=media-libs/libogg-1.3.1
>=media-libs/libvorbis-1.3.4
)
wavpack? ( >=media-sound/wavpack-4.70 )"
DEPEND="${RDEPEND}"
BDEPEND="
app-text/docbook-xml-dtd:4.4
app-text/yelp-tools
dev-util/glib-utils
dev-libs/appstream-glib
dev-libs/libxml2
dev-libs/libxslt
>=dev-util/intltool-0.50
>=sys-devel/gettext-0.18.3.2
virtual/pkgconfig
test? (
>=dev-util/desktop-file-utils-0.22
)"
PATCHES=(
"${FILESDIR}"/${P}-ogg-corruption.patch
"${FILESDIR}"/${P}-fix-build-taglib2.patch
"${FILESDIR}"/${P}-fix-check-id3.patch
"${FILESDIR}"/${P}-fix-appdata.patch
"${FILESDIR}"/${P}-c23.patch
)
src_configure() {
# bug #949814
filter-lto
gnome2_src_configure \
--disable-Werror \
--disable-nautilus-actions \
$(use_enable test appdata-validate) \
$(use_enable test tests) \
$(use_enable mp3) \
$(use_enable mp3 id3v23) \
$(use_enable vorbis ogg) \
$(use_enable opus) \
$(use_enable speex) \
$(use_enable flac) \
$(use_enable mp4) \
$(use_enable wavpack)
}

View File

@@ -0,0 +1,56 @@
The C23 patch we added to media-libs/id3lib for https://bugs.gentoo.org/949086
means that 'bool' isn't exposed by the id3lib headers anymore (see
commit 5b0d1e373dcd8c4f79735d033d205a6f36698c59 for the details on why)
so we need to use 'my_bool' which *is* exposed by them instead when
apparently making up our own interfaces here in easytag.
See https://bugs.gentoo.org/949814.
--- a/src/tags/id3lib/id3_bugfix.h
+++ b/src/tags/id3lib/id3_bugfix.h
@@ -29,13 +29,13 @@
G_BEGIN_DECLS
#if !HAVE_DECL_ID3FIELD_SETENCODING
-ID3_C_EXPORT bool CCONV ID3Field_SetEncoding (ID3Field *field, ID3_TextEnc enc);
+ID3_C_EXPORT my_bool CCONV ID3Field_SetEncoding (ID3Field *field, ID3_TextEnc enc);
#endif /* !HAVE_DECL_ID3FIELD_SETENCODING */
#if !HAVE_DECL_ID3FIELD_GETENCODING
ID3_C_EXPORT ID3_TextEnc CCONV ID3Field_GetEncoding (const ID3Field *field);
#endif /* !HAVE_DECL_ID3FIELD_GETENCODING */
#if !HAVE_DECL_ID3FIELD_ISENCODABLE
-ID3_C_EXPORT bool CCONV ID3Field_IsEncodable (const ID3Field *field);
+ID3_C_EXPORT my_bool CCONV ID3Field_IsEncodable (const ID3Field *field);
#endif /* !HAVE_DECL_ID3FIELD_ISENCODABLE */
ID3_C_EXPORT ID3_FieldType CCONV ID3Field_GetType (const ID3Field *field);
//ID3_C_EXPORT ID3_FieldID CCONV ID3Field_GetID (const ID3Field *field);
diff --git a/src/tags/id3lib/c_wrapper.cpp b/src/tags/id3lib/c_wrapper.cpp
index ace7442..d7ad422 100644
--- a/src/tags/id3lib/c_wrapper.cpp
+++ b/src/tags/id3lib/c_wrapper.cpp
@@ -39,7 +39,7 @@ extern "C"
// Tag wrappers
//
- ID3_C_EXPORT bool CCONV
+ ID3_C_EXPORT my_bool CCONV
ID3Field_SetEncoding(ID3Field *field, ID3_TextEnc enc)
{
bool changed = false;
@@ -61,7 +61,7 @@ extern "C"
return enc;
}
- ID3_C_EXPORT bool CCONV
+ ID3_C_EXPORT my_bool CCONV
ID3Field_IsEncodable(const ID3Field *field)
{
bool isEncodable = false;
@@ -116,7 +116,7 @@ extern "C"
// Call with :
// Mp3_Headerinfo* headerInfo = malloc(sizeof(Mp3_Headerinfo));
// ID3Tag_GetMp3HeaderInfo(tag, headerInfo);
- /*ID3_C_EXPORT bool CCONV
+ /*ID3_C_EXPORT my_bool CCONV
ID3Tag_GetMp3HeaderInfo(ID3Tag *tag, Mp3_Headerinfo* headerInfo)
{
const Mp3_Headerinfo* rem_headerInfo = NULL;