From 047579dd5fdbd32b836c75634fdce4d7ddf89607 Mon Sep 17 00:00:00 2001 From: Sam James Date: Mon, 18 Nov 2024 05:34:05 +0000 Subject: dev-libs/ell: fix C23 compat Closes: https://bugs.gentoo.org/943704 Signed-off-by: Sam James --- dev-libs/ell/ell-0.70-r1.ebuild | 63 ++++++++++++++++++++ .../0001-settings-fix-std-c23-build-failure.patch | 43 ++++++++++++++ .../0.70/0002-cert-fix-std-c23-build-failure.patch | 67 ++++++++++++++++++++++ .../0.70/0003-dbus-fix-std-c23-build-failure.patch | 45 +++++++++++++++ .../0004-test-rtnl-fix-std-c23-build-failure.patch | 58 +++++++++++++++++++ 5 files changed, 276 insertions(+) create mode 100644 dev-libs/ell/ell-0.70-r1.ebuild create mode 100644 dev-libs/ell/files/0.70/0001-settings-fix-std-c23-build-failure.patch create mode 100644 dev-libs/ell/files/0.70/0002-cert-fix-std-c23-build-failure.patch create mode 100644 dev-libs/ell/files/0.70/0003-dbus-fix-std-c23-build-failure.patch create mode 100644 dev-libs/ell/files/0.70/0004-test-rtnl-fix-std-c23-build-failure.patch (limited to 'dev-libs') diff --git a/dev-libs/ell/ell-0.70-r1.ebuild b/dev-libs/ell/ell-0.70-r1.ebuild new file mode 100644 index 000000000000..458f682ec04f --- /dev/null +++ b/dev-libs/ell/ell-0.70-r1.ebuild @@ -0,0 +1,63 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit flag-o-matic linux-info + +DESCRIPTION="Embedded Linux Library provides core, low-level functionality for system daemons" +HOMEPAGE="https://git.kernel.org/pub/scm/libs/ell/ell.git" +if [[ "${PV}" == *9999 ]] ; then + inherit autotools git-r3 + EGIT_REPO_URI="https://git.kernel.org/pub/scm/libs/ell/ell.git" +else + SRC_URI="https://mirrors.edge.kernel.org/pub/linux/libs/${PN}/${P}.tar.xz" + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86" +fi +LICENSE="LGPL-2.1+" +SLOT="0" + +IUSE="pie test" +RESTRICT="!test? ( test )" + +DEPEND="test? ( sys-apps/dbus )" + +CONFIG_CHECK=" + ~TIMERFD + ~EVENTFD + ~CRYPTO_USER_API + ~CRYPTO_USER_API_HASH + ~CRYPTO_MD5 + ~CRYPTO_SHA1 + ~KEY_DH_OPERATIONS +" + +PATCHES=( + "${FILESDIR}"/0.70 +) + +src_prepare() { + default + sed -i -e "s#/tmp/ell-test-bus#/tmp/ell-test-bus-$(uuidgen)#" \ + unit/test-dbus*.c unit/dbus.conf || die + [[ "${PV}" == *9999 ]] && eautoreconf +} + +src_configure() { + append-cflags "-fsigned-char" #662694 + local myeconfargs=( + $(use_enable pie) + ) + econf "${myeconfargs[@]}" +} + +src_install() { + default + + find "${ED}" -name "*.la" -delete || die +} + +src_test() { + # New dbus tests fail with >3 jobs, this should get fixed soon + emake -j1 check +} diff --git a/dev-libs/ell/files/0.70/0001-settings-fix-std-c23-build-failure.patch b/dev-libs/ell/files/0.70/0001-settings-fix-std-c23-build-failure.patch new file mode 100644 index 000000000000..7adbb003267a --- /dev/null +++ b/dev-libs/ell/files/0.70/0001-settings-fix-std-c23-build-failure.patch @@ -0,0 +1,43 @@ +https://bugs.gentoo.org/943704 +https://lore.kernel.org/all/20241117001814.2149181-2-slyich@gmail.com/T/#m1770e7c457dbb58d6950ee981c68cdd39a996724 + +From fdfed58104edd309431f738eaf3a7b5361ff9c86 Mon Sep 17 00:00:00 2001 +Message-ID: +From: Sergei Trofimovich +Date: Sun, 17 Nov 2024 00:18:11 +0000 +Subject: [PATCH 1/4] settings: fix -std=c23 build failure + +gcc-15 switched to -std=c23 by default: + + https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=55e3bd376b2214e200fa76d12b67ff259b06c212 + +As a result `ell` fails the build as: + + ell/settings.c: In function 'l_settings_get_embedded_value': + ell/settings.c:1521:24: error: incompatible types when returning type '_Bool' but 'const char *' was expected + 1521 | return false; + | ^~~~~ + +The change uses poiter instead of a bool to return the zero value. +--- + ell/settings.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ell/settings.c b/ell/settings.c +index a5f17d1..b46d00b 100644 +--- a/ell/settings.c ++++ b/ell/settings.c +@@ -1518,7 +1518,7 @@ LIB_EXPORT const char *l_settings_get_embedded_value( + struct embedded_group_data *group; + + if (unlikely(!settings)) +- return false; ++ return NULL; + + group = l_queue_find(settings->embedded_groups, + embedded_group_match, group_name); + +base-commit: 373b828093fd48e5f33558bfba9fceaed311486c +-- +2.47.0 + diff --git a/dev-libs/ell/files/0.70/0002-cert-fix-std-c23-build-failure.patch b/dev-libs/ell/files/0.70/0002-cert-fix-std-c23-build-failure.patch new file mode 100644 index 000000000000..85b95a845834 --- /dev/null +++ b/dev-libs/ell/files/0.70/0002-cert-fix-std-c23-build-failure.patch @@ -0,0 +1,67 @@ +https://bugs.gentoo.org/943704 +https://lore.kernel.org/all/20241117001814.2149181-2-slyich@gmail.com/T/#m1770e7c457dbb58d6950ee981c68cdd39a996724 + +From f06bcc6e1b08563ef9a8c8837ad39aaa4357ee43 Mon Sep 17 00:00:00 2001 +Message-ID: +In-Reply-To: +References: +From: Sergei Trofimovich +Date: Sun, 17 Nov 2024 00:18:12 +0000 +Subject: [PATCH 2/4] cert: fix -std=c23 build failure + +gcc-15 switched to -std=c23 by default: + + https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=55e3bd376b2214e200fa76d12b67ff +259b06c212 + +As a result `ell` fails the build as: + + 390 | return false; + | ^~~~~ + +ell/cert.c:390:32: error: incompatible types when returning type '_Bool' but 'const uint8_t *' {aka 'const unsigned char *'} was expected +--- + ell/cert.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/ell/cert.c b/ell/cert.c +index 38bb01a..19a6556 100644 +--- a/ell/cert.c ++++ b/ell/cert.c +@@ -387,13 +387,13 @@ const uint8_t *cert_get_extension(struct l_cert *cert, + + seq = asn1_der_find_elem(ext, end - ext, 0, &tag, &len); + if (unlikely(!seq || tag != ASN1_ID_SEQUENCE)) +- return false; ++ return NULL; + + ext = seq + len; + + oid = asn1_der_find_elem(seq, len, 0, &tag, &oid_len); + if (unlikely(!oid || tag != ASN1_ID_OID)) +- return false; ++ return NULL; + + if (!asn1_oid_eq(ext_id, oid_len, oid)) + continue; +@@ -403,7 +403,7 @@ const uint8_t *cert_get_extension(struct l_cert *cert, + + if (data && tag == ASN1_ID_BOOLEAN) { + if (data_len != 1) +- return false; ++ return NULL; + + critical = *data != 0; /* Tolerate BER booleans */ + +@@ -411,7 +411,7 @@ const uint8_t *cert_get_extension(struct l_cert *cert, + } + + if (unlikely(!data || tag != ASN1_ID_OCTET_STRING)) +- return false; ++ return NULL; + + if (out_critical) + *out_critical = critical; +-- +2.47.0 + diff --git a/dev-libs/ell/files/0.70/0003-dbus-fix-std-c23-build-failure.patch b/dev-libs/ell/files/0.70/0003-dbus-fix-std-c23-build-failure.patch new file mode 100644 index 000000000000..d320a7ba7ab0 --- /dev/null +++ b/dev-libs/ell/files/0.70/0003-dbus-fix-std-c23-build-failure.patch @@ -0,0 +1,45 @@ +https://bugs.gentoo.org/943704 +https://lore.kernel.org/all/20241117001814.2149181-2-slyich@gmail.com/T/#m1770e7c457dbb58d6950ee981c68cdd39a996724 + +From 4aebc7cd5b40df939532bcf4c15e0407e2748750 Mon Sep 17 00:00:00 2001 +Message-ID: <4aebc7cd5b40df939532bcf4c15e0407e2748750.1731907744.git.sam@gentoo.org> +In-Reply-To: +References: +From: Sergei Trofimovich +Date: Sun, 17 Nov 2024 00:18:13 +0000 +Subject: [PATCH 3/4] dbus: fix -std=c23 build failure + +gcc-15 switched to -std=c23 by default: + + https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=55e3bd376b2214e200fa76d12b67ff259b06c212 + +As a result `ell` fails the build as: + + 1700 | return false; + | ^~~~~ + +ell/dbus.c:1700:24: error: incompatible types when returning type '_Bool' but 'void *' was expected +--- + ell/dbus.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/ell/dbus.c b/ell/dbus.c +index bd6e1b8..1ab4ded 100644 +--- a/ell/dbus.c ++++ b/ell/dbus.c +@@ -1697,10 +1697,10 @@ LIB_EXPORT void *l_dbus_object_get_data(struct l_dbus *dbus, const char *object, + const char *interface) + { + if (unlikely(!dbus)) +- return false; ++ return NULL; + + if (unlikely(!dbus->tree)) +- return false; ++ return NULL; + + return _dbus_object_tree_get_interface_data(dbus->tree, object, + interface); +-- +2.47.0 + diff --git a/dev-libs/ell/files/0.70/0004-test-rtnl-fix-std-c23-build-failure.patch b/dev-libs/ell/files/0.70/0004-test-rtnl-fix-std-c23-build-failure.patch new file mode 100644 index 000000000000..a170e2475b0c --- /dev/null +++ b/dev-libs/ell/files/0.70/0004-test-rtnl-fix-std-c23-build-failure.patch @@ -0,0 +1,58 @@ +https://bugs.gentoo.org/943704 +https://lore.kernel.org/all/20241117001814.2149181-2-slyich@gmail.com/T/#m1770e7c457dbb58d6950ee981c68cdd39a996724 + +From f5048a5412a0f046c58e1566569dfcc31cd5b5d6 Mon Sep 17 00:00:00 2001 +Message-ID: +In-Reply-To: +References: +From: Sergei Trofimovich +Date: Sun, 17 Nov 2024 00:18:14 +0000 +Subject: [PATCH 4/4] test-rtnl: fix -std=c23 build failure + +gcc-15 switched to -std=c23 by default: + + https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=55e3bd376b2214e200fa76d12b67ff259b06c212 + +As a result `ell` fails the build as: + + passing argument 1 of 'l_idle_oneshot' from incompatible pointer type [-Wincompatible-pointer-types] + 501 | l_idle_oneshot(test_next, NULL, NULL); + | ^~~~~~~~~ + | | + | void (*)(void) + +unit/test-rtnl.c: In function 'test_run': +unit/test-rtnl.c:501:24: error: +--- + unit/test-rtnl.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/unit/test-rtnl.c b/unit/test-rtnl.c +index 59d8492..6fbac9e 100644 +--- a/unit/test-rtnl.c ++++ b/unit/test-rtnl.c +@@ -358,6 +358,12 @@ static void test_next() + test->start(rtnl, test->data); + } + ++static void test_next_cb(void * unused) ++{ ++ (void)unused; ++ test_next(); ++} ++ + #define test_assert(cond) \ + do { \ + if (!(cond)) { \ +@@ -498,7 +504,7 @@ static void test_run(void) + { + success = false; + +- l_idle_oneshot(test_next, NULL, NULL); ++ l_idle_oneshot(test_next_cb, NULL, NULL); + l_main_run_with_signal(signal_handler, NULL); + } + +-- +2.47.0 + -- cgit v1.2.3-65-gdbad