[perl-Sereal-Encoder] Import

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



commit d8a37ec1aaba9dd933c67ccbc1614d5a948ce63b
Author: Petr Písař <ppisar@xxxxxxxxxx>
Date:   Thu Oct 30 07:42:57 2014 +0100

    Import

 .gitignore                                         |    1 +
 ...xternal-csnappy-library-in-Sereal-Encoder.patch |   93 ++++++++++++++++++
 ...-external-miniz-library-in-Sereal-Encoder.patch |   81 ++++++++++++++++
 perl-Sereal-Encoder.spec                           |  102 ++++++++++++++++++++
 sources                                            |    1 +
 5 files changed, 278 insertions(+), 0 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index e69de29..b678aa8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/Sereal-Encoder-3.002.tar.gz
diff --git a/Sereal-3.002_001-Prefer-external-csnappy-library-in-Sereal-Encoder.patch b/Sereal-3.002_001-Prefer-external-csnappy-library-in-Sereal-Encoder.patch
new file mode 100644
index 0000000..eb250f1
--- /dev/null
+++ b/Sereal-3.002_001-Prefer-external-csnappy-library-in-Sereal-Encoder.patch
@@ -0,0 +1,93 @@
+From 9b0bc16ced731228eb7e2e07b4287020c39d8025 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@xxxxxxxxxx>
+Date: Mon, 13 Oct 2014 16:35:04 +0200
+Subject: [PATCH 1/2] Prefer external csnappy library in Sereal::Encoder
+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::Encoder XS module. Otherwise the bundled csnappy code will be
+used.
+
+<https://github.com/Sereal/Sereal/issues/72>
+
+Signed-off-by: Petr Písař <ppisar@xxxxxxxxxx>
+---
+ Perl/Encoder/Makefile.PL   | 26 +++++++++++++++++++-------
+ Perl/Encoder/srl_encoder.c |  5 +++++
+ 2 files changed, 24 insertions(+), 7 deletions(-)
+
+diff --git a/Perl/Encoder/Makefile.PL b/Perl/Encoder/Makefile.PL
+index 65d9292..ce0e8d7 100644
+--- a/Perl/Encoder/Makefile.PL
++++ b/Perl/Encoder/Makefile.PL
+@@ -25,6 +25,7 @@ inc::Sereal::BuildTools::generate_constant_includes($module) if $in_source_repo;
+ 
+ our $OPTIMIZE;
+ 
++my $libs = '';
+ my $defines = join " ", map "-D$_", grep exists $ENV{$_},
+               qw(NOINLINE DEBUG MEMDEBUG NDEBUG ENABLE_DANGEROUS_HACKS);
+ 
+@@ -56,13 +57,24 @@ if ($Config{osname} eq 'hpux' && not $Config{gccversion}) {
+   $defines .= " -Dinline= ";
+ }
+ 
+-# from Compress::Snappy
++# Prefer external csnappy library over the bundled one.
+ require Devel::CheckLib;
+-my $ctz = Devel::CheckLib::check_lib(
+-    lib      => 'c',
+-    function => 'return (__builtin_ctzll(0x100000000LL) != 32);'
+-) ? '-DHAVE_BUILTIN_CTZ' : '';
+-$defines .= " $ctz" if $ctz;
++my $have_csnappy = Devel::CheckLib::check_lib(
++    lib      => 'csnappy',
++    header   => 'csnappy.h'
++);
++
++if ($have_csnappy) {
++    $libs .= ' -lcsnappy';
++    $defines .= ' -DHAVE_CSNAPPY';
++} else {
++    # from Compress::Snappy
++    my $ctz = Devel::CheckLib::check_lib(
++        lib      => 'c',
++        function => 'return (__builtin_ctzll(0x100000000LL) != 32);'
++    ) ? '-DHAVE_BUILTIN_CTZ' : '';
++    $defines .= " $ctz" if $ctz;
++}
+ 
+ # See lib/ExtUtils/MakeMaker.pm for details of how to influence
+ # the contents of the Makefile that is written.
+@@ -101,7 +113,7 @@ WriteMakefile1(
+     LICENSE => 'perl',
+     ABSTRACT_FROM => 'lib/Sereal/Encoder.pm',
+     AUTHOR => 'Steffen Mueller <smueller@xxxxxxxx>, Yves Orton <yves@xxxxxxxx>',
+-    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/Encoder/srl_encoder.c b/Perl/Encoder/srl_encoder.c
+index 780748f..cc87623 100644
+--- a/Perl/Encoder/srl_encoder.c
++++ b/Perl/Encoder/srl_encoder.c
+@@ -52,7 +52,12 @@ extern "C" {
+ #include "ptable.h"
+ #include "srl_buffer.h"
+ 
++#if defined(HAVE_CSNAPPY)
++#include <csnappy.h>
++#else
+ #include "snappy/csnappy_compress.c"
++#endif
++
+ #include "miniz.h"
+ 
+ /* The ENABLE_DANGEROUS_HACKS (passed through from ENV via Makefile.PL) enables
+-- 
+1.9.3
+
diff --git a/Sereal-3.002_001-Prefer-external-miniz-library-in-Sereal-Encoder.patch b/Sereal-3.002_001-Prefer-external-miniz-library-in-Sereal-Encoder.patch
new file mode 100644
index 0000000..3a62bf4
--- /dev/null
+++ b/Sereal-3.002_001-Prefer-external-miniz-library-in-Sereal-Encoder.patch
@@ -0,0 +1,81 @@
+From 1dbf60cb0a2c2dffda36c88b984cb92a5b303432 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@xxxxxxxxxx>
+Date: Wed, 15 Oct 2014 15:52:18 +0200
+Subject: [PATCH 2/2] Prefer external miniz library in Sereal::Encoder
+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::Encoder XS module. Otherwise the bundled miniz code will be
+used.
+
+<https://github.com/Sereal/Sereal/issues/72>
+
+Signed-off-by: Petr Písař <ppisar@xxxxxxxxxx>
+---
+ Perl/Encoder/Makefile.PL   | 16 +++++++++++++++-
+ Perl/Encoder/srl_encoder.c |  4 ++++
+ 2 files changed, 19 insertions(+), 1 deletion(-)
+
+diff --git a/Perl/Encoder/Makefile.PL b/Perl/Encoder/Makefile.PL
+index ce0e8d7..6ec37ff 100644
+--- a/Perl/Encoder/Makefile.PL
++++ b/Perl/Encoder/Makefile.PL
+@@ -26,6 +26,7 @@ inc::Sereal::BuildTools::generate_constant_includes($module) if $in_source_repo;
+ our $OPTIMIZE;
+ 
+ my $libs = '';
++my $objects = '$(BASEEXT)$(OBJ_EXT) srl_encoder$(OBJ_EXT)';
+ my $defines = join " ", map "-D$_", grep exists $ENV{$_},
+               qw(NOINLINE DEBUG MEMDEBUG NDEBUG ENABLE_DANGEROUS_HACKS);
+ 
+@@ -76,6 +77,19 @@ if ($have_csnappy) {
+     $defines .= " $ctz" if $ctz;
+ }
+ 
++# 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(
+@@ -117,7 +131,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/Encoder/srl_encoder.c b/Perl/Encoder/srl_encoder.c
+index cc87623..7756b03 100644
+--- a/Perl/Encoder/srl_encoder.c
++++ b/Perl/Encoder/srl_encoder.c
+@@ -58,7 +58,11 @@ extern "C" {
+ #include "snappy/csnappy_compress.c"
+ #endif
+ 
++#if defined(HAVE_MINIZ)
++#include <miniz.h>
++#else
+ #include "miniz.h"
++#endif
+ 
+ /* The ENABLE_DANGEROUS_HACKS (passed through from ENV via Makefile.PL) enables
+  * optimizations that may make the code so cozy with a particular version of the
+-- 
+1.9.3
+
diff --git a/perl-Sereal-Encoder.spec b/perl-Sereal-Encoder.spec
new file mode 100644
index 0000000..b6d31bb
--- /dev/null
+++ b/perl-Sereal-Encoder.spec
@@ -0,0 +1,102 @@
+# Temporarily until Sereal::Decoder is packaged
+%global perl_bootstrap 1
+
+Name:           perl-Sereal-Encoder
+Version:        3.002
+Release:        1%{?dist}
+Summary:        Perl serialization into Serial format
+# lib/Sereal/Encoder.pm:    GPL+ or Artistic
+# miniz.c:                  Unlicense (unbundled)
+# snappy:                   BSD (unbundled)
+# See <https://github.com/Sereal/Sereal/issues/72>
+License:        GPL+ or Artistic
+Group:          Development/Libraries
+URL:            http://search.cpan.org/dist/Sereal-Encoder/
+Source0:        http://www.cpan.org/authors/id/Y/YV/YVES/Sereal-Encoder-%{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-Encoder.patch
+# Use external miniz library, <https://github.com/Sereal/Sereal/issues/72>
+Patch1:         Sereal-3.002_001-Prefer-external-miniz-library-in-Sereal-Encoder.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(constant)
+BuildRequires:  perl(Exporter)
+BuildRequires:  perl(XSLoader)
+# Tests:
+# Benchmark not used
+BuildRequires:  perl(blib)
+BuildRequires:  perl(Data::Dumper)
+BuildRequires:  perl(Devel::Peek)
+BuildRequires:  perl(Encode)
+BuildRequires:  perl(integer)
+BuildRequires:  perl(lib)
+BuildRequires:  perl(List::Util)
+BuildRequires:  perl(overload)
+BuildRequires:  perl(Scalar::Util)
+%if !%{defined perl_bootstrap}
+BuildRequires:  perl(Sereal::Decoder) >= 3.00
+%endif
+BuildRequires:  perl(Storable)
+BuildRequires:  perl(Test::LongString)
+BuildRequires:  perl(Test::More) >= 0.88
+BuildRequires:  perl(Test::Warn)
+BuildRequires:  perl(threads)
+BuildRequires:  perl(Tie::Array)
+BuildRequires:  perl(Tie::Hash)
+BuildRequires:  perl(Tie::Scalar)
+# Time::HiRes not used
+BuildRequires:  perl(utf8)
+Requires:       perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
+
+%description
+This library implements an efficient, compact-output, and feature-rich
+serializer using a binary protocol called Sereal.
+
+%prep
+%setup -q -n Sereal-Encoder-%{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@xxxxxxxxxx> 3.002-1
+- Specfile autogenerated by cpanspec 1.78.
diff --git a/sources b/sources
index e69de29..bcfdad0 100644
--- a/sources
+++ b/sources
@@ -0,0 +1 @@
+18e88a20ae5842f98e2874557d8d525c  Sereal-Encoder-3.002.tar.gz
--
Fedora Extras Perl SIG
http://www.fedoraproject.org/wiki/Extras/SIGs/Perl
perl-devel mailing list
perl-devel@xxxxxxxxxxxxxxxxxxxxxxx
https://admin.fedoraproject.org/mailman/listinfo/perl-devel





[Index of Archives]     [Fedora Announce]     [Fedora Kernel]     [Fedora Testing]     [Fedora Legacy Announce]     [Fedora PHP Devel]     [Kernel Devel]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Big List of Linux Books]     [Gimp]     [Yosemite Information]
  Powered by Linux