Ticket #39: osgideps.pl.2.patch

File osgideps.pl.2.patch, 3.6 kB (added by alcapcom, 3 years ago)

osgideps.pl.patch 2007-03-06

  • 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 (@_) { 
     
    7161                        } 
    7262                        if (m/(^Bundle-Version: )(.*)/) { 
    7363                                $version = $2; 
    74                                 $version = fixVersion($version); 
    7564                        } 
    7665                        if (m/(^(Export-Package): )(.*)$/) { 
    7766                                my $bunlist = "$3"."\n"; 
     
    10089for $bundle (@bundlelist) { 
    10190        $list .= "osgi(".$bundle->{NAME}.")".$bundle->{VERSION}."\n"; 
    10291} 
    103 # For now we dont take Require-Bundle AND Import-Package in account 
    104 #print $list; 
     92print $list; 
    10593} 
    10694 
    10795 
     
    121109                                        open(MANIFEST, "$MANIFEST_NAME"); 
    122110                                        chdir $cdir; 
    123111                                } 
    124                         } else  
     112                        } else
    125113                                open(MANIFEST, "$file"); 
    126114                        } 
    127115                        my %reqcomp = (); 
     
    146134for $bundle (@bundlelist) { 
    147135        $list .= "osgi(".$bundle->{NAME}.")".$bundle->{VERSION}."\n"; 
    148136} 
    149 # For now we dont take Require-Bundle AND Import-Package in account 
    150 #print $list; 
     137print $list; 
    151138} 
    152139 
    153140sub parsePkgString { 
     
    157144        $bunstr =~ s/\n//g; 
    158145        $bunstr =~ s/[^[:print:]]//g; 
    159146        $bunstr =~ s/("[[:alnum:]|\-|\_|\.|\(|\)|\[|\]]+)(,)([[:alnum:]|\-|\_|\.|\(|\)|\[|\]]+")/$1 $3/g; 
     147        # Remove uses bundle from Export-Package 
     148        $bunstr =~ s/uses:="[[:alnum:]|\-|\_|\.|\(|\)|\[|\]|,]+"//g; 
     149        # Remove optional dependencies  
     150        $bunstr =~ s/,[[:alnum:]|\-|\_|\.|\(|\)|\[|\]]+;resolution:=optional//g; 
     151        # Remove x-friends  
     152        $bunstr =~ s/;x-friends:="[[:alnum:]|\-|\_|\.|\(|\)|\[|\]|,]+"//g; 
    160153        @reqcomp = split /,/g, $bunstr; 
    161154        foreach $reqelement (@reqcomp) { 
    162155                @reqelementfrmnt = split /;/g, $reqelement; 
     
    170163                        } 
    171164                } 
    172165                $version = parseVersion($version); 
    173                 $version = fixVersion($version); 
    174166                # dirty fix for provides that contain " char 
    175167                $name =~ s/\"//g; 
    176168                push @return, { NAME=>"$name", VERSION=>"$version"}; 
     
    183175        my $ver = $_[0]; 
    184176        if ($ver eq "") { return "";} 
    185177        if ($ver =~ m/(^[\[|\(])(.+)\ (.+)([\]|\)]$)/) { 
    186                 # FIXME: The right rpm match of osgi version [1,2) seems to be <= 2 
     178                # FIXME: The right RPM match of osgi version [1,2) seem to be <= 2 
    187179                # but when you look at the requires >= look more permssive/correct? 
    188180                ($1 eq "\[") ? return " >= $2" : return " > $2"; 
    189181        } else { 
    190                 return " = $ver"; 
     182                # FIXME: Same here, equal seem to be the correct version match operator. 
     183                return " >= $ver"; 
    191184        } 
    192185        return $ver; 
    193186} 
    194187 
    195 sub fixVersion { 
    196         my $version = $_[0]; 
    197         # remove version qualifier. 
    198         $version =~ s/\.v.[0-9]*.*//g; 
    199         # We try to match RPM version, so remove last .0 
    200         $version =~ s/\.0$//g; 
    201         return $version; 
    202 } 
    203