Source: libfreecontact-perl Version: 0.08-10 Severity: important Tags: ftbfs forky sid patch upstream 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/libfreecontact-perl_0.08-10/libfreecontact-perl_0.08-10+b1_amd64-2025-08-20T07:27:17Z.build dh_auto_build -a make -j2 make[1]: Entering directory '/build/libfreecontact-perl-WzTMqo/libfreecontact-perl-0.08' Running Mkbootstrap for FreeContact () chmod 644 "FreeContact.bs" "/usr/bin/perl" "/usr/share/perl/5.42/ExtUtils/xsubpp" -C++ -hiertype -noprototypes -typemap '/usr/share/perl/5.42/ExtUtils/typemap' -typemap '/build/libfreecontact-perl-WzTMqo/libfreecontact-perl-0.08/perlobject.map' -typemap '/build/libfreecontact-perl-WzTMqo/libfreecontact-perl-0.08/typemap' -typemap '/build/libfreecontact-perl-WzTMqo/libfreecontact-perl-0.08/typemap' FreeContact.xs > FreeContact.xsc cp lib/FreeContact.pm blib/lib/FreeContact.pm AutoSplitting blib/lib/FreeContact.pm (blib/lib/auto/FreeContact) "/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- FreeContact.bs blib/arch/auto/FreeContact/FreeContact.bs 644 Could not find a typemap for C type 'ali_t&'. The following C types are mapped by the current typemap: 'AV *', 'Boolean', 'CV *', 'FILE *', 'FileHandle', 'HV *', 'I16', 'I32', 'I8', 'IV', 'InOutStream', 'InputStream', 'NV', 'OutputStream', 'PerlIO *', 'Result', 'STRLEN', 'SV *', 'SVREF', 'SysRet', 'SysRetLong', 'Time_t *', 'U16', 'U32', 'U8', 'UV', 'ali_t', 'bool', 'bool_t', 'caddr_t', 'char', 'char *', 'char **', 'const char *', 'cont_res_t', 'double', 'double *', 'float', 'freq_vec_t', 'freq_vec_t *', 'int', 'long', 'predictor *', 'short', 'size_t', 'ssize_t', 'time_res_t *', 'time_t', 'unsigned', 'unsigned char', 'unsigned char *', 'unsigned int', 'unsigned long', 'unsigned long *', 'unsigned short', 'void *', 'wchar_t', 'wchar_t *' in /usr/bin/perl -MExtUtils::XSpp::Cmd -e xspp -- --typemap=typemap.xsp FreeContact.xsp, line 71 [...] make[1]: *** [Makefile:367: FreeContact.c] Error 1 make[1]: Leaving directory '/build/libfreecontact-perl-WzTMqo/libfreecontact-perl-0.08' dh_auto_build: error: make -j2 returned exit code 2 There have been significant changes in the ExtUtils::ParseXS module since Perl 5.40, making it more robust against invalid syntax and the like. It looks like this module has been relying on ExtUtils::ParseXS ignoring invalid XS syntax with the C++ references. While there's apparently some support for those in ExtUtils::XSpp, the problematic parts are passed straight through to plain XS with the %{ .. %} markers. A fix/workaround is to just remove the ampersands from the XS code. That's how ExtUtils::ParseXS has been parsing them until now anyway. The attached patch does this. I verified that the generated C code stays identical on Perl 5.40 with this, and has no significant differences on 5.42 either. I'm not fully certain this is correct, but at least it's not any worse than it has been until now. And the FreeContact module seems to be dead upstream, at least its home page and FTP site are gone. 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 8b7527df13a6b1f5ad6a719f2e545ef9aa554aae Mon Sep 17 00:00:00 2001 From: Niko Tyni <[email protected]> Date: Sat, 30 Aug 2025 19:14:24 +0100 Subject: [PATCH] Remove C++ reference markers from XS code These code blocks are not handled as XS++ but passed to XS as-is due to the %{ ... %} markers. The code was always invalid XS code, and ExtUtils::ParseXS has recently become stricter about parsing it. Just drop the ampersands, at least as a workaround. This is how the code was parsed earlier anyway. --- FreeContact.xsp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/FreeContact.xsp b/FreeContact.xsp index f002df1..c9e2d85 100644 --- a/FreeContact.xsp +++ b/FreeContact.xsp @@ -39,7 +39,7 @@ get_ps_psicov_sd() %{ void -predictor::_get_seq_weights( freq_vec_t* __aliw, double* __wtot, ali_t& __ali, double __clustpc, bool __veczw = true, int __num_threads = 0 ) +predictor::_get_seq_weights( freq_vec_t* __aliw, double* __wtot, ali_t __ali, double __clustpc, bool __veczw = true, int __num_threads = 0 ) PREINIT: freq_vec_t aliw; double wtot = 0; @@ -71,7 +71,7 @@ predictor::_get_seq_weights( freq_vec_t* __aliw, double* __wtot, ali_t& __ali, d %{ cont_res_t predictor::_run( __ali, __cp, __density, __gapth, __mincontsep, __pseudocnt, __pscnt_weight, __estimate_ivcov, __shrink_lambda, __cov20, __apply_gapth, __rho, __veczw = true, __num_threads = 0, __icme_timeout = 1800, __timing = NULL ) - ali_t& __ali + ali_t __ali double __cp double __density double __gapth @@ -114,7 +114,7 @@ predictor::_run( __ali, __cp, __density, __gapth, __mincontsep, __pseudocnt, __p %{ cont_res_t -predictor::_run_with_seq_weights(ali_t& __ali, freq_vec_t &__aliw, double __wtot, double __density, double __gapth, U16 __mincontsep, double __pseudocnt, double __pscnt_weight, bool __estimate_ivcov, double __shrink_lambda, bool __cov20, bool __apply_gapth, double __rho, int __num_threads = 0, time_t __icme_timeout = 1800, time_res_t *__timing = NULL) +predictor::_run_with_seq_weights(ali_t __ali, freq_vec_t __aliw, double __wtot, double __density, double __gapth, U16 __mincontsep, double __pseudocnt, double __pscnt_weight, bool __estimate_ivcov, double __shrink_lambda, bool __cov20, bool __apply_gapth, double __rho, int __num_threads = 0, time_t __icme_timeout = 1800, time_res_t *__timing = NULL) PREINIT: time_res_t timing; CODE: -- 2.49.0

