From 13d4487382f6192f54f744cccc65d3962d939890 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Wed, 5 Nov 2014 13:14:40 +0100 Subject: [PATCH] Import --- .gitignore | 1 + ...al-csnappy-library-in-Sereal-Decoder.patch | 81 ++++++++++++++++ ...rnal-miniz-library-in-Sereal-Decoder.patch | 79 +++++++++++++++ perl-Sereal-Decoder.spec | 97 +++++++++++++++++++ sources | 1 + 5 files changed, 259 insertions(+) create mode 100644 Sereal-3.002_001-Prefer-external-csnappy-library-in-Sereal-Decoder.patch create mode 100644 Sereal-3.002_001-Prefer-external-miniz-library-in-Sereal-Decoder.patch create mode 100644 perl-Sereal-Decoder.spec diff --git a/.gitignore b/.gitignore index e69de29..97c3aee 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +/Sereal-Decoder-3.002.tar.gz diff --git a/Sereal-3.002_001-Prefer-external-csnappy-library-in-Sereal-Decoder.patch b/Sereal-3.002_001-Prefer-external-csnappy-library-in-Sereal-Decoder.patch new file mode 100644 index 0000000..8359a0a --- /dev/null +++ b/Sereal-3.002_001-Prefer-external-csnappy-library-in-Sereal-Decoder.patch @@ -0,0 +1,81 @@ +From 3bdd905ddf3c6c9feabbf88901bf4f655924cb61 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +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. + + + +Signed-off-by: Petr Písař +--- + 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 , Yves Orton ', +- 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 ++#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 + diff --git a/Sereal-3.002_001-Prefer-external-miniz-library-in-Sereal-Decoder.patch b/Sereal-3.002_001-Prefer-external-miniz-library-in-Sereal-Decoder.patch new file mode 100644 index 0000000..19dba68 --- /dev/null +++ b/Sereal-3.002_001-Prefer-external-miniz-library-in-Sereal-Decoder.patch @@ -0,0 +1,79 @@ +From 1a5184d4e21391a5ac8ea28fa84a7ba7689a33dd Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +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ř +--- + 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 ++#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 + diff --git a/perl-Sereal-Decoder.spec b/perl-Sereal-Decoder.spec new file mode 100644 index 0000000..f72aac2 --- /dev/null +++ b/perl-Sereal-Decoder.spec @@ -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, +Patch0: Sereal-3.002_001-Prefer-external-csnappy-library-in-Sereal-Decoder.patch +# Use external miniz library, +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 3.002-1 +- Specfile autogenerated by cpanspec 1.78. diff --git a/sources b/sources index e69de29..ccc9bc5 100644 --- a/sources +++ b/sources @@ -0,0 +1 @@ +c26033b258dc3ee2e4e485f7293ccb63 Sereal-Decoder-3.002.tar.gz