Source: libaudio-scan-perl
Version: 1.01-2
Severity: important
Tags: ftbfs forky sid patch upstream
Forwarded: https://rt.cpan.org/Public/Bug/Display.html?id=167903
User: [email protected]
Usertags: perl-5.42-transition

This package fails to build with Perl 5.42 (currently in experimental.)

  
https://perl.debian.net/rebuild-logs/perl-5.42/libaudio-scan-perl_1.01-2/libaudio-scan-perl_1.01-2+b5_amd64-2025-08-20T07:17:49Z.build

   "/usr/bin/perl" "/usr/share/perl/5.42/ExtUtils/xsubpp"  -typemap 
'/usr/share/perl/5.42/ExtUtils/typemap'  Scan.xs > Scan.xsc
   cp lib/Audio/Scan.pm blib/lib/Audio/Scan.pm
   "/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- Scan.bs 
blib/arch/auto/Audio/Scan/Scan.bs 644
   Unparseable XSUB parameter: 'char *' in Scan.xs, line 217
   Unparseable XSUB parameter: 'char *' in Scan.xs, line 269
   Unparseable XSUB parameter: 'char *' in Scan.xs, line 285
   Unparseable XSUB parameter: 'char *' in Scan.xs, line 309
   Unparseable XSUB parameter: 'char *' in Scan.xs, line 325
   Unparseable XSUB parameter: 'char *' in Scan.xs, line 363
   Please specify prototyping behavior for Scan.xs (see perlxs manual)
   make[1]: *** [Makefile:363: Scan.c] Error 1

This is because of changes in ExtUtils-ParseXS, which
now properly detects invalid XS syntax in this module. See
https://rt.cpan.org/Public/Bug/Display.html?id=162293 for a similar issue
in Crypt-SMIME. The attached patch adopts the technique suggested there
by Dave Mitchell: give the ignored first parameter a name but no type.
This works for on both Perl 5.40 and 5.42.

If you want to test changes against Perl 5.42 in experimental and run
into uninstallability problems, there is a test repository of rebuilt
Debian sid packages for amd64 available at <https://perl.debian.net/>.

Thanks for your work on Debian,
-- 
Niko Tyni   [email protected]
>From ced0f4272dc8f66ae6efa2e84246c00b65409c12 Mon Sep 17 00:00:00 2001
From: Niko Tyni <[email protected]>
Date: Sun, 24 Aug 2025 17:10:44 +0100
Subject: [PATCH] Fix invalid XS syntax that breaks the build with Perl 5.42

Older versions of ExtUtils::ParseXS used to silently ignore parameter
declarations that it could not parse. Newer ones (starting around Perl
5.42) issue a syntax error ("Unparseable XSUB parameter") instead.

See https://rt.cpan.org/Public/Bug/Display.html?id=162293 for a similar
issue in another module (Crypt-SMIME), where Dave Mitchell recommends
giving the ignored parameter a name but no type.
---
 Scan.xs | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/Scan.xs b/Scan.xs
index 96e4f19..b6bfd55 100644
--- a/Scan.xs
+++ b/Scan.xs
@@ -214,7 +214,7 @@ _generate_hash(const char *file)
 MODULE = Audio::Scan		PACKAGE = Audio::Scan
 
 HV *
-_scan( char *, char *suffix, PerlIO *infile, SV *path, int filter, int md5_size, int md5_offset )
+_scan( class, char *suffix, PerlIO *infile, SV *path, int filter, int md5_size, int md5_offset )
 CODE:
 {
   taghandler *hdl;
@@ -266,7 +266,7 @@ OUTPUT:
   RETVAL
   
 int
-_find_frame( char *, char *suffix, PerlIO *infile, SV *path, int offset )
+_find_frame( class, char *suffix, PerlIO *infile, SV *path, int offset )
 CODE:
 {
   taghandler *hdl;
@@ -282,7 +282,7 @@ OUTPUT:
   RETVAL
 
 HV *
-_find_frame_return_info( char *, char *suffix, PerlIO *infile, SV *path, int offset )
+_find_frame_return_info( class, char *suffix, PerlIO *infile, SV *path, int offset )
 CODE:
 {
   taghandler *hdl = _get_taghandler(suffix);
@@ -306,7 +306,7 @@ OUTPUT:
   RETVAL
 
 int
-is_supported(char *, SV *path)
+is_supported(class, SV *path)
 CODE:
 {
   char *suffix = strrchr( SvPVX(path), '.' );
@@ -322,7 +322,7 @@ OUTPUT:
   RETVAL
 
 SV *
-type_for(char *, SV *suffix)
+type_for(class, SV *suffix)
 CODE:
 {
   taghandler *hdl = NULL;
@@ -360,7 +360,7 @@ OUTPUT:
   RETVAL
 
 AV *
-extensions_for(char *, SV *type)
+extensions_for(class, SV *type)
 CODE:
 {
   int i, j;
-- 
2.49.0

Reply via email to