Ticket #39: osgideps.pl-2009-02-03.patch

File osgideps.pl-2009-02-03.patch, 3.3 kB (added by alcapcom, 3 years ago)
  • a/scripts/osgideps.pl

    old new  
    11#!/usr/bin/perl 
    22 
    3  
    43use Cwd; 
    54use Getopt::Long; 
    6  
     5use File::Temp qw/ tempdir /; 
    76 
    87$cdir = getcwd(); 
    9 $TEMPDIR="/tmp"; 
    10 $MANIFEST_NAME="META-INF/MANIFEST.MF"; 
    11  
     8$TEMPDIR = tempdir($template, CLEANUP => 1); 
     9$MANIFEST_NAME = "META-INF/MANIFEST.MF"; 
    1210 
    1311# prepare temporary directory 
    1412if (! (-d $TEMPDIR)) { 
     
    1816 
    1917# parse options 
    2018my ($show_provides, $show_requires); 
    21  
    2219my $result = GetOptions("provides" => \$show_provides, 
    23                         "requires" => \$show_requires); 
    24  
     20                "requires" => \$show_requires); 
    2521exit(1) if (not $result); 
    2622 
    27  
    28  
     23# run selected sub 
    2924@allfiles = <STDIN>; 
    30  
    3125if ($show_provides) { 
    3226        do_provides(@allfiles); 
    3327} 
    34  
    3528if ($show_requires) { 
    3629        do_requires(@allfiles); 
    3730} 
    38  
    39  
    4031exit(0); 
    4132 
    4233 
    43  
    4434sub do_provides { 
    4535 
    4636foreach $file (@_) { 
     
    5545                                chdir $TEMPDIR; 
    5646                                `jar xf $file $MANIFEST_NAME`;   
    5747                                open(MANIFEST, "$MANIFEST_NAME"); 
    58                               chdir $cdir; 
     48                              chdir $cdir; 
    5949                        } 
    6050                } else  { 
    6151                        open(MANIFEST, "$file"); 
     
    10090for $bundle (@bundlelist) { 
    10191        $list .= "osgi(".$bundle->{NAME}.")".$bundle->{VERSION}."\n"; 
    10292} 
    103 # For now we dont take Require-Bundle AND Import-Package in account 
    104 #print $list; 
     93print $list; 
    10594} 
    10695 
    10796 
     
    121110                                        open(MANIFEST, "$MANIFEST_NAME"); 
    122111                                        chdir $cdir; 
    123112                                } 
    124                         } else  
     113                        } else
    125114                                open(MANIFEST, "$file"); 
    126115                        } 
    127116                        my %reqcomp = (); 
     
    146135for $bundle (@bundlelist) { 
    147136        $list .= "osgi(".$bundle->{NAME}.")".$bundle->{VERSION}."\n"; 
    148137} 
    149 # For now we dont take Require-Bundle AND Import-Package in account 
    150 #print $list; 
     138print $list; 
    151139} 
    152140 
    153141sub parsePkgString { 
     
    157145        $bunstr =~ s/\n//g; 
    158146        $bunstr =~ s/[^[:print:]]//g; 
    159147        $bunstr =~ s/("[[:alnum:]|\-|\_|\.|\(|\)|\[|\]]+)(,)([[:alnum:]|\-|\_|\.|\(|\)|\[|\]]+")/$1 $3/g; 
     148        # Remove uses bundle from Export-Package props   
     149        $bunstr =~ s/uses:="[[:alnum:]|\-|\_|\.|\(|\)|\[|\]|,]+"//g; 
    160150        @reqcomp = split /,/g, $bunstr; 
    161151        foreach $reqelement (@reqcomp) { 
    162152                @reqelementfrmnt = split /;/g, $reqelement; 
     
    183173        my $ver = $_[0]; 
    184174        if ($ver eq "") { return "";} 
    185175        if ($ver =~ m/(^[\[|\(])(.+)\ (.+)([\]|\)]$)/) { 
    186                 # FIXME: The right rpm match of osgi version [1,2) seems to be <= 2 
     176                # FIXME: The right RPM match of osgi version [1,2) seems to be <= 2 
    187177                # but when you look at the requires >= look more permssive/correct? 
    188178                ($1 eq "\[") ? return " >= $2" : return " > $2"; 
    189179        } else { 
    190                 return " = $ver"; 
     180                # FIXME: Same here, equal seem to be the correct version match operation but Eclipse  
     181                # OSGI implementation seem to be permissive about version check. 
     182                return " >= $ver"; 
    191183        } 
    192184        return $ver; 
    193185} 
     
    196188        my $version = $_[0]; 
    197189        # remove version qualifier. 
    198190        $version =~ s/\.v.[0-9]*.*//g; 
    199         # We try to match RPM version, so remove last .0 
    200         $version =~ s/\.0$//g; 
     191        # rpm don't manage .0 at the end of the version string like OSGI do.  
     192        $version =~ s/[0|\.]*$//g; 
    201193        return $version; 
    202194} 
    203195