tools/cpan2ips.pl
author Igor Pashev <igor.pashev@nexenta.com>
Fri, 14 Oct 2011 17:42:40 +0400
changeset 448 11a4d6c5b270
parent 447 f1790f276df9
child 449 2a36deca4819
permissions -rwxr-xr-x
cpan2ips.pl: Filter unique deps
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
447
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
     1
#!/usr/bin/env perl
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
     2
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
     3
# Based on ideas of cpan2tgz by Jason Woodward <[email protected]>
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
     4
# http://software.jaos.org/
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
     5
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
     6
use strict;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
     7
use warnings FATAL => 'all';
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
     8
use integer;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
     9
use Data::Dumper;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    10
use Getopt::Long qw(:config no_ignore_case);
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    11
use File::Copy;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    12
use File::Basename;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    13
use Cwd;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    14
use CPAN;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    15
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    16
sub blab {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    17
    print 'cpan2ips: ', @_, "\n";
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    18
}
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    19
sub warning {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    20
    blab 'WARNING: ', @_;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    21
    sleep 2;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    22
}
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    23
sub fatal {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    24
    blab 'FATAL: ', @_;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    25
    exit 1;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    26
}
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    27
sub my_chdir {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    28
    my ($path) = @_;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    29
    chdir $path or fatal "Can't chdir() to `$path': $!";
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    30
}
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    31
sub my_mkdir {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    32
    my ($path, $mode) = @_;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    33
    if (defined $mode) {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    34
        mkdir $path, oct($mode)
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    35
            or fatal "Can't create dir `$path' with mode `$mode': $!";
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    36
    } else {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    37
        mkdir $path
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    38
            or fatal "Can't create dir `$path': $!";
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    39
    }
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    40
}
448
11a4d6c5b270 cpan2ips.pl: Filter unique deps
Igor Pashev <igor.pashev@nexenta.com>
parents: 447
diff changeset
    41
sub uniq {
11a4d6c5b270 cpan2ips.pl: Filter unique deps
Igor Pashev <igor.pashev@nexenta.com>
parents: 447
diff changeset
    42
    my ($array_ref) = @_;
11a4d6c5b270 cpan2ips.pl: Filter unique deps
Igor Pashev <igor.pashev@nexenta.com>
parents: 447
diff changeset
    43
    my %hash = map { $_, 1 } @$array_ref;
11a4d6c5b270 cpan2ips.pl: Filter unique deps
Igor Pashev <igor.pashev@nexenta.com>
parents: 447
diff changeset
    44
    @$array_ref = keys %hash;
11a4d6c5b270 cpan2ips.pl: Filter unique deps
Igor Pashev <igor.pashev@nexenta.com>
parents: 447
diff changeset
    45
}
447
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    46
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    47
sub shell_exec {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    48
    my ($cmd) = @_;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    49
    blab "executing `$cmd'";
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    50
    system($cmd);
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    51
    if ($? == -1) {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    52
        fatal "failed to execute: $!";
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    53
    } elsif ($? & 127) {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    54
        fatal (printf "child died with signal %d, %s coredump",
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    55
            ($? & 127),  ($? & 128) ? 'with' : 'without')
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    56
    } else {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    57
        my $rc = $? >> 8;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    58
        if ($rc != 0) {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    59
            warning "child exited with value $rc";
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    60
        }
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    61
    }
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    62
}
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    63
sub write_file {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    64
    my ($filename, $content) = @_;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    65
    blab "Writing file `$filename'";
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    66
    if (open FD, '>', $filename) {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    67
        print FD $content;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    68
        close FD;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    69
    } else {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    70
        fatal "Can't write to file `$filename': $!"
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    71
    }
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    72
}
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    73
sub get_output {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    74
    my ($cmd) = @_;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    75
    blab "absorbing `$cmd'";
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    76
    if (open OUT, "$cmd |") {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    77
        my @lines = <OUT>;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    78
        close OUT;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    79
        chomp @lines;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    80
        warning "Empty output from `$cmd'" unless @lines;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    81
        return \@lines;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    82
    } else {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    83
        fatal "Can't execute `$cmd': $!"
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    84
    }
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    85
}
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    86
sub get_output_line {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    87
    return (@{get_output @_})[0];
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    88
}
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    89
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    90
sub trim {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    91
    # works with refs:
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    92
    $$_ =~ s/^\s*(.*)\s*$/$1/ foreach @_;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    93
}
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    94
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    95
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    96
my $PERL_MODS_DIR = getcwd;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    97
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    98
our $HAS_YAML = 1;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    99
eval "no warnings 'all'; use YAML;"; if ($@) { $HAS_YAML = 0 }
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   100
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   101
my %MODS_CACHE = ();
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   102
if ( opendir(my $perl_modules, $PERL_MODS_DIR) ) {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   103
    $MODS_CACHE{$_} = 1 foreach grep  { ! m/^\.+$/ } readdir($perl_modules);
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   104
    closedir($perl_modules);
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   105
} else {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   106
    fatal "Can't read directory `$PERL_MODS_DIR': $!";
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   107
}
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   108
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   109
my @modules = @ARGV;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   110
foreach my $mod ( @modules ) {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   111
    if (exists $MODS_CACHE{$mod}) {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   112
        blab "$mod already incorporated";
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   113
    } else {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   114
        do_package($mod);
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   115
    }
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   116
}
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   117
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   118
sub do_package
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   119
{
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   120
    my ($module_name) = @_;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   121
    return unless $module_name;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   122
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   123
    my $module =  CPAN::Shell->expand('Module', $module_name)
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   124
                || CPAN::Shell->expand('Bundle', $module_name)
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   125
                || CPAN::Shell->expand('Distribution', $module_name);
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   126
    fatal "Failed to find module: $module_name\n" unless $module;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   127
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   128
    blab "Processing `$module_name'";
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   129
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   130
    my $pack;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   131
    if ($module->can('distribution')) {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   132
        $pack = $module->distribution;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   133
    } else {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   134
        $pack = $CPAN::META->instance('CPAN::Distribution', $module->cpan_file());
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   135
    }
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   136
    fatal "Failed to initialize CPAN::Distribution object for $module_name: $!" unless $pack;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   137
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   138
    $pack->get();
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   139
    
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   140
    my $cpan_file   = $module->cpan_file();
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   141
    my $cpan_dir    = 'http://search.cpan.org/CPAN/authors/id/' . (dirname $cpan_file);
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   142
    my $mod_id      = $module->id();
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   143
    my $cpan_file_basename  = basename $cpan_file;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   144
    $cpan_file_basename =~ /^(.+)-([^-]+)\.tar\.(.+)$/ ||  fatal "Can't parse $cpan_file_basename";
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   145
    my ($cpan_name, $pkg_version, $tar_comp) = ($1, $2, $3);
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   146
    my $pkg_name = lc $cpan_name;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   147
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   148
    blab "CPAN file: $cpan_file";
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   149
    blab "Package name: $pkg_name";
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   150
    blab "Package version: $pkg_version";
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   151
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   152
    if (exists $MODS_CACHE{$mod_id} || exists $MODS_CACHE{$pkg_name}) {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   153
        blab "Module `$mod_id' already in queue or incorporated";
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   154
        return $pkg_name;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   155
    } else {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   156
        $MODS_CACHE{$mod_id}   = 1;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   157
        $MODS_CACHE{$pkg_name} = 1;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   158
    }
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   159
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   160
    if ($pack->isa_perl()) {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   161
        blab "Skipping `$mod_id': it is a Perl core module";
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   162
        return;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   163
    }
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   164
    eval { $pack->make() or die $!; };
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   165
    if ($@) {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   166
        if (!($!{ENOTTY} && $HAS_YAML)) {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   167
            fatal "make ERROR [$module_name]: $!\n";
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   168
        }
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   169
    }
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   170
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   171
    my @mod_deps = ();
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   172
    if (my $deps = $pack->prereq_pm()) {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   173
        @mod_deps = grep { $_ && m/\w+/; }
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   174
        map { defined $MODS_CACHE{$_} ? undef : $_ }
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   175
        map { eval "no warnings 'all'; use $_;"; if ($@) { $_ } }
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   176
        map { m/requires$/ ? keys %{$deps->{$_}} : $_ }
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   177
        keys %{$deps};
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   178
    }
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   179
    blab "Required for `$mod_id' modules: ", (join ', ', @mod_deps);
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   180
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   181
    my @pkg_deps = ();
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   182
    foreach (@mod_deps) {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   183
        my $dep_pkg_name = do_package($_);
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   184
        push @pkg_deps, $dep_pkg_name if $dep_pkg_name;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   185
    }
448
11a4d6c5b270 cpan2ips.pl: Filter unique deps
Igor Pashev <igor.pashev@nexenta.com>
parents: 447
diff changeset
   186
    uniq \@pkg_deps;
447
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   187
    blab "Required for `$pkg_name' packages: ", (join ', ', @pkg_deps);
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   188
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   189
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   190
    my $tmp_dest_dir = "/tmp/cpan2ips-$pkg_name";
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   191
    my $pack_dir = $pack->dir();
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   192
    if ( -f "$pack_dir/Build" ) {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   193
        shell_exec "cd $pack_dir && ./Build install_vendor destdir=$tmp_dest_dir";
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   194
    } else {
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   195
        shell_exec "cd $pack_dir && make install_vendor DESTDIR=$tmp_dest_dir";
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   196
    }
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   197
    fatal "Build failed" unless -d $tmp_dest_dir;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   198
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   199
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   200
    my $pkg_summary = get_output_line "cd $pack_dir && [ -f META.yml ] && grep abstract: META.yml | sed 's,abstract: *,,'";
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   201
    my $ips_manifest = <<MANIFEST;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   202
<transform file path=usr.*/man/.+ -> default mangler.man.stability uncommitted>
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   203
set name=pkg.fmri value=pkg:/library/perl-5/$pkg_name@\$(IPS_COMPONENT_VERSION),\$(BUILD_VERSION)
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   204
set name=info.classification value="org.opensolaris.category.2008:Development/Perl"
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   205
set name=pkg.summary value="$pkg_summary (Perl module)"
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   206
MANIFEST
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   207
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   208
    $ips_manifest .= join "\n", (grep !/(\.packlist|perllocal.pod)$/,
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   209
        @{get_output
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   210
            "cd $tmp_dest_dir && \
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   211
            gfind * -type d -printf 'dir path=%p\\n' \
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   212
            gfind * -type f -printf 'file path=%p\\n' \
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   213
            gfind * -type l -printf 'link path=%p target=%l\\n' \
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   214
            "});
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   215
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   216
    $ips_manifest .= "\n";
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   217
    $ips_manifest .= "depend fmri=pkg:/library/perl-5/$_ type=require\n"
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   218
        foreach @pkg_deps;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   219
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   220
    shell_exec "rm -rf $tmp_dest_dir";
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   221
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   222
    my $sha1sum = get_output_line "sha1sum $CPAN::Config->{'keep_source_where'}/authors/id/$cpan_file | cut -d ' ' -f 1";
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   223
    my $makefile = <<MAKEFILE;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   224
include ../../../make-rules/shared-macros.mk
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   225
COMPONENT_NAME     =  $cpan_name
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   226
COMPONENT_VERSION  =  $pkg_version
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   227
COMPONENT_SRC      =  \$(COMPONENT_NAME)-\$(COMPONENT_VERSION)
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   228
COMPONENT_ARCHIVE  =  \$(COMPONENT_SRC).tar.$tar_comp
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   229
COMPONENT_ARCHIVE_HASH = sha1:$sha1sum
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   230
COMPONENT_ARCHIVE_URL  = $cpan_dir/\$(COMPONENT_ARCHIVE)
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   231
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   232
include \$(WS_TOP)/make-rules/prep.mk
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   233
include \$(WS_TOP)/make-rules/ips.mk
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   234
include \$(WS_TOP)/make-rules/makemaker.mk
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   235
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   236
build:      \$(BUILD_32)
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   237
install:    \$(INSTALL_32)
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   238
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   239
COMPONENT_TEST_TARGETS = test
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   240
test:       \$(TEST_32)
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   241
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   242
BUILD_PKG_DEPENDENCIES = \$(BUILD_TOOLS)
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   243
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   244
include \$(WS_TOP)/make-rules/depend.mk
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   245
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   246
MAKEFILE
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   247
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   248
    my_mkdir "$PERL_MODS_DIR/$pkg_name";
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   249
    write_file "$PERL_MODS_DIR/$pkg_name/$pkg_name.p5m", $ips_manifest;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   250
    write_file "$PERL_MODS_DIR/$pkg_name/Makefile", $makefile;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   251
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   252
    return $pkg_name;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   253
}
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   254
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   255
exit 0;
f1790f276df9 Added cpan2ips.pl - recursively add perl modules into consolidation tree; removed cpan2ips.sh
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   256