Browse Source

perl-ExtUtils-ParseXS package update

Signed-off-by: basebuilder_pel7x64builder0 <basebuilder@powerel.org>
master
basebuilder_pel7x64builder0 6 years ago
parent
commit
3584dc8c18
  1. 110
      SOURCES/ExtUtils-ParseXS-3.18-EU-ParseXS-Attempt-to-canonicalize-C-types-in-tidy_t.patch
  2. 83
      SPECS/perl-ExtUtils-ParseXS.spec

110
SOURCES/ExtUtils-ParseXS-3.18-EU-ParseXS-Attempt-to-canonicalize-C-types-in-tidy_t.patch

@ -0,0 +1,110 @@
From 28c286718f7d2c46b9ff310bb4178b7f2258bb25 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Wed, 20 Nov 2013 12:49:57 +0100
Subject: [PATCH] EU::ParseXS: Attempt to canonicalize C++ types in tidy_type
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This is a 3.18 port of perl commit:

Author: Steffen Mueller <smueller@cpan.org>
Date: Wed May 22 21:49:06 2013 +0200

EU::ParseXS: Attempt to canonicalize C++ types in tidy_type

Includes moving tidy_type to ExtUtils::Typemaps where it seems to
belong. It's a pretty poor canonicalizer, but better than nothing!

<https://rt.cpan.org/Public/Bug/Display.html?id=86367>
<https://bugzilla.redhat.com/show_bug.cgi?id=1032181>

Signed-off-by: Petr Písař <ppisar@redhat.com>
---
lib/ExtUtils/ParseXS/Utilities.pm | 7 +++++++
lib/ExtUtils/Typemaps.pm | 7 +++++++
t/103-tidy_type.t | 27 +++++++++++++++------------
3 files changed, 29 insertions(+), 12 deletions(-)

diff --git a/lib/ExtUtils/ParseXS/Utilities.pm b/lib/ExtUtils/ParseXS/Utilities.pm
index d0089f8..f64af35 100644
--- a/lib/ExtUtils/ParseXS/Utilities.pm
+++ b/lib/ExtUtils/ParseXS/Utilities.pm
@@ -201,6 +201,13 @@ String cleaned up.
sub tidy_type {
local ($_) = @_;
+ # for templated C++ types, do some bit of flawed canonicalization
+ # wrt. templates at least
+ if (/[<>]/) {
+ s/\s*([<>])\s*/$1/g;
+ s/>>/> >/g;
+ }
+
# rationalise any '*' by joining them into bunches and removing whitespace
s#\s*(\*+)\s*#$1#g;
s#(\*+)# $1 #g;
diff --git a/lib/ExtUtils/Typemaps.pm b/lib/ExtUtils/Typemaps.pm
index 2768ef0..fc4e413 100644
--- a/lib/ExtUtils/Typemaps.pm
+++ b/lib/ExtUtils/Typemaps.pm
@@ -973,6 +973,13 @@ sub _parse {
sub _tidy_type {
local $_ = shift;
+ # for templated C++ types, do some bit of flawed canonicalization
+ # wrt. templates at least
+ if (/[<>]/) {
+ s/\s*([<>])\s*/$1/g;
+ s/>>/> >/g;
+ }
+
# rationalise any '*' by joining them into bunches and removing whitespace
s#\s*(\*+)\s*#$1#g;
s#(\*+)# $1 #g ;
diff --git a/t/103-tidy_type.t b/t/103-tidy_type.t
index a043383..fb44aa9 100644
--- a/t/103-tidy_type.t
+++ b/t/103-tidy_type.t
@@ -1,23 +1,26 @@
#!/usr/bin/perl
use strict;
use warnings;
-use Test::More tests => 3;
+use Test::More;
use lib qw( lib );
use ExtUtils::ParseXS::Utilities qw(
tidy_type
);
-my $input;
-
-$input = ' * ** ';
-is( tidy_type($input), '***',
- "Got expected value for '$input'" );
+my @tests = (
+ [' * ** ', '***'],
+ [' * ** ', '***'],
+ [' * ** foobar * ', '*** foobar *'],
+ ['unsigned int', 'unsigned int'],
+ ['std::vector<int>', 'std::vector<int>'],
+ ['std::vector< unsigned int >', 'std::vector<unsigned int>'],
+ ['std::vector< vector<unsigned int> >', 'std::vector<vector<unsigned int> >'],
+ ['std::map< map <unsigned int, int>, int>', 'std::map<map<unsigned int, int>, int>'],
+);
-$input = ' * ** ';
-is( tidy_type($input), '***',
- "Got expected value for '$input'" );
+plan tests => scalar(@tests);
-$input = ' * ** foobar * ';
-is( tidy_type($input), '*** foobar *',
- "Got expected value for '$input'" );
+foreach my $test (@tests) {
+ is(tidy_type($test->[0]), $test->[1], "Tidying '$test->[0]'");
+}
--
1.8.3.1

83
SPECS/perl-ExtUtils-ParseXS.spec

@ -0,0 +1,83 @@
Name: perl-ExtUtils-ParseXS
# Epoch to compete with perl.spec
Epoch: 1
Version: 3.18
Release: 3%{?dist}
Summary: Module and a script for converting Perl XS code into C code
License: GPL+ or Artistic
Group: Development/Libraries
URL: http://search.cpan.org/dist/ExtUtils-ParseXS/
Source0: http://www.cpan.org/authors/id/S/SM/SMUELLER/ExtUtils-ParseXS-%{version}.tar.gz
# Improve compatibility with C++, CPAN RT#86367, bug #1078438,
# in upstream 3.18_03
Patch0: ExtUtils-ParseXS-3.18-EU-ParseXS-Attempt-to-canonicalize-C-types-in-tidy_t.patch
BuildArch: noarch
BuildRequires: perl
BuildRequires: perl(Config)
BuildRequires: perl(ExtUtils::MakeMaker) >= 6.46
BuildRequires: perl(File::Spec)
BuildRequires: perl(strict)
BuildRequires: perl(warnings)
# Run-time:
BuildRequires: perl(Cwd)
BuildRequires: perl(Exporter)
# ExtUtils::XSSymSet not needed
BuildRequires: perl(File::Basename)
# Getopt::Long not tested
BuildRequires: perl(lib)
BuildRequires: perl(re)
BuildRequires: perl(Symbol)
# Tests:
BuildRequires: perl-devel
BuildRequires: perl(attributes)
BuildRequires: perl(Carp)
BuildRequires: perl(DynaLoader)
BuildRequires: perl(ExtUtils::CBuilder)
BuildRequires: perl(File::Temp)
BuildRequires: perl(overload)
BuildRequires: perl(Test::More) >= 0.47
Requires: perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
Requires: perl-devel
# perl-ExtUtils-Typemaps has been merged into perl-ExtUtils-ParseXS, bug #891952
Obsoletes: perl-ExtUtils-Typemaps

%description
ExtUtils::ParseXS will compile XS code into C code by embedding the
constructs necessary to let C functions manipulate Perl values and creates
the glue necessary to let Perl access those functions.

%prep
%setup -q -n ExtUtils-ParseXS-%{version}
%patch0 -p1

%build
perl Makefile.PL INSTALLDIRS=vendor
make %{?_smp_mflags}

%install
make pure_install DESTDIR=$RPM_BUILD_ROOT
find $RPM_BUILD_ROOT -type f -name .packlist -exec rm -f {} \;
%{_fixperms} $RPM_BUILD_ROOT/*
# Do not install xsubpp twice, RT#117289
rm $RPM_BUILD_ROOT%{perl_vendorlib}/ExtUtils/xsubpp
ln -s ../../../../bin/xsubpp $RPM_BUILD_ROOT%{perl_vendorlib}/ExtUtils/

%check
make test

%files
%doc Changes README
%{_bindir}/*
%{perl_vendorlib}/*
%{_mandir}/man1/*
%{_mandir}/man3/*

%changelog
* Thu Mar 20 2014 Petr Pisar <ppisar@redhat.com> - 1:3.18-3
- Improve compatibility with C++ (bug #1078438)

* Fri Dec 27 2013 Daniel Mach <dmach@redhat.com> - 1:3.18-2
- Mass rebuild 2013-12-27

* Fri Mar 22 2013 Petr Pisar <ppisar@redhat.com> 1:3.18-1
- Specfile autogenerated by cpanspec 1.78.
Loading…
Cancel
Save