File: Makefile.PL

package info (click to toggle)
libcarp-assert-perl 0.22-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 104 kB
  • sloc: perl: 278; makefile: 2
file content (135 lines) | stat: -rw-r--r-- 3,460 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
use ExtUtils::MakeMaker;

my $mm_ver = $ExtUtils::MakeMaker::VERSION;
if ($mm_ver =~ /_/) { # dev version
    $mm_ver = eval $mm_ver;
    die $@ if $@;
}

my @REQUIRES = (
    'strict'    => 0,
    'warnings'  => 0,
    'Exporter'  => 0,
    'vars'      => 0,
    'Carp'      => 0,
);

my @TEST_REQUIRES = (
    'Test::More'    => 0.88,
);

push(@REQUIRES, @TEST_REQUIRES) if $mm_ver < 6.64;

warn "Carp::Assert likes to have B::Deparse but can't find it.\n" unless 
  eval { require B::Deparse };

WriteMakefile(
    NAME        => 'Carp::Assert',
    VERSION_FROM => 'lib/Carp/Assert.pm', # finds $VERSION
    PREREQ_PM   => { @REQUIRES },
    'dist'      => {COMPRESS => 'gzip -9',
                    SUFFIX   => '.gz',
                    DIST_DEFAULT => 'all tardist',
                   },

    ($mm_ver >= 6.64
        ? (TEST_REQUIRES => { @TEST_REQUIRES })
        : ()
    ),

    ($mm_ver >= 6.31 ? (LICENSE => 'perl') : ()),

    ($mm_ver >= 6.48
        ? (MIN_PERL_VERSION => 5.006)
        : ()
    ),

    ($mm_ver <= 6.45 ? () : (META_MERGE => {
        'meta-spec' => { version => 2 },
        resources => {
            repository  => {
                type => 'git',
                web  => 'https://github.com/demerphq/Carp-Assert',
                url  => 'git://github.com/demerphq/Carp-Assert.git',
            },
        },
    })),

);

{
    package MY;
    sub top_targets {
        my($self) = @_;

        return $self->SUPER::top_targets(@_) unless
          eval { require Pod::Tests; 1 };

        my $out = "POD2TEST_EXE = pod2test\n";

        $out .= $self->SUPER::top_targets(@_);
        $out =~ s/^(pure_all\b.*)/$1 testifypods/m;

        foreach my $pod (keys %{$self->{MAN1PODS}},
                         keys %{$self->{MAN3PODS}})
        {
            (my $test = $pod) =~ s/\.(pm|pod)$//;
            $test =~ s/^lib\W//;
            $test =~ s/\W/-/;
            $test = "t/embedded-$test.t";
            
            $pod2test{$pod} = $test;
        }

        $out .= <<"END_OF_MAKE";

testifypods : @{[ join " ", values %pod2test ]}
\t\$(NOECHO) \$(NOOP)

END_OF_MAKE
        
        for my $pod (keys %pod2test) {
            my $test = $pod2test{$pod};
            
            $out .= <<"END_OF_MAKE";
$test : $pod
\t\$(NOECHO) \$(ECHO) Testifying $pod to $test
\t\$(NOECHO) \$(POD2TEST_EXE) $pod $test

END_OF_MAKE
        }

        return $out;
    }


    sub test_via_harness {
        my($self, $orig_perl, $tests) = @_;

        my @perls = ($orig_perl);
        if ($ENV{PERL_TEST_ALL} and $ENV{HOME}) {
            chomp(my @list = `perlbrew list 2>&1`);
            my %candidate;
            foreach my $name (@list) {
                $name=~s/^\s+//;
                $name=~s/\s+\z//;
                next unless $name =~ /^(perl-\d+\.\d+)\.(\d+)\z/
                         or $name =~ /^(latest_blead)\z/;
                my $major = $1;
                my $minor = $2 // 0;
                my $path = "$ENV{HOME}/perl5/perlbrew/perls/$name/bin/perl";
                if (-e $path) {
                    $candidate{$major} = [$minor, $path]
                        if !$candidate{$major} or $candidate{$major}[0] < $minor;
                }
            }
            push @perls, sort map { $_->[-1] } values %candidate;
        }
        my $out;
        foreach my $perl (@perls) {
            $out .= $self->SUPER::test_via_harness($perl, $tests);
        }

        return $out;
    }
}