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 1 1 #!/usr/bin/perl 2 2 3 4 3 use Cwd; 5 4 use Getopt::Long; 6 5 use File::Temp qw/ tempdir /; 7 6 8 7 $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"; 12 10 13 11 # prepare temporary directory 14 12 if (! (-d $TEMPDIR)) { … … 18 16 19 17 # parse options 20 18 my ($show_provides, $show_requires); 21 22 19 my $result = GetOptions("provides" => \$show_provides, 23 "requires" => \$show_requires); 24 20 "requires" => \$show_requires); 25 21 exit(1) if (not $result); 26 22 27 28 23 # run selected sub 29 24 @allfiles = <STDIN>; 30 31 25 if ($show_provides) { 32 26 do_provides(@allfiles); 33 27 } 34 35 28 if ($show_requires) { 36 29 do_requires(@allfiles); 37 30 } 38 39 40 31 exit(0); 41 32 42 33 43 44 34 sub do_provides { 45 35 46 36 foreach $file (@_) { … … 55 45 chdir $TEMPDIR; 56 46 `jar xf $file $MANIFEST_NAME`; 57 47 open(MANIFEST, "$MANIFEST_NAME"); 58 chdir $cdir;48 chdir $cdir; 59 49 } 60 50 } else { 61 51 open(MANIFEST, "$file"); … … 100 90 for $bundle (@bundlelist) { 101 91 $list .= "osgi(".$bundle->{NAME}.")".$bundle->{VERSION}."\n"; 102 92 } 103 # For now we dont take Require-Bundle AND Import-Package in account 104 #print $list; 93 print $list; 105 94 } 106 95 107 96 … … 121 110 open(MANIFEST, "$MANIFEST_NAME"); 122 111 chdir $cdir; 123 112 } 124 } else {113 } else { 125 114 open(MANIFEST, "$file"); 126 115 } 127 116 my %reqcomp = (); … … 146 135 for $bundle (@bundlelist) { 147 136 $list .= "osgi(".$bundle->{NAME}.")".$bundle->{VERSION}."\n"; 148 137 } 149 # For now we dont take Require-Bundle AND Import-Package in account 150 #print $list; 138 print $list; 151 139 } 152 140 153 141 sub parsePkgString { … … 157 145 $bunstr =~ s/\n//g; 158 146 $bunstr =~ s/[^[:print:]]//g; 159 147 $bunstr =~ s/("[[:alnum:]|\-|\_|\.|\(|\)|\[|\]]+)(,)([[:alnum:]|\-|\_|\.|\(|\)|\[|\]]+")/$1 $3/g; 148 # Remove uses bundle from Export-Package props 149 $bunstr =~ s/uses:="[[:alnum:]|\-|\_|\.|\(|\)|\[|\]|,]+"//g; 160 150 @reqcomp = split /,/g, $bunstr; 161 151 foreach $reqelement (@reqcomp) { 162 152 @reqelementfrmnt = split /;/g, $reqelement; … … 183 173 my $ver = $_[0]; 184 174 if ($ver eq "") { return "";} 185 175 if ($ver =~ m/(^[\[|\(])(.+)\ (.+)([\]|\)]$)/) { 186 # FIXME: The right rpmmatch of osgi version [1,2) seems to be <= 2176 # FIXME: The right RPM match of osgi version [1,2) seems to be <= 2 187 177 # but when you look at the requires >= look more permssive/correct? 188 178 ($1 eq "\[") ? return " >= $2" : return " > $2"; 189 179 } 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"; 191 183 } 192 184 return $ver; 193 185 } … … 196 188 my $version = $_[0]; 197 189 # remove version qualifier. 198 190 $version =~ s/\.v.[0-9]*.*//g; 199 # We try to match RPM version, so remove last .0200 $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; 201 193 return $version; 202 194 } 203 195

