Skip to content

ExtUtils::ParseXS after 5.52 prevents some XS modules to build #24110

@book

Description

@book

Recent versions of ExtUtils::ParseXS prevent older CPAN distributions to build.

Thrift-XS

See https://fast2-matrix.cpantesters.org/?dist=Thrift-XS+1.04 for reports.

The recent UNKNOWN all fail with Unparseable XSUB parameter.

A DarkPAN module

At work, we have a module with the following xsp/typemap.xspt file (and several .xsp files (I think it's C++):

// Enable default XS typemaps
%loadplugin{feature::default_xs_typemap};

%typemap{double*}{simple};
%typemap{uint8_t}{simple};
%typemap{uint8_t*}{simple};
%typemap{int32_t}{simple};
%typemap{uint32_t}{simple};
%typemap{int64_t}{simple};
%typemap{uint64_t}{simple};
%typemap{SV*}{simple};
%typemap{AV*}{simple};
%typemap{HV*}{simple};
%typemap{std::string}{simple};
%typemap{std::unordered_set<std::string>&}{simple};
%typemap{std::vector<double>&}{simple};
%typemap{std::vector<uint64_t>&}{simple};
%typemap{ObjectType}{simple};

I've tried to build the distribution, with the same results for Perl 5.36.0 and 5.42.0,
with all version of ExtUtils-ParseXS between 3.51 and 3.61 (included):

  • the dist built correctly with 3.51 and 3.52
  • the dist failed to build with 5.53, warning about $} being undefined (which was fixed in 1744f58)
  • the dist failed to build with all versions from 3.54 up to 3.61, and the following diagnostics stood out:
Could not find a typemap for C type 'std::unordered_set<std::string>&'.
Could not find a typemap for C type 'std::vector<double>&'.
Could not find a typemap for C type 'std::vector<uint64_t>&'.

Metadata

Metadata

Assignees

No one assigned

    Labels

    BBCBlead Breaks CPAN - changes in blead broke a cpan module(s)

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions