diff options
author | Sam James <sam@gentoo.org> | 2024-11-22 01:51:00 +0000 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2024-11-22 01:51:00 +0000 |
commit | d698238def02f756ddd7b8e5b369bd2542f79a75 (patch) | |
tree | 04f893eb6cd0772ce6214eab96813ffd90852a7c /dev-libs/oniguruma | |
parent | app-i18n/fcitx: Stabilize 5.1.11 x86, #942644 (diff) | |
download | gentoo-d698238def02f756ddd7b8e5b369bd2542f79a75.tar.gz gentoo-d698238def02f756ddd7b8e5b369bd2542f79a75.tar.bz2 gentoo-d698238def02f756ddd7b8e5b369bd2542f79a75.zip |
dev-libs/oniguruma: fix C23 compat
Closes: https://bugs.gentoo.org/943665
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'dev-libs/oniguruma')
-rw-r--r-- | dev-libs/oniguruma/files/oniguruma-6.9.9-c23.patch | 170 | ||||
-rw-r--r-- | dev-libs/oniguruma/oniguruma-6.9.9-r1.ebuild | 59 |
2 files changed, 229 insertions, 0 deletions
diff --git a/dev-libs/oniguruma/files/oniguruma-6.9.9-c23.patch b/dev-libs/oniguruma/files/oniguruma-6.9.9-c23.patch new file mode 100644 index 000000000000..e5ced7df2136 --- /dev/null +++ b/dev-libs/oniguruma/files/oniguruma-6.9.9-c23.patch @@ -0,0 +1,170 @@ +https://github.com/kkos/oniguruma/issues/312 +https://github.com/kkos/oniguruma/commit/5f1408dee4a01dee60c4cd67f2e2e46484ef50a5 +https://github.com/kkos/oniguruma/commit/b803288174dcef9b56836aee1ee78a4f3256d8f6 + +From 5f1408dee4a01dee60c4cd67f2e2e46484ef50a5 Mon Sep 17 00:00:00 2001 +From: "K.Kosako" <kkosako0@gmail.com> +Date: Mon, 18 Nov 2024 00:18:12 +0900 +Subject: [PATCH] fix #312: Build failure with GCC 15 (C23) + +--- + src/regparse.c | 44 ++++++++++++++++++++++++++++++++++++-------- + src/st.h | 9 +-------- + 2 files changed, 37 insertions(+), 16 deletions(-) + +diff --git a/src/regparse.c b/src/regparse.c +index 24bcbaac..9acdd6e2 100644 +--- a/src/regparse.c ++++ b/src/regparse.c +@@ -793,8 +793,13 @@ onig_print_names(FILE* fp, regex_t* reg) + #endif /* ONIG_DEBUG */ + + static int +-i_free_name_entry(UChar* key, NameEntry* e, void* arg ARG_UNUSED) ++i_free_name_entry(st_data_t akey, st_data_t ae, st_data_t arg ARG_UNUSED) + { ++ UChar* key; ++ NameEntry* e; ++ ++ key = (UChar* )akey; ++ e = (NameEntry* )ae; + xfree(e->name); + if (IS_NOT_NULL(e->back_refs)) xfree(e->back_refs); + xfree(key); +@@ -850,8 +855,14 @@ typedef struct { + } INamesArg; + + static int +-i_names(UChar* key ARG_UNUSED, NameEntry* e, INamesArg* arg) ++i_names(st_data_t key ARG_UNUSED, st_data_t ae, st_data_t aarg) + { ++ NameEntry* e; ++ INamesArg* arg; ++ ++ e = (NameEntry* )ae; ++ arg = (INamesArg* )aarg; ++ + int r = (*(arg->func))(e->name, + e->name + e->name_len, + e->back_num, +@@ -883,9 +894,14 @@ onig_foreach_name(regex_t* reg, + } + + static int +-i_renumber_name(UChar* key ARG_UNUSED, NameEntry* e, GroupNumMap* map) ++i_renumber_name(st_data_t key ARG_UNUSED, st_data_t ae, st_data_t amap) + { + int i; ++ NameEntry* e; ++ GroupNumMap* map; ++ ++ e = (NameEntry* )ae; ++ map = (GroupNumMap* )amap; + + if (e->back_num > 1) { + for (i = 0; i < e->back_num; i++) { +@@ -1374,9 +1390,14 @@ static int CalloutNameIDCounter; + #ifdef USE_ST_LIBRARY + + static int +-i_free_callout_name_entry(st_callout_name_key* key, CalloutNameEntry* e, +- void* arg ARG_UNUSED) ++i_free_callout_name_entry(st_data_t akey, st_data_t ae, st_data_t arg ARG_UNUSED) + { ++ st_callout_name_key* key; ++ CalloutNameEntry* e; ++ ++ key = (st_callout_name_key* )akey; ++ e = (CalloutNameEntry* )ae; ++ + if (IS_NOT_NULL(e)) { + xfree(e->name); + } +@@ -1870,10 +1891,14 @@ typedef intptr_t CalloutTagVal; + #define CALLOUT_TAG_LIST_FLAG_TAG_EXIST (1<<0) + + static int +-i_callout_callout_list_set(UChar* key, CalloutTagVal e, void* arg) ++i_callout_callout_list_set(st_data_t key ARG_UNUSED, st_data_t ae, st_data_t arg) + { + int num; +- RegexExt* ext = (RegexExt* )arg; ++ CalloutTagVal e; ++ RegexExt* ext; ++ ++ e = (CalloutTagVal )ae; ++ ext = (RegexExt* )arg; + + num = (int )e - 1; + ext->callout_list[num].flag |= CALLOUT_TAG_LIST_FLAG_TAG_EXIST; +@@ -1926,8 +1951,11 @@ onig_callout_tag_is_exist_at_callout_num(regex_t* reg, int callout_num) + } + + static int +-i_free_callout_tag_entry(UChar* key, CalloutTagVal e, void* arg ARG_UNUSED) ++i_free_callout_tag_entry(st_data_t akey, st_data_t e ARG_UNUSED, st_data_t arg ARG_UNUSED) + { ++ UChar* key; ++ ++ key = (UChar* )akey; + xfree(key); + return ST_DELETE; + } +diff --git a/src/st.h b/src/st.h +index 5efee8bb..70798dc5 100644 +--- a/src/st.h ++++ b/src/st.h +@@ -34,13 +34,6 @@ enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE, ST_CHECK}; + #ifndef _ + # define _(args) args + #endif +-#ifndef ANYARGS +-# ifdef __cplusplus +-# define ANYARGS ... +-# else +-# define ANYARGS +-# endif +-#endif + + st_table *st_init_table _((struct st_hash_type *)); + st_table *st_init_table_with_size _((struct st_hash_type *, int)); +@@ -52,7 +45,7 @@ int st_delete _((st_table *, st_data_t *, st_data_t *)); + int st_delete_safe _((st_table *, st_data_t *, st_data_t *, st_data_t)); + int st_insert _((st_table *, st_data_t, st_data_t)); + int st_lookup _((st_table *, st_data_t, st_data_t *)); +-int st_foreach _((st_table *, int (*)(ANYARGS), st_data_t)); ++int st_foreach _((st_table *, int (*)(st_data_t, st_data_t, st_data_t), st_data_t)); + void st_add_direct _((st_table *, st_data_t, st_data_t)); + void st_free_table _((st_table *)); + void st_cleanup_safe _((st_table *, st_data_t)); + +From b803288174dcef9b56836aee1ee78a4f3256d8f6 Mon Sep 17 00:00:00 2001 +From: "K.Kosako" <kkosako0@gmail.com> +Date: Tue, 19 Nov 2024 00:01:17 +0900 +Subject: [PATCH] follow up previous fix + +--- + src/regparse.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/src/regparse.c b/src/regparse.c +index 9acdd6e2..1d00b82a 100644 +--- a/src/regparse.c ++++ b/src/regparse.c +@@ -758,10 +758,14 @@ typedef st_data_t HashDataType; /* 1.6 st.h doesn't define st_data_t type */ + + #ifdef ONIG_DEBUG + static int +-i_print_name_entry(UChar* key, NameEntry* e, void* arg) ++i_print_name_entry(st_data_t akey, st_data_t ae, st_data_t arg) + { + int i; +- FILE* fp = (FILE* )arg; ++ FILE* fp; ++ NameEntry* e; ++ ++ e = (NameEntry* )ae; ++ fp = (FILE* )arg; + + fprintf(fp, "%s: ", e->name); + if (e->back_num == 0) diff --git a/dev-libs/oniguruma/oniguruma-6.9.9-r1.ebuild b/dev-libs/oniguruma/oniguruma-6.9.9-r1.ebuild new file mode 100644 index 000000000000..97b563b60daf --- /dev/null +++ b/dev-libs/oniguruma/oniguruma-6.9.9-r1.ebuild @@ -0,0 +1,59 @@ +# Copyright 2003-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +inherit multilib-minimal + +if [[ "${PV}" == "9999" ]]; then + inherit autotools git-r3 + + EGIT_REPO_URI="https://github.com/kkos/oniguruma" +fi + +DESCRIPTION="Regular expression library for different character encodings" +HOMEPAGE="https://github.com/kkos/oniguruma" +if [[ "${PV}" == "9999" ]]; then + SRC_URI="" +else + SRC_URI="https://github.com/kkos/${PN}/releases/download/v${PV}/onig-${PV}.tar.gz" +fi + +LICENSE="BSD-2" +SLOT="0/5" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" +IUSE="crnl-as-line-terminator static-libs" + +BDEPEND="" +DEPEND="" +RDEPEND="" + +if [[ "${PV}" != "9999" ]]; then + S="${WORKDIR}/onig-${PV}" +fi + +DOCS=(AUTHORS HISTORY README{,_japanese} doc/{API,CALLOUTS.API,CALLOUTS.BUILTIN,FAQ,RE}{,.ja} doc/{SYNTAX.md,UNICODE_PROPERTIES}) + +PATCHES=( + "${FILESDIR}"/${P}-c23.patch +) + +src_prepare() { + default + + if [[ "${PV}" == "9999" ]]; then + eautoreconf + fi +} + +multilib_src_configure() { + ECONF_SOURCE="${S}" econf \ + --enable-posix-api \ + $(use_enable crnl-as-line-terminator) \ + $(use_enable static-libs static) +} + +multilib_src_install_all() { + einstalldocs + find "${ED}" -name "*.la" -delete || die +} |