From 1885e1b53c79a6c7700be2ad3ea6be4841bc2253 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Wed, 5 Dec 2018 10:06:37 +0100 Subject: [PATCH] Fix generating Perl prototypes for XS functions with OUTLIST parameters --- ...t-include-OUTLIST-parameters-in-the-.patch | 66 +++++++++++++++++++ perl-ExtUtils-ParseXS.spec | 10 ++- 2 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 perl-5.29.5-perl-133654-don-t-include-OUTLIST-parameters-in-the-.patch diff --git a/perl-5.29.5-perl-133654-don-t-include-OUTLIST-parameters-in-the-.patch b/perl-5.29.5-perl-133654-don-t-include-OUTLIST-parameters-in-the-.patch new file mode 100644 index 0000000..9638f9e --- /dev/null +++ b/perl-5.29.5-perl-133654-don-t-include-OUTLIST-parameters-in-the-.patch @@ -0,0 +1,66 @@ +From 028027e3fb6bba4f720b334e63e26f97a49cf6be Mon Sep 17 00:00:00 2001 +From: Tony Cook +Date: Wed, 5 Dec 2018 15:22:52 +1100 +Subject: [PATCH] (perl #133654) don't include OUTLIST parameters in the + prototype +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The generated prototype (with PROTOTYPES: ENABLE) would include +OUTLIST parameters, but these aren't arguments to the perl function. + +Signed-off-by: Petr Písař +--- + dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm | 2 +- + dist/ExtUtils-ParseXS/t/002-more.t | 7 +++++-- + 2 files changed, 6 insertions(+), 3 deletions(-) + +diff --git a/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm b/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm +index e1f0940745..94ea5f6fef 100644 +--- a/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm ++++ b/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm +@@ -467,7 +467,7 @@ EOM + $self->{defaults}->{$args[$i]} = $2; + $self->{defaults}->{$args[$i]} =~ s/"/\\"/g; + } +- $self->{proto_arg}->[$i+1] = '$'; ++ $self->{proto_arg}->[$i+1] = '$' unless $only_C_inlist_ref->{$args[$i]}; + } + my $min_args = $num_args - $extra_args; + $report_args =~ s/"/\\"/g; +diff --git a/dist/ExtUtils-ParseXS/t/002-more.t b/dist/ExtUtils-ParseXS/t/002-more.t +index 4aaa3ab081..e98229095c 100644 +--- a/dist/ExtUtils-ParseXS/t/002-more.t ++++ b/dist/ExtUtils-ParseXS/t/002-more.t +@@ -9,7 +9,7 @@ use ExtUtils::CBuilder; + use attributes; + use overload; + +-plan tests => 29; ++plan tests => 30; + + my ($source_file, $obj_file, $lib_file); + +@@ -48,7 +48,7 @@ SKIP: { + } + + SKIP: { +- skip "no dynamic loading", 25 ++ skip "no dynamic loading", 26 + if !$b->have_compiler || !$Config{usedl}; + my $module = 'XSMore'; + $lib_file = $b->link( objects => $obj_file, module_name => $module ); +@@ -92,6 +92,9 @@ SKIP: { + + is_deeply [XSMore::outlist()], [ord('a'), ord('b')], 'the OUTLIST keyword'; + ++ # eval so compile-time sees any prototype ++ is_deeply [ eval 'XSMore::outlist()' ], [ord('a'), ord('b')], 'OUTLIST prototypes'; ++ + is XSMore::len("foo"), 3, 'the length keyword'; + + is XSMore::sum(5, 9), 14, 'the INCLUDE_COMMAND directive'; +-- +2.17.2 + diff --git a/perl-ExtUtils-ParseXS.spec b/perl-ExtUtils-ParseXS.spec index c8beab6..6772407 100644 --- a/perl-ExtUtils-ParseXS.spec +++ b/perl-ExtUtils-ParseXS.spec @@ -3,13 +3,16 @@ Name: perl-ExtUtils-ParseXS # Epoch to compete with perl.spec Epoch: 1 Version: 3.39 -Release: 417%{?dist} +Release: 418%{?dist} Summary: Module and a script for converting Perl XS code into C code License: GPL+ or Artistic URL: https://metacpan.org/release/ExtUtils-ParseXS Source0: https://cpan.metacpan.org/authors/id/S/SM/SMUELLER/ExtUtils-ParseXS-%{base_version}.tar.gz # Unbundled from perl 5.28.0-RC1 Patch0: ExtUtils-ParseXS-3.35-Upgrade-to-3.39.patch +# Fix generating Perl prototypes for XS functions with OUTLIST parameters, +# RT#133654, in perl after 5.29.5 +Patch1: perl-5.29.5-perl-133654-don-t-include-OUTLIST-parameters-in-the-.patch BuildArch: noarch BuildRequires: coreutils BuildRequires: make @@ -52,6 +55,7 @@ the glue necessary to let Perl access those functions. %prep %setup -q -n ExtUtils-ParseXS-%{base_version} %patch0 -p1 +%patch1 -p3 %build perl Makefile.PL INSTALLDIRS=vendor NO_PACKLIST=1 @@ -75,6 +79,10 @@ make test %{_mandir}/man3/* %changelog +* Wed Dec 05 2018 Petr Pisar - 1:3.39-418 +- Fix generating Perl prototypes for XS functions with OUTLIST parameters + (RT#133654) + * Fri Jul 13 2018 Fedora Release Engineering - 1:3.39-417 - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild