parent
007d3a25a9
commit
13d4487382
@ -0,0 +1 @@
|
||||
/Sereal-Decoder-3.002.tar.gz
|
@ -0,0 +1,81 @@
|
||||
From 3bdd905ddf3c6c9feabbf88901bf4f655924cb61 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
|
||||
Date: Thu, 16 Oct 2014 13:12:07 +0200
|
||||
Subject: [PATCH 1/2] Prefer external csnappy library in Sereal::Decoder
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This patch checks for presence of csnappy library and header file and
|
||||
if they are available, they will be used to link to the
|
||||
Sereal::Decoder XS module. Otherwise the bundled csnappy code will be
|
||||
used.
|
||||
|
||||
<https://github.com/Sereal/Sereal/issues/72>
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
Perl/Decoder/Makefile.PL | 15 ++++++++++++++-
|
||||
Perl/Decoder/srl_decoder.c | 5 +++++
|
||||
2 files changed, 19 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Perl/Decoder/Makefile.PL b/Perl/Decoder/Makefile.PL
|
||||
index 71cd40d..864b89b 100644
|
||||
--- a/Perl/Decoder/Makefile.PL
|
||||
+++ b/Perl/Decoder/Makefile.PL
|
||||
@@ -25,6 +25,7 @@ our $OPTIMIZE;
|
||||
# #define MINIZ_LITTLE_ENDIAN 1
|
||||
# #define MINIZ_HAS_64BIT_REGISTERS 1
|
||||
|
||||
+my $libs = '';
|
||||
my $defines = join " ", map "-D$_", grep exists $ENV{$_}, qw(NOINLINE DEBUG MEMDEBUG NDEBUG);
|
||||
if ($Config{gccversion}) {
|
||||
$OPTIMIZE = '-O3 -Wall -W';
|
||||
@@ -52,6 +53,18 @@ if ($Config{osname} eq 'hpux' && not $Config{gccversion}) {
|
||||
$defines .= " -Dinline= ";
|
||||
}
|
||||
|
||||
+# Prefer external csnappy library over the bundled one.
|
||||
+require Devel::CheckLib;
|
||||
+my $have_csnappy = Devel::CheckLib::check_lib(
|
||||
+ lib => 'csnappy',
|
||||
+ header => 'csnappy.h'
|
||||
+);
|
||||
+
|
||||
+if ($have_csnappy) {
|
||||
+ $libs .= ' -lcsnappy';
|
||||
+ $defines .= ' -DHAVE_CSNAPPY';
|
||||
+}
|
||||
+
|
||||
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
|
||||
# the contents of the Makefile that is written.
|
||||
WriteMakefile1(
|
||||
@@ -89,7 +102,7 @@ WriteMakefile1(
|
||||
LICENSE => 'perl',
|
||||
ABSTRACT_FROM => 'lib/Sereal/Decoder.pm',
|
||||
AUTHOR => 'Steffen Mueller <smueller@cpan.org>, Yves Orton <yves@cpan.org>',
|
||||
- LIBS => [''], # e.g., '-lm'
|
||||
+ LIBS => [$libs], # e.g., '-lm'
|
||||
DEFINE => $defines,
|
||||
INC => '-I.', # e.g., '-I. -I/usr/include/other'
|
||||
OPTIMIZE => $OPTIMIZE,
|
||||
diff --git a/Perl/Decoder/srl_decoder.c b/Perl/Decoder/srl_decoder.c
|
||||
index 890a25c..09b5e52 100644
|
||||
--- a/Perl/Decoder/srl_decoder.c
|
||||
+++ b/Perl/Decoder/srl_decoder.c
|
||||
@@ -51,7 +51,12 @@ extern "C" {
|
||||
#include "ptable.h"
|
||||
#include "srl_protocol.h"
|
||||
|
||||
+#if defined(HAVE_CSNAPPY)
|
||||
+#include <csnappy.h>
|
||||
+#else
|
||||
#include "snappy/csnappy_decompress.c"
|
||||
+#endif
|
||||
+
|
||||
#include "miniz.h"
|
||||
|
||||
/* 5.8.8 and earlier have a nasty bug in their handling of overloading:
|
||||
--
|
||||
1.9.3
|
||||
|
@ -0,0 +1,79 @@
|
||||
From 1a5184d4e21391a5ac8ea28fa84a7ba7689a33dd Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
|
||||
Date: Thu, 16 Oct 2014 13:16:53 +0200
|
||||
Subject: [PATCH 2/2] Prefer external miniz library in Sereal::Decoder
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This patch checks for presence of miniz library and header file and
|
||||
if they are available, they will be used to link to the
|
||||
Sereal::Decoder XS module. Otherwise the bundled miniz code will be
|
||||
used.
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
Perl/Decoder/Makefile.PL | 16 +++++++++++++++-
|
||||
Perl/Decoder/srl_decoder.c | 4 ++++
|
||||
2 files changed, 19 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Perl/Decoder/Makefile.PL b/Perl/Decoder/Makefile.PL
|
||||
index 864b89b..6750b3d 100644
|
||||
--- a/Perl/Decoder/Makefile.PL
|
||||
+++ b/Perl/Decoder/Makefile.PL
|
||||
@@ -26,6 +26,7 @@ our $OPTIMIZE;
|
||||
# #define MINIZ_HAS_64BIT_REGISTERS 1
|
||||
|
||||
my $libs = '';
|
||||
+my $objects = '$(BASEEXT)$(OBJ_EXT) srl_decoder$(OBJ_EXT)';
|
||||
my $defines = join " ", map "-D$_", grep exists $ENV{$_}, qw(NOINLINE DEBUG MEMDEBUG NDEBUG);
|
||||
if ($Config{gccversion}) {
|
||||
$OPTIMIZE = '-O3 -Wall -W';
|
||||
@@ -65,6 +66,19 @@ if ($have_csnappy) {
|
||||
$defines .= ' -DHAVE_CSNAPPY';
|
||||
}
|
||||
|
||||
+# Prefer external miniz library over the bundled one.
|
||||
+my $have_miniz = Devel::CheckLib::check_lib(
|
||||
+ lib => 'miniz',
|
||||
+ header => 'miniz.h'
|
||||
+);
|
||||
+
|
||||
+if ($have_miniz) {
|
||||
+ $libs .= ' -lminiz';
|
||||
+ $defines .= ' -DHAVE_MINIZ';
|
||||
+} else {
|
||||
+ $objects .= ' miniz$(OBJ_EXT)';
|
||||
+}
|
||||
+
|
||||
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
|
||||
# the contents of the Makefile that is written.
|
||||
WriteMakefile1(
|
||||
@@ -106,7 +120,7 @@ WriteMakefile1(
|
||||
DEFINE => $defines,
|
||||
INC => '-I.', # e.g., '-I. -I/usr/include/other'
|
||||
OPTIMIZE => $OPTIMIZE,
|
||||
- OBJECT => '$(O_FILES)',
|
||||
+ OBJECT => $objects,
|
||||
test => {
|
||||
TESTS => "t/*.t t/*/*/*.t"
|
||||
},
|
||||
diff --git a/Perl/Decoder/srl_decoder.c b/Perl/Decoder/srl_decoder.c
|
||||
index 09b5e52..f21b993 100644
|
||||
--- a/Perl/Decoder/srl_decoder.c
|
||||
+++ b/Perl/Decoder/srl_decoder.c
|
||||
@@ -57,7 +57,11 @@ extern "C" {
|
||||
#include "snappy/csnappy_decompress.c"
|
||||
#endif
|
||||
|
||||
+#if defined(HAVE_MINIZ)
|
||||
+#include <miniz.h>
|
||||
+#else
|
||||
#include "miniz.h"
|
||||
+#endif
|
||||
|
||||
/* 5.8.8 and earlier have a nasty bug in their handling of overloading:
|
||||
* The overload-flag is set on the referer of the blessed object instead of
|
||||
--
|
||||
1.9.3
|
||||
|
@ -0,0 +1,97 @@
|
||||
# Temporary until Sereal::Encoder is not packaged
|
||||
%global perl_bootstrap 1
|
||||
|
||||
Name: perl-Sereal-Decoder
|
||||
Version: 3.002
|
||||
Release: 1%{?dist}
|
||||
Summary: Perl deserialization for Sereal format
|
||||
# lib/Sereal/Decoder.pm: GPL+ or Artistic
|
||||
# miniz.c: Unlicense (unbundled)
|
||||
# snappy: BSD (unbundled)
|
||||
License: GPL+ or Artistic
|
||||
Group: Development/Libraries
|
||||
URL: http://search.cpan.org/dist/Sereal-Decoder/
|
||||
Source0: http://www.cpan.org/authors/id/Y/YV/YVES/Sereal-Decoder-%{version}.tar.gz
|
||||
# Use external csnappy library, <https://github.com/Sereal/Sereal/issues/72>
|
||||
Patch0: Sereal-3.002_001-Prefer-external-csnappy-library-in-Sereal-Decoder.patch
|
||||
# Use external miniz library, <https://github.com/Sereal/Sereal/issues/72>
|
||||
Patch1: Sereal-3.002_001-Prefer-external-miniz-library-in-Sereal-Decoder.patch
|
||||
BuildRequires: csnappy-devel
|
||||
BuildRequires: miniz-devel
|
||||
BuildRequires: perl
|
||||
BuildRequires: perl(Config)
|
||||
BuildRequires: perl(Devel::CheckLib)
|
||||
BuildRequires: perl(ExtUtils::Constant)
|
||||
BuildRequires: perl(ExtUtils::MakeMaker)
|
||||
BuildRequires: perl(File::Find)
|
||||
BuildRequires: perl(File::Path)
|
||||
BuildRequires: perl(File::Spec)
|
||||
BuildRequires: perl(strict)
|
||||
BuildRequires: perl(warnings)
|
||||
# Run-time:
|
||||
BuildRequires: perl(Carp)
|
||||
BuildRequires: perl(Exporter)
|
||||
BuildRequires: perl(XSLoader)
|
||||
# Tests:
|
||||
# Benchmark not used
|
||||
BuildRequires: perl(blib)
|
||||
BuildRequires: perl(constant)
|
||||
BuildRequires: perl(Data::Dumper)
|
||||
BuildRequires: perl(Devel::Peek)
|
||||
BuildRequires: perl(Encode)
|
||||
BuildRequires: perl(integer)
|
||||
BuildRequires: perl(lib)
|
||||
BuildRequires: perl(overload)
|
||||
BuildRequires: perl(Scalar::Util)
|
||||
%if !%{defined perl_bootstrap}
|
||||
BuildRequires: perl(Sereal::Encoder)
|
||||
%endif
|
||||
BuildRequires: perl(Storable)
|
||||
BuildRequires: perl(Test::LongString)
|
||||
BuildRequires: perl(Test::More) >= 0.88
|
||||
BuildRequires: perl(Test::Warn)
|
||||
BuildRequires: perl(threads)
|
||||
# Time::HiRes not used
|
||||
BuildRequires: perl(utf8)
|
||||
Requires: perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
|
||||
|
||||
%description
|
||||
This library implements a deserializer for an efficient, compact-output,
|
||||
and feature-rich binary protocol called Sereal.
|
||||
|
||||
%prep
|
||||
%setup -q -n Sereal-Decoder-%{version}
|
||||
%patch0 -p3
|
||||
%patch1 -p3
|
||||
# Remove bundled Perl modules
|
||||
rm -r ./inc/Devel
|
||||
sed -i -s '/^inc\/Devel/d' MANIFEST
|
||||
# Remove bundled csnappy
|
||||
rm -r ./snappy
|
||||
sed -i -s '/^snappy/d' MANIFEST
|
||||
# Remove bundled miniz
|
||||
rm miniz.*
|
||||
sed -i -s '/^miniz\./d' MANIFEST
|
||||
|
||||
%build
|
||||
perl Makefile.PL INSTALLDIRS=vendor OPTIMIZE="$RPM_OPT_FLAGS"
|
||||
make %{?_smp_mflags}
|
||||
|
||||
%install
|
||||
make pure_install DESTDIR=$RPM_BUILD_ROOT
|
||||
find $RPM_BUILD_ROOT -type f -name .packlist -exec rm -f {} \;
|
||||
find $RPM_BUILD_ROOT -type f -name '*.bs' -size 0 -exec rm -f {} \;
|
||||
%{_fixperms} $RPM_BUILD_ROOT/*
|
||||
|
||||
%check
|
||||
make test
|
||||
|
||||
%files
|
||||
%doc Changes
|
||||
%{perl_vendorarch}/auto/*
|
||||
%{perl_vendorarch}/Sereal*
|
||||
%{_mandir}/man3/*
|
||||
|
||||
%changelog
|
||||
* Fri Oct 10 2014 Petr Pisar <ppisar@redhat.com> 3.002-1
|
||||
- Specfile autogenerated by cpanspec 1.78.
|
Loading…
Reference in new issue