[libnet-amazon-ec2-perl] 03/03: Fix build by bringing back M::I modules missing in tarball

Florian Schlichting fsfs at moszumanska.debian.org
Wed Dec 20 00:21:36 UTC 2017


This is an automated email from the git hooks/post-receive script.

fsfs pushed a commit to branch master
in repository libnet-amazon-ec2-perl.

commit e2e2ea3a68e6c705e5e534e13fe8679f6956153a
Author: Florian Schlichting <fsfs at debian.org>
Date:   Wed Dec 20 01:13:20 2017 +0100

    Fix build by bringing back M::I modules missing in tarball
---
 debian/changelog                         |   1 +
 debian/patches/missing-mi-writeall.patch | 402 +++++++++++++++++++++++++++++++
 debian/patches/series                    |   1 +
 3 files changed, 404 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index 313b1ff..22dd73e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -5,6 +5,7 @@ libnet-amazon-ec2-perl (0.33-1) unstable; urgency=medium
 
   [ Florian Schlichting ]
   * Import upstream version 0.33 (LP: 1739294)
+  * Fix build by bringing back M::I modules missing in tarball
 
  -- Florian Schlichting <fsfs at debian.org>  Wed, 20 Dec 2017 00:44:29 +0100
 
diff --git a/debian/patches/missing-mi-writeall.patch b/debian/patches/missing-mi-writeall.patch
new file mode 100644
index 0000000..2bbf763
--- /dev/null
+++ b/debian/patches/missing-mi-writeall.patch
@@ -0,0 +1,402 @@
+Description: bring back M::I modules needed for configure
+Author: Florian Schlichting <fsfs at debian.org>
+Forwarded: https://github.com/mrallen1/net-amazon-ec2/issues/56
+
+--- /dev/null
++++ b/inc/Module/Install/WriteAll.pm
+@@ -0,0 +1,67 @@
++#line 1
++package Module::Install::WriteAll;
++
++use strict;
++use Module::Install::Base ();
++
++use vars qw{$VERSION @ISA $ISCORE};
++BEGIN {
++	$VERSION = '1.10';
++	@ISA     = qw{Module::Install::Base};
++	$ISCORE  = 1;
++}
++
++sub WriteAll {
++	my $self = shift;
++	my %args = (
++		meta        => 1,
++		sign        => 0,
++		inline      => 0,
++		check_nmake => 1,
++		@_,
++	);
++
++	$self->sign(1)                if $args{sign};
++	$self->admin->WriteAll(%args) if $self->is_admin;
++
++	$self->check_nmake if $args{check_nmake};
++	unless ( $self->makemaker_args->{PL_FILES} ) {
++		# XXX: This still may be a bit over-defensive...
++		unless ($self->makemaker(6.25)) {
++			$self->makemaker_args( PL_FILES => {} ) if -f 'Build.PL';
++		}
++	}
++
++	# Until ExtUtils::MakeMaker support MYMETA.yml, make sure
++	# we clean it up properly ourself.
++	$self->realclean_files('MYMETA.yml');
++
++	if ( $args{inline} ) {
++		$self->Inline->write;
++	} else {
++		$self->Makefile->write;
++	}
++
++	# The Makefile write process adds a couple of dependencies,
++	# so write the META.yml files after the Makefile.
++	if ( $args{meta} ) {
++		$self->Meta->write;
++	}
++
++	# Experimental support for MYMETA
++	if ( $ENV{X_MYMETA} ) {
++		if ( $ENV{X_MYMETA} eq 'JSON' ) {
++			$self->Meta->write_mymeta_json;
++		} else {
++			$self->Meta->write_mymeta_yaml;
++		}
++	}
++
++	return 1;
++}
++
++1;
++
++__END__
++
++#line 79
+--- /dev/null
++++ b/inc/Module/Install/Win32.pm
+@@ -0,0 +1,68 @@
++#line 1
++package Module::Install::Win32;
++
++use strict;
++use Module::Install::Base ();
++
++use vars qw{$VERSION @ISA $ISCORE};
++BEGIN {
++	$VERSION = '1.10';
++	@ISA     = 'Module::Install::Base';
++	$ISCORE  = 1;
++}
++
++# determine if the user needs nmake, and download it if needed
++sub check_nmake {
++	my $self = shift;
++	$self->load('can_run');
++	$self->load('get_file');
++
++	require Config;
++	return unless (
++		$^O eq 'MSWin32'                     and
++		$Config::Config{make}                and
++		$Config::Config{make} =~ /^nmake\b/i and
++		! $self->can_run('nmake')
++	);
++
++	print "The required 'nmake' executable not found, fetching it...\n";
++
++	require File::Basename;
++	my $rv = $self->get_file(
++		url       => 'http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/Nmake15.exe',
++		ftp_url   => 'ftp://ftp.microsoft.com/Softlib/MSLFILES/Nmake15.exe',
++		local_dir => File::Basename::dirname($^X),
++		size      => 51928,
++		run       => 'Nmake15.exe /o > nul',
++		check_for => 'Nmake.exe',
++		remove    => 1,
++	);
++
++	die <<'END_MESSAGE' unless $rv;
++
++-------------------------------------------------------------------------------
++
++Since you are using Microsoft Windows, you will need the 'nmake' utility
++before installation. It's available at:
++
++  http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/Nmake15.exe
++      or
++  ftp://ftp.microsoft.com/Softlib/MSLFILES/Nmake15.exe
++
++Please download the file manually, save it to a directory in %PATH% (e.g.
++C:\WINDOWS\COMMAND\), then launch the MS-DOS command line shell, "cd" to
++that directory, and run "Nmake15.exe" from there; that will create the
++'nmake.exe' file needed by this module.
++
++You may then resume the installation process described in README.
++
++-------------------------------------------------------------------------------
++END_MESSAGE
++
++}
++
++1;
++
++__END__
++
++#line 80
+--- /dev/null
++++ b/inc/Module/Install/Can.pm
+@@ -0,0 +1,154 @@
++#line 1
++package Module::Install::Can;
++
++use strict;
++use Config                ();
++use ExtUtils::MakeMaker   ();
++use Module::Install::Base ();
++
++use vars qw{$VERSION @ISA $ISCORE};
++BEGIN {
++	$VERSION = '1.10';
++	@ISA     = 'Module::Install::Base';
++	$ISCORE  = 1;
++}
++
++# check if we can load some module
++### Upgrade this to not have to load the module if possible
++sub can_use {
++	my ($self, $mod, $ver) = @_;
++	$mod =~ s{::|\\}{/}g;
++	$mod .= '.pm' unless $mod =~ /\.pm$/i;
++
++	my $pkg = $mod;
++	$pkg =~ s{/}{::}g;
++	$pkg =~ s{\.pm$}{}i;
++
++	local $@;
++	eval { require $mod; $pkg->VERSION($ver || 0); 1 };
++}
++
++# Check if we can run some command
++sub can_run {
++	my ($self, $cmd) = @_;
++
++	my $_cmd = $cmd;
++	return $_cmd if (-x $_cmd or $_cmd = MM->maybe_command($_cmd));
++
++	for my $dir ((split /$Config::Config{path_sep}/, $ENV{PATH}), '.') {
++		next if $dir eq '';
++		require File::Spec;
++		my $abs = File::Spec->catfile($dir, $cmd);
++		return $abs if (-x $abs or $abs = MM->maybe_command($abs));
++	}
++
++	return;
++}
++
++# Can our C compiler environment build XS files
++sub can_xs {
++	my $self = shift;
++
++	# Ensure we have the CBuilder module
++	$self->configure_requires( 'ExtUtils::CBuilder' => 0.27 );
++
++	# Do we have the configure_requires checker?
++	local $@;
++	eval "require ExtUtils::CBuilder;";
++	if ( $@ ) {
++		# They don't obey configure_requires, so it is
++		# someone old and delicate. Try to avoid hurting
++		# them by falling back to an older simpler test.
++		return $self->can_cc();
++	}
++
++	# Do we have a working C compiler
++	my $builder = ExtUtils::CBuilder->new(
++		quiet => 1,
++	);
++	unless ( $builder->have_compiler ) {
++		# No working C compiler
++		return 0;
++	}
++
++	# Write a C file representative of what XS becomes
++	require File::Temp;
++	my ( $FH, $tmpfile ) = File::Temp::tempfile(
++		"compilexs-XXXXX",
++		SUFFIX => '.c',
++	);
++	binmode $FH;
++	print $FH <<'END_C';
++#include "EXTERN.h"
++#include "perl.h"
++#include "XSUB.h"
++
++int main(int argc, char **argv) {
++    return 0;
++}
++
++int boot_sanexs() {
++    return 1;
++}
++
++END_C
++	close $FH;
++
++	# Can the C compiler access the same headers XS does
++	my @libs   = ();
++	my $object = undef;
++	eval {
++		local $^W = 0;
++		$object = $builder->compile(
++			source => $tmpfile,
++		);
++		@libs = $builder->link(
++			objects     => $object,
++			module_name => 'sanexs',
++		);
++	};
++	my $result = $@ ? 0 : 1;
++
++	# Clean up all the build files
++	foreach ( $tmpfile, $object, @libs ) {
++		next unless defined $_;
++		1 while unlink;
++	}
++
++	return $result;
++}
++
++# Can we locate a (the) C compiler
++sub can_cc {
++	my $self   = shift;
++	my @chunks = split(/ /, $Config::Config{cc}) or return;
++
++	# $Config{cc} may contain args; try to find out the program part
++	while (@chunks) {
++		return $self->can_run("@chunks") || (pop(@chunks), next);
++	}
++
++	return;
++}
++
++# Fix Cygwin bug on maybe_command();
++if ( $^O eq 'cygwin' ) {
++	require ExtUtils::MM_Cygwin;
++	require ExtUtils::MM_Win32;
++	if ( ! defined(&ExtUtils::MM_Cygwin::maybe_command) ) {
++		*ExtUtils::MM_Cygwin::maybe_command = sub {
++			my ($self, $file) = @_;
++			if ($file =~ m{^/cygdrive/}i and ExtUtils::MM_Win32->can('maybe_command')) {
++				ExtUtils::MM_Win32->maybe_command($file);
++			} else {
++				ExtUtils::MM_Unix->maybe_command($file);
++			}
++		}
++	}
++}
++
++1;
++
++__END__
++
++#line 236
+--- /dev/null
++++ b/inc/Module/Install/Fetch.pm
+@@ -0,0 +1,97 @@
++#line 1
++package Module::Install::Fetch;
++
++use strict;
++use Module::Install::Base ();
++
++use vars qw{$VERSION @ISA $ISCORE};
++BEGIN {
++	$VERSION = '1.10';
++	@ISA     = 'Module::Install::Base';
++	$ISCORE  = 1;
++}
++
++sub get_file {
++    my ($self, %args) = @_;
++    my ($scheme, $host, $path, $file) =
++        $args{url} =~ m|^(\w+)://([^/]+)(.+)/(.+)| or return;
++
++    if ( $scheme eq 'http' and ! eval { require LWP::Simple; 1 } ) {
++        $args{url} = $args{ftp_url}
++            or (warn("LWP support unavailable!\n"), return);
++        ($scheme, $host, $path, $file) =
++            $args{url} =~ m|^(\w+)://([^/]+)(.+)/(.+)| or return;
++    }
++
++    $|++;
++    print "Fetching '$file' from $host... ";
++
++    unless (eval { require Socket; Socket::inet_aton($host) }) {
++        warn "'$host' resolve failed!\n";
++        return;
++    }
++
++    return unless $scheme eq 'ftp' or $scheme eq 'http';
++
++    require Cwd;
++    my $dir = Cwd::getcwd();
++    chdir $args{local_dir} or return if exists $args{local_dir};
++
++    if (eval { require LWP::Simple; 1 }) {
++        LWP::Simple::mirror($args{url}, $file);
++    }
++    elsif (eval { require Net::FTP; 1 }) { eval {
++        # use Net::FTP to get past firewall
++        my $ftp = Net::FTP->new($host, Passive => 1, Timeout => 600);
++        $ftp->login("anonymous", 'anonymous at example.com');
++        $ftp->cwd($path);
++        $ftp->binary;
++        $ftp->get($file) or (warn("$!\n"), return);
++        $ftp->quit;
++    } }
++    elsif (my $ftp = $self->can_run('ftp')) { eval {
++        # no Net::FTP, fallback to ftp.exe
++        require FileHandle;
++        my $fh = FileHandle->new;
++
++        local $SIG{CHLD} = 'IGNORE';
++        unless ($fh->open("|$ftp -n")) {
++            warn "Couldn't open ftp: $!\n";
++            chdir $dir; return;
++        }
++
++        my @dialog = split(/\n/, <<"END_FTP");
++open $host
++user anonymous anonymous\@example.com
++cd $path
++binary
++get $file $file
++quit
++END_FTP
++        foreach (@dialog) { $fh->print("$_\n") }
++        $fh->close;
++    } }
++    else {
++        warn "No working 'ftp' program available!\n";
++        chdir $dir; return;
++    }
++
++    unless (-f $file) {
++        warn "Fetching failed: $@\n";
++        chdir $dir; return;
++    }
++
++    return if exists $args{size} and -s $file != $args{size};
++    system($args{run}) if exists $args{run};
++    unlink($file) if $args{remove};
++
++    print(((!exists $args{check_for} or -e $args{check_for})
++        ? "done!" : "failed! ($!)"), "\n");
++    chdir $dir; return !$?;
++}
++
++1;
++
++__END__
++
++#line 109
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..284bf89
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1 @@
+missing-mi-writeall.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libnet-amazon-ec2-perl.git



More information about the Pkg-perl-cvs-commits mailing list