commit: bdd989aff6fbe6b1137aa5a9228009a8aa4154dd Author: Alfred Wingate <parona <AT> protonmail <DOT> com> AuthorDate: Sun Jul 14 20:04:55 2024 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Thu Aug 22 14:48:42 2024 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=bdd989af
dev-libs/wayland: fix revdep clang builds with C23 Closes: https://bugs.gentoo.org/936061 Signed-off-by: Alfred Wingate <parona <AT> protonmail.com> Closes: https://github.com/gentoo/gentoo/pull/37554 Signed-off-by: Sam James <sam <AT> gentoo.org> .../files/wayland-1.23.0-c23-clang-fix.patch | 146 +++++++++++++++++++++ dev-libs/wayland/wayland-1.23.0-r1.ebuild | 70 ++++++++++ 2 files changed, 216 insertions(+) diff --git a/dev-libs/wayland/files/wayland-1.23.0-c23-clang-fix.patch b/dev-libs/wayland/files/wayland-1.23.0-c23-clang-fix.patch new file mode 100644 index 000000000000..8dc80d3c8fe8 --- /dev/null +++ b/dev-libs/wayland/files/wayland-1.23.0-c23-clang-fix.patch @@ -0,0 +1,146 @@ +https://bugs.gentoo.org/936061 +https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3859 +https://gitlab.freedesktop.org/wayland/wayland/-/merge_requests/401 + +From 7be937e795ff88128d64b88f9482f05aa0d91319 Mon Sep 17 00:00:00 2001 +From: Kirill Primak <[email protected]> +Date: Sat, 29 Jun 2024 15:05:00 +0300 +Subject: [PATCH] Put WL_DEPRECATED in front of the function declarations + +This fixes the following clang error when using C23: + +../src/wayland-server-core.h:680:41: error: 'deprecated' attribute cannot be applied to types + 680 | int32_t stride, uint32_t format) WL_DEPRECATED; + | ^ +../src/wayland-util.h:52:25: note: expanded from macro 'WL_DEPRECATED' + 52 | #define WL_DEPRECATED [[deprecated]] + | ^ + +Signed-off-by: Kirill Primak <[email protected]> +--- a/src/wayland-server-core.h ++++ b/src/wayland-server-core.h +@@ -674,10 +674,11 @@ wl_display_init_shm(struct wl_display *display); + uint32_t * + wl_display_add_shm_format(struct wl_display *display, uint32_t format); + ++WL_DEPRECATED + struct wl_shm_buffer * + wl_shm_buffer_create(struct wl_client *client, + uint32_t id, int32_t width, int32_t height, +- int32_t stride, uint32_t format) WL_DEPRECATED; ++ int32_t stride, uint32_t format); + + void + wl_log_set_handler_server(wl_log_func_t handler); +--- a/src/wayland-server.c ++++ b/src/wayland-server.c +@@ -2483,9 +2483,10 @@ wl_priv_signal_final_emit(struct wl_priv_signal *signal, void *data) + + /** \cond */ /* Deprecated functions below. */ + ++WL_DEPRECATED + uint32_t + wl_client_add_resource(struct wl_client *client, +- struct wl_resource *resource) WL_DEPRECATED; ++ struct wl_resource *resource); + + WL_EXPORT uint32_t + wl_client_add_resource(struct wl_client *client, +@@ -2514,11 +2515,12 @@ wl_client_add_resource(struct wl_client *client, + return resource->object.id; + } + ++WL_DEPRECATED + struct wl_resource * + wl_client_add_object(struct wl_client *client, + const struct wl_interface *interface, + const void *implementation, +- uint32_t id, void *data) WL_DEPRECATED; ++ uint32_t id, void *data); + + WL_EXPORT struct wl_resource * + wl_client_add_object(struct wl_client *client, +@@ -2537,10 +2539,11 @@ wl_client_add_object(struct wl_client *client, + return resource; + } + ++WL_DEPRECATED + struct wl_resource * + wl_client_new_object(struct wl_client *client, + const struct wl_interface *interface, +- const void *implementation, void *data) WL_DEPRECATED; ++ const void *implementation, void *data); + + WL_EXPORT struct wl_resource * + wl_client_new_object(struct wl_client *client, +@@ -2599,10 +2602,11 @@ wl_client_get_user_data(struct wl_client *client) + return client->data; + } + ++WL_DEPRECATED + struct wl_global * + wl_display_add_global(struct wl_display *display, + const struct wl_interface *interface, +- void *data, wl_global_bind_func_t bind) WL_DEPRECATED; ++ void *data, wl_global_bind_func_t bind); + + WL_EXPORT struct wl_global * + wl_display_add_global(struct wl_display *display, +@@ -2612,9 +2616,10 @@ wl_display_add_global(struct wl_display *display, + return wl_global_create(display, interface, interface->version, data, bind); + } + ++WL_DEPRECATED + void + wl_display_remove_global(struct wl_display *display, +- struct wl_global *global) WL_DEPRECATED; ++ struct wl_global *global); + + WL_EXPORT void + wl_display_remove_global(struct wl_display *display, struct wl_global *global) +--- a/src/wayland-server.h ++++ b/src/wayland-server.h +@@ -70,30 +70,35 @@ struct wl_resource { + void *data; + }; + ++WL_DEPRECATED + uint32_t + wl_client_add_resource(struct wl_client *client, +- struct wl_resource *resource) WL_DEPRECATED; ++ struct wl_resource *resource); + ++WL_DEPRECATED + struct wl_resource * + wl_client_add_object(struct wl_client *client, + const struct wl_interface *interface, + const void *implementation, +- uint32_t id, void *data) WL_DEPRECATED; ++ uint32_t id, void *data); + ++WL_DEPRECATED + struct wl_resource * + wl_client_new_object(struct wl_client *client, + const struct wl_interface *interface, +- const void *implementation, void *data) WL_DEPRECATED; ++ const void *implementation, void *data); + ++WL_DEPRECATED + struct wl_global * + wl_display_add_global(struct wl_display *display, + const struct wl_interface *interface, + void *data, +- wl_global_bind_func_t bind) WL_DEPRECATED; ++ wl_global_bind_func_t bind); + ++WL_DEPRECATED + void + wl_display_remove_global(struct wl_display *display, +- struct wl_global *global) WL_DEPRECATED; ++ struct wl_global *global); + + #endif + +-- +GitLab + diff --git a/dev-libs/wayland/wayland-1.23.0-r1.ebuild b/dev-libs/wayland/wayland-1.23.0-r1.ebuild new file mode 100644 index 000000000000..ec497be319af --- /dev/null +++ b/dev-libs/wayland/wayland-1.23.0-r1.ebuild @@ -0,0 +1,70 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +if [[ ${PV} = *9999* ]]; then + EGIT_REPO_URI="https://gitlab.freedesktop.org/wayland/wayland.git" + inherit git-r3 +else + SRC_URI="https://gitlab.freedesktop.org/wayland/${PN}/-/releases/${PV}/downloads/${P}.tar.xz" + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +fi +inherit meson-multilib + +DESCRIPTION="Wayland protocol libraries" +HOMEPAGE="https://wayland.freedesktop.org/ https://gitlab.freedesktop.org/wayland/wayland" + +LICENSE="MIT" +SLOT="0" +IUSE="doc test" +RESTRICT="!test? ( test )" + +BDEPEND=" + ~dev-util/wayland-scanner-${PV} + virtual/pkgconfig + doc? ( + >=app-text/doxygen-1.6[dot] + app-text/xmlto + >=media-gfx/graphviz-2.26.0 + ) +" +DEPEND=" + >=dev-libs/libffi-3.0.13-r1:=[${MULTILIB_USEDEP}] +" +RDEPEND="${DEPEND}" + +PATCHES=( + "${FILESDIR}"/wayland-1.23.0-c23-clang-fix.patch +) + +multilib_src_configure() { + local emesonargs=( + $(meson_native_use_bool doc documentation) + $(meson_native_true dtd_validation) + -Dlibraries=true + -Dscanner=false + $(meson_use test tests) + ) + meson_src_configure +} + +src_test() { + # We set it on purpose to only a short subdir name, as socket paths are + # created in there, which are 108 byte limited. With this it hopefully + # barely fits to the limit with /var/tmp/portage/${CATEGORY}/${PF}/temp/x + export XDG_RUNTIME_DIR="${T}"/x + mkdir "${XDG_RUNTIME_DIR}" || die + chmod 0700 "${XDG_RUNTIME_DIR}" || die + + multilib-minimal_src_test +} + +src_install() { + meson-multilib_src_install + + if use doc; then + mv "${ED}"/usr/share/doc/"${PN}"/* "${ED}"/usr/share/doc/"${PF}"/ || die + rmdir "${ED}"/usr/share/doc/"${PN}" || die + fi +}
