[libkavorka-perl] 11/12: Fix dependency on Data::Alias: Add patch 1001 to use recent Perl instead of Data::Alias. (Build-)depend on recent perl favored over libdata-alias-perl. Closes: Bug#834800. Thanks to Daniel Dehennin.
Jonas Smedegaard
dr at jones.dk
Thu Dec 15 01:46:08 UTC 2016
This is an automated email from the git hooks/post-receive script.
js pushed a commit to branch master
in repository libkavorka-perl.
commit a216d482b260c5bfa929e0bb86c887d5f4c9ca44
Author: Jonas Smedegaard <dr at jones.dk>
Date: Thu Dec 15 02:32:44 2016 +0100
Fix dependency on Data::Alias: Add patch 1001 to use recent Perl instead of Data::Alias. (Build-)depend on recent perl favored over libdata-alias-perl. Closes: Bug#834800. Thanks to Daniel Dehennin.
---
.../1001_remove-data-alias-dependency.patch | 148 +++++++++++++++++++++
debian/patches/README | 3 +
debian/patches/series | 1 +
debian/rules | 3 +-
4 files changed, 154 insertions(+), 1 deletion(-)
diff --git a/debian/patches/1001_remove-data-alias-dependency.patch b/debian/patches/1001_remove-data-alias-dependency.patch
new file mode 100644
index 0000000..1494003
--- /dev/null
+++ b/debian/patches/1001_remove-data-alias-dependency.patch
@@ -0,0 +1,148 @@
+Description: Data::Alias is broken on perl >= 5.24
+ The Data::Alias module itself explains:
+ .
+ > you should prefer to use the core facility rather than use this
+ > module. If you are already using this module and are now using a
+ > sufficiently recent Perl, you should attempt to migrate to the core
+ > facility
+ .
+ The idea is to use core refaliasing when available and Data::Alias
+ otherwise.
+ .
+ This patch is a merge of the 2 commits of the pull request.
+Author: Daniel Dehennin <daniel.dehennin at baby-gnu.org>
+Origin: https://github.com/tobyink/p5-kavorka/pull/19
+Bug: https://github.com/tobyink/p5-kavorka/issues/18
+Bug-Debian: https://bugs.debian.org/834800
+Last-Update: 2016-12-15
+
+--- a/lib/Kavorka/Signature.pm
++++ b/lib/Kavorka/Signature.pm
+@@ -19,6 +19,8 @@
+ use Moo;
+ use namespace::sweep;
+
++use constant HAS_REFALIASING => ($] >= 5.022);
++
+ has package => (is => 'ro');
+ has _is_dummy => (is => 'ro');
+ has params => (is => 'ro', default => sub { +[] });
+@@ -276,13 +278,45 @@
+ or $slurpy && $slurpy->name =~ /\A\%/
+ or $slurpy && $slurpy->name =~ /\A\$/ && $slurpy->type->is_a_type_of(Types::Standard::HashRef()))
+ {
+- require Data::Alias;
+ my $ix = 1 + $self->last_position;
+- my $str = sprintf(
++ my $str;
++ if (HAS_REFALIASING) {
++ my $format = <<'EOF';
++local %%_;
++{
++ use Carp qw(croak);
++ use experimental 'refaliasing';
++
++ if ($#_==%d && ref($_[%d]) eq q(HASH)) {
++ \%%_ = \%%{$_[%d]};
++ }
++ else {
++ # Make a hash reference from array refalias does not work
++ # Manual build
++ my $slice_length = ($#_ + 1 - %d);
++ if ($slice_length %% 2 != 0) {
++ # Seems to be what t/10positional.t wants
++ croak("Odd number of elements in anonymous hash");
++ }
++ my $i = %d;
++ while ($i <= $#_) {
++ my $key = $_[$i];
++ \$_{$key} = \$_[$i+1];
++ $i += 2;
++ }
++ }
++};
++EOF
++ $str = sprintf($format,($ix) x 5,);
++ }
++ else {
++ require Data::Alias;
++ $str = sprintf(
+ 'local %%_; { use warnings FATAL => qw(all); Data::Alias::alias(%%_ = ($#_==%d && ref($_[%d]) eq q(HASH)) ? %%{$_[%d]} : @_[ %d .. $#_ ]) };',
+ ($ix) x 4,
+ );
+-
++ }
++
+ unless ($slurpy or $self->yadayada)
+ {
+ my @allowed_names = map +($_=>1), map @{$_->named_names}, $self->named_params;
+--- a/lib/Kavorka/TraitFor/Parameter/alias.pm
++++ b/lib/Kavorka/TraitFor/Parameter/alias.pm
+@@ -9,6 +9,8 @@
+
+ use Moo::Role;
+
++use constant HAS_REFALIASING => ($] >= 5.022);
++
+ around _injection_assignment => sub
+ {
+ my $next = shift;
+@@ -17,8 +19,21 @@
+
+ if ($self->kind eq 'my')
+ {
+- require Data::Alias;
+- return sprintf('Data::Alias::alias(my %s = do { %s });', $var, $val);
++ my $format;
++ if (HAS_REFALIASING) {
++ $format = <<'EOF';
++my %s;
++{
++ use experimental 'refaliasing';
++ \%s = \do { %s };
++};
++EOF
++ return sprintf($format, ($var) x 2, $val);
++ }
++ else {
++ require Data::Alias;
++ return sprintf('Data::Alias::alias(my %s = do { %s });', $var, $val);
++ }
+ }
+ elsif ($self->kind eq 'our')
+ {
+--- a/lib/Kavorka/TraitFor/Parameter/ref_alias.pm
++++ b/lib/Kavorka/TraitFor/Parameter/ref_alias.pm
+@@ -9,6 +9,8 @@
+
+ use Moo::Role;
+
++use constant HAS_REFALIASING => ($] >= 5.022);
++
+ around _injection_assignment => sub
+ {
+ my $next = shift;
+@@ -17,8 +19,21 @@
+
+ if ($self->kind eq 'my')
+ {
+- require Data::Alias;
+- return sprintf('Data::Alias::alias(my %s = %s{ +do { %s } });', $var, $self->sigil, $val);
++ my $format;
++ if (HAS_REFALIASING) {
++ $format = <<'EOF';
++my %s;
++{
++ use experimental 'refaliasing';
++ \%s = \%s{ +do { %s } };
++};
++EOF
++ return sprintf($format, ($var) x 2, $self->sigil, $val);
++ }
++ else {
++ require Data::Alias;
++ return sprintf('Data::Alias::alias(my %s = %s{ +do { %s } });', $var, $self->sigil, $val);
++ }
+ }
+ elsif ($self->kind eq 'our')
+ {
diff --git a/debian/patches/README b/debian/patches/README
new file mode 100644
index 0000000..80c1584
--- /dev/null
+++ b/debian/patches/README
@@ -0,0 +1,3 @@
+0xxx: Grabbed from upstream development.
+1xxx: Possibly relevant for upstream adoption.
+2xxx: Only relevant for official Debian release.
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..27a338e
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1 @@
+1001_remove-data-alias-dependency.patch
diff --git a/debian/rules b/debian/rules
index b739e0a..c10a23b 100755
--- a/debian/rules
+++ b/debian/rules
@@ -24,12 +24,13 @@ pkg = $(DEB_SOURCE_PACKAGE)
# Needed by upstream build and (always) at runtime
# * Recent Scalar::List::Utils needed for Sub::Util
-perl-deps = data-alias exporter-tiny module-runtime padwalker
+perl-deps = exporter-tiny module-runtime padwalker
perl-deps += parse-keyword return-type type-tiny
perl-deps += match-simple namespace-sweep
deps = $(patsubst %,$(comma) lib%-perl,$(perl-deps))
deps +=, libmoo-perl (>= 1.003001)
deps +=, libscalar-list-utils-perl (>= 1:1.40)
+deps +=, perl (>= 5.22) | libdata-alias-perl
deps +=, perl (>= 5.14)
# Needed (often) at runtime
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libkavorka-perl.git
More information about the Pkg-perl-cvs-commits
mailing list