tools/py2ips.pl
changeset 469 d39d97f5335c
parent 467 7409853656b6
equal deleted inserted replaced
468:ba6c4262c8df 469:d39d97f5335c
   137 
   137 
   138 
   138 
   139     my_chdir '../__srcdir__';
   139     my_chdir '../__srcdir__';
   140     shell_exec 'python setup.py install --root=../__destdir__ --prefix=/usr';
   140     shell_exec 'python setup.py install --root=../__destdir__ --prefix=/usr';
   141 
   141 
   142     # FIXME: versions (kid >= 0.9.6)
   142     my %pkg_deps = ();
   143     my @pkg_deps = ();
       
   144     if ( -f "$pkg_name.egg-info/requires.txt") {
   143     if ( -f "$pkg_name.egg-info/requires.txt") {
   145         @pkg_deps =
   144         my $type = 'require'; # All deps before the first section ([...])
   146          map { s/^([-\w]+).*/$1/; lc $_ }
   145                                # are mandatory; others are optional
   147          grep { /^\w/ }
   146         foreach (@{get_output "cat $pkg_name.egg-info/requires.txt"}) {
   148          @{get_output "cat $pkg_name.egg-info/requires.txt"}
   147             $type = 'optional' if /^\[.+\]/;
   149     }
   148             next unless /^\w/;
   150     uniq \@pkg_deps;
   149             s/^([-.\w]+).*/$1/;
   151     if (grep {$_ eq 'setuptools'} @pkg_deps) {
   150             my $pkg = lc;
   152         @pkg_deps = map {$_ eq 'setuptools' ? 'distribute' : $_} @pkg_deps;
   151             $pkg = 'distribute' if $pkg eq 'setuptools';
   153         warning "Dependencies: 'setuptools' replaced with 'distribute'"
   152             if (! exists $pkg_deps{$pkg}) {
   154     }
   153                 $pkg_deps{$pkg} = $type;
   155     blab 'Dependencies: ', (join ', ', @pkg_deps);
   154             } else {
       
   155                 warning "Dependency on `$pkg' already set to $pkg_deps{$pkg}"
       
   156                     if $pkg_deps{$pkg} ne $type
       
   157             }
       
   158         }
       
   159     }
   156 
   160 
   157     my $pkg_summary = '';
   161     my $pkg_summary = '';
   158     for my $dir ( ("$pkg_name.egg-info", '.') ) {
   162     for my $dir ( ("lib/$pkg_name.egg-info", "$pkg_name.egg-info", '.') ) {
   159         if ( -f "$dir/PKG-INFO") {
   163         if ( -f "$dir/PKG-INFO") {
   160            $pkg_summary = get_output_line "grep Summary: $dir/PKG-INFO | sed 's/Summary: *//'";
   164            $pkg_summary = get_output_line "grep Summary: $dir/PKG-INFO | sed 's/Summary: *//'";
   161            last;
   165            last;
   162         }
   166         }
   163     }
   167     }
   171 set name=pkg.summary value="$pkg_summary"
   175 set name=pkg.summary value="$pkg_summary"
   172 MANIFEST
   176 MANIFEST
   173     $ips_manifest .= "\n";
   177     $ips_manifest .= "\n";
   174 
   178 
   175     $ips_manifest .= "depend fmri=pkg:/runtime/python-$pyversion type=require\n";
   179     $ips_manifest .= "depend fmri=pkg:/runtime/python-$pyversion type=require\n";
   176     $ips_manifest .= "depend fmri=pkg:/library/python-2/${_}-$pyversion type=require\n"
   180     $ips_manifest .= "depend fmri=pkg:/library/python-2/${_}-$pyversion type=$pkg_deps{$_}\n"
   177         foreach @pkg_deps;
   181         foreach keys %pkg_deps;
   178 
   182 
   179     $ips_manifest .= "\n";
   183     $ips_manifest .= "\n";
   180 
   184 
   181     $ips_manifest .= join "\n",
   185     $ips_manifest .= join "\n",
   182         (map { s![^/]+-packages!vendor-packages!; $_ }
   186         (map { s![^/]+-packages!vendor-packages!; $_ }