On Wed, Jan 22, 2025 at 4:43 PM Chuck Anderson <[email protected]> wrote:
> It looks like most (all?) perl XS packages ('C' implementations of Perl
> functions) are FTBFS with GCC 15. I'm trying to fix perl-Term-ReadLine-Gnu
> to be C23-compatible. The workaround is to add -std=gnu17 to the CFLAGS
> which can be done via OPTIMIZE for MakeMaker builds like this:
>
> /usr/bin/perl Makefile.PL INSTALLDIRS=vendor OPTIMIZE="$RPM_OPT_FLAGS
> -std=gnu17" NO_PACKLIST=1 NO_PERLLOCAL=1
>
> but I don't really know how to fix these the "right" way:
The issue is that "typedef int XFunction ();" used to say in C17 that
an XFunction returned an int and took an undeclared number and type of
parameters. With C23, that says that an XFunction takes zero
parameters; i.e., it is equivalent to "typedef int XFunction (void);".
Try this patch:
--- Term-ReadLine-Gnu-1.46/Gnu.xs.orig 2023-07-01 03:13:00.000000000 -0600
+++ Term-ReadLine-Gnu-1.46/Gnu.xs 2025-01-22 16:55:10.392537797 -0700
@@ -613,16 +613,31 @@ enum { STARTUP_HOOK, EVENT_HOOK, GETC_FN
SIG_EVT, INP_AVL, FN_STAT, TIMEOUT_EVENT,
};
-typedef int XFunction ();
+typedef int XFunction (...);
static struct fn_vars {
XFunction **rlfuncp; /* GNU Readline Library variable */
XFunction *defaultfn; /* default function */
XFunction *wrapper; /* wrapper function */
SV *callback; /* Perl function */
} fn_tbl[] = {
- { &rl_startup_hook, NULL, startup_hook_wrapper, NULL }, /* 0 */
- { &rl_event_hook, NULL, event_hook_wrapper, NULL }, /* 1 */
- { &rl_getc_function, rl_getc, getc_function_wrapper, NULL }, /* 2 */
+ {
+ (XFunction **)&rl_startup_hook, /* 0 */
+ NULL,
+ (XFunction *)startup_hook_wrapper,
+ NULL
+ },
+ {
+ (XFunction **)&rl_event_hook, /* 1 */
+ NULL,
+ (XFunction *)event_hook_wrapper,
+ NULL
+ },
+ {
+ (XFunction **)&rl_getc_function, /* 2 */
+ (XFunction *)rl_getc,
+ (XFunction *)getc_function_wrapper,
+ NULL
+ },
{
(XFunction **)&rl_redisplay_function, /* 3 */
(XFunction *)rl_redisplay,
@@ -677,7 +692,12 @@ static struct fn_vars {
(XFunction *)history_inhibit_expansion_function_wrapper,
NULL
},
- { &rl_pre_input_hook, NULL, pre_input_hook_wrapper, NULL }, /* 12 */
+ {
+ (XFunction **)&rl_pre_input_hook, /* 12 */
+ NULL,
+ (XFunction *)pre_input_hook_wrapper,
+ NULL
+ },
{
(XFunction **)&rl_completion_display_matches_hook, /* 13 */
NULL,
--
Jerry James
http://www.jamezone.org/
--
_______________________________________________
devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]
Fedora Code of Conduct:
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives:
https://lists.fedoraproject.org/archives/list/[email protected]
Do not reply to spam, report it:
https://pagure.io/fedora-infrastructure/new_issue