tools/py2ips.pl
author Igor Pashev <igor.pashev@nexenta.com>
Tue, 25 Oct 2011 14:54:40 +0400
changeset 464 c51702debae2
parent 462 12f6fd8fe2bc
child 465 c55c69fd07bd
permissions -rwxr-xr-x
cpan2ips.pl, py2ips.pl: replace "_" by "-" in package names; added Nexenta copyrights
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
459
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
     1
#!/usr/bin/env perl
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
     2
462
12f6fd8fe2bc Added Nexenta copyrights into tools
Alexander Eremin <a.eremin@nexenta.com>
parents: 460
diff changeset
     3
# Copyright (c) 2011 Nexenta Systems, Inc.  All rights reserved.
12f6fd8fe2bc Added Nexenta copyrights into tools
Alexander Eremin <a.eremin@nexenta.com>
parents: 460
diff changeset
     4
459
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
     5
use strict;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
     6
use warnings FATAL => 'all';
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
     7
use File::Basename;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
     8
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
     9
sub blab {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    10
    print 'py2ips: ', @_, "\n";
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    11
}
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    12
sub warning {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    13
    blab 'WARNING: ', @_;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    14
    sleep 2;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    15
}
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    16
sub fatal {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    17
    blab 'FATAL: ', @_;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    18
    exit 1;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    19
}
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    20
sub my_chdir {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    21
    my ($path) = @_;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    22
    chdir $path or fatal "Can't chdir() to `$path': $!";
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    23
}
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    24
sub my_mkdir {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    25
    my ($path, $mode) = @_;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    26
    if (defined $mode) {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    27
        mkdir $path, oct($mode)
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    28
            or fatal "Can't create dir `$path' with mode `$mode': $!";
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    29
    } else {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    30
        mkdir $path
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    31
            or fatal "Can't create dir `$path': $!";
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    32
    }
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    33
}
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    34
sub uniq {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    35
    my ($array_ref) = @_;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    36
    my %hash = map { $_, 1 } @$array_ref;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    37
    @$array_ref = keys %hash;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    38
}
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    39
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    40
sub shell_exec {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    41
    my ($cmd) = @_;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    42
    blab "executing `$cmd'";
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    43
    system($cmd);
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    44
    if ($? == -1) {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    45
        fatal "failed to execute: $!";
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    46
    } elsif ($? & 127) {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    47
        fatal (printf "child died with signal %d, %s coredump",
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    48
            ($? & 127),  ($? & 128) ? 'with' : 'without')
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    49
    } else {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    50
        my $rc = $? >> 8;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    51
        if ($rc != 0) {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    52
            warning "child exited with value $rc";
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    53
        }
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    54
    }
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    55
}
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    56
sub write_file {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    57
    my ($filename, $content) = @_;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    58
    blab "Writing file `$filename'";
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    59
    if (open FD, '>', $filename) {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    60
        print FD $content;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    61
        close FD;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    62
    } else {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    63
        fatal "Can't write to file `$filename': $!"
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    64
    }
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    65
}
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    66
sub get_output {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    67
    my ($cmd) = @_;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    68
    blab "absorbing `$cmd'";
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    69
    if (open OUT, "$cmd |") {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    70
        my @lines = <OUT>;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    71
        close OUT;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    72
        chomp @lines;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    73
        warning "Empty output from `$cmd'" unless @lines;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    74
        return \@lines;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    75
    } else {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    76
        fatal "Can't execute `$cmd': $!"
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    77
    }
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    78
}
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    79
sub get_output_line {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    80
    return (@{get_output @_})[0];
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    81
}
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    82
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    83
sub trim {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    84
    # works with refs:
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    85
    $$_ =~ s/^\s*(.*)\s*$/$1/ foreach @_;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    86
}
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    87
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    88
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    89
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    90
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    91
my $pyversion = get_output_line 'python --version 2>&1';
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    92
if ($pyversion =~ /Python +(\d)\.(\d)\..+/) {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    93
    $pyversion = "$1$2";
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    94
    blab "Python: $pyversion"
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    95
} else {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    96
    fatal "Can't parse Python version"
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    97
}
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    98
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
    99
foreach my $pkg (@ARGV) {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   100
    # http://pypi.python.org/packages/source/T/TurboKid/TurboKid-1.0.5.tar.gz#md5=ba70daf5aa7121affdea8e7632a3b353
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   101
    $pkg = (split /#/, $pkg)[0];
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   102
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   103
    my $archive = basename $pkg;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   104
    my $url_dir = dirname $pkg;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   105
    blab "Working on $pkg";
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   106
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   107
    my ($pkg_name, $pkg_version, $arch);
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   108
    if ($archive =~ /^(.+)-([^-]+)\.(tar\..+|zip)$/) {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   109
        $pkg_name = $1;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   110
        $pkg_version = $2;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   111
        $arch = $3;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   112
    } else {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   113
        fatal "Can't parse archive name: $archive"
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   114
    }
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   115
464
c51702debae2 cpan2ips.pl, py2ips.pl: replace "_" by "-" in package names; added Nexenta copyrights
Igor Pashev <igor.pashev@nexenta.com>
parents: 462
diff changeset
   116
    $pkg_name =~ s/_/-/g;
459
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   117
    my $pkg_name_lc = lc $pkg_name;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   118
    blab "Package name: $pkg_name";
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   119
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   120
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   121
    my_mkdir $pkg_name_lc;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   122
    my_chdir $pkg_name_lc;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   123
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   124
    my_mkdir '__srcdir__';
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   125
    my_chdir '__srcdir__';
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   126
    shell_exec qq/wget -O "$archive" "$pkg"/;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   127
    my $sha1sum = get_output_line qq/sha1sum "$archive" | cut -d ' ' -f 1/;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   128
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   129
    if ($arch =~ /zip/) {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   130
        shell_exec qq/unzip "$archive"/;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   131
        fatal "Can't find sources (from zip)" unless -d "${pkg_name}-${pkg_version}";
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   132
        shell_exec "mv ${pkg_name}-${pkg_version}/* .";
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   133
    } else {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   134
        shell_exec qq/tar xf "$archive" --strip-component 1/
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   135
    }
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   136
    shell_exec qq/python setup.py egg_info/;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   137
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   138
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   139
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   140
    my_chdir '../__srcdir__';
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   141
    shell_exec qq!python setup.py install --root=../__destdir__ --prefix=/usr !;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   142
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   143
    # FIXME: versions (kid >= 0.9.6)
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   144
    my @pkg_deps = ();
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   145
    if ( -f "$pkg_name.egg-info/requires.txt") {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   146
        @pkg_deps =
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   147
         map { s/^([-\w]+).*/$1/; lc $_ }
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   148
         grep { /^\w/ }
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   149
         @{get_output "cat $pkg_name.egg-info/requires.txt"}
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   150
    }
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   151
    blab "Dependencies: ", (join ', ', @pkg_deps);
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   152
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   153
    my $pkg_summary = '';
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   154
    for my $dir ( ("$pkg_name.egg-info", '.') ) {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   155
        if ( -f "$dir/PKG-INFO") {
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   156
           $pkg_summary = get_output_line "grep Summary: $dir/PKG-INFO | sed 's/Summary: *//'";
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   157
           last;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   158
        }
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   159
    }
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   160
    my_chdir '..';
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   161
    $pkg_summary =~ s/\.+$//;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   162
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   163
    my $ips_manifest = <<MANIFEST;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   164
<transform file path=usr.*/man/.+ -> default mangler.man.stability uncommitted>
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   165
set name=pkg.fmri value=pkg:/library/python-2/${pkg_name_lc}-$pyversion@\$(IPS_COMPONENT_VERSION),\$(BUILD_VERSION)
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   166
set name=info.classification value="org.opensolaris.category.2008:Development/Python"
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   167
set name=pkg.summary value="$pkg_summary"
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   168
MANIFEST
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   169
    $ips_manifest .= "\n";
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   170
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   171
    $ips_manifest .= "depend fmri=pkg:/runtime/python-$pyversion type=require\n";
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   172
    $ips_manifest .= "depend fmri=pkg:/library/python-2/${_}-$pyversion type=require\n"
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   173
        foreach @pkg_deps;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   174
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   175
    $ips_manifest .= "\n";
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   176
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   177
    $ips_manifest .= join "\n",
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   178
        (map { s![^/]+-packages!vendor-packages!; $_ }
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   179
        @{get_output
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   180
            "cd __destdir__ && \
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   181
            gfind * -type d -printf 'dir path=%p\\n' \
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   182
            gfind * -type f -printf 'file path=%p\\n' \
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   183
            gfind * -type l -printf 'link path=%p target=%l\\n' \
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   184
            "});
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   185
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   186
    $ips_manifest .= "\n";
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   187
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   188
    my $makefile = <<MAKEFILE;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   189
include ../../../make-rules/shared-macros.mk
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   190
COMPONENT_NAME     =  $pkg_name
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   191
COMPONENT_VERSION  =  $pkg_version
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   192
COMPONENT_SRC      =  \$(COMPONENT_NAME)-\$(COMPONENT_VERSION)
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   193
COMPONENT_ARCHIVE  =  \$(COMPONENT_SRC).$arch
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   194
COMPONENT_ARCHIVE_HASH = sha1:$sha1sum
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   195
COMPONENT_ARCHIVE_URL  = $url_dir/\$(COMPONENT_ARCHIVE)
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   196
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   197
include \$(WS_TOP)/make-rules/prep.mk
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   198
include \$(WS_TOP)/make-rules/ips.mk
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   199
include \$(WS_TOP)/make-rules/setup.py.mk
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   200
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   201
build:      \$(BUILD_32)
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   202
install:    \$(INSTALL_32)
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   203
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   204
COMPONENT_TEST_TARGETS = test
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   205
test:       \$(TEST_32)
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   206
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   207
BUILD_PKG_DEPENDENCIES = \$(BUILD_TOOLS)
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   208
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   209
include \$(WS_TOP)/make-rules/depend.mk
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   210
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   211
MAKEFILE
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   212
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   213
    shell_exec "rm -rf __srcdir__ __destdir__";
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   214
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   215
    write_file "$pkg_name_lc-$pyversion.p5m", $ips_manifest;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   216
    write_file 'Makefile', $makefile;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   217
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   218
    my_chdir '..';
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   219
}
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   220
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   221
exit 0;
508c5dddcd51 Added py2ips.pl
Igor Pashev <igor.pashev@nexenta.com>
parents:
diff changeset
   222