Ticket #39: osgideps.pl.2.patch
| File osgideps.pl.2.patch, 3.6 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 (@_) { … … 71 61 } 72 62 if (m/(^Bundle-Version: )(.*)/) { 73 63 $version = $2; 74 $version = fixVersion($version);75 64 } 76 65 if (m/(^(Export-Package): )(.*)$/) { 77 66 my $bunlist = "$3"."\n"; … … 100 89 for $bundle (@bundlelist) { 101 90 $list .= "osgi(".$bundle->{NAME}.")".$bundle->{VERSION}."\n"; 102 91 } 103 # For now we dont take Require-Bundle AND Import-Package in account 104 #print $list; 92 print $list; 105 93 } 106 94 107 95 … … 121 109 open(MANIFEST, "$MANIFEST_NAME"); 122 110 chdir $cdir; 123 111 } 124 } else {112 } else { 125 113 open(MANIFEST, "$file"); 126 114 } 127 115 my %reqcomp = (); … … 146 134 for $bundle (@bundlelist) { 147 135 $list .= "osgi(".$bundle->{NAME}.")".$bundle->{VERSION}."\n"; 148 136 } 149 # For now we dont take Require-Bundle AND Import-Package in account 150 #print $list; 137 print $list; 151 138 } 152 139 153 140 sub parsePkgString { … … 157 144 $bunstr =~ s/\n//g; 158 145 $bunstr =~ s/[^[:print:]]//g; 159 146 $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; 160 153 @reqcomp = split /,/g, $bunstr; 161 154 foreach $reqelement (@reqcomp) { 162 155 @reqelementfrmnt = split /;/g, $reqelement; … … 170 163 } 171 164 } 172 165 $version = parseVersion($version); 173 $version = fixVersion($version);174 166 # dirty fix for provides that contain " char 175 167 $name =~ s/\"//g; 176 168 push @return, { NAME=>"$name", VERSION=>"$version"}; … … 183 175 my $ver = $_[0]; 184 176 if ($ver eq "") { return "";} 185 177 if ($ver =~ m/(^[\[|\(])(.+)\ (.+)([\]|\)]$)/) { 186 # FIXME: The right rpm match of osgi version [1,2) seemsto be <= 2178 # FIXME: The right RPM match of osgi version [1,2) seem to be <= 2 187 179 # but when you look at the requires >= look more permssive/correct? 188 180 ($1 eq "\[") ? return " >= $2" : return " > $2"; 189 181 } else { 190 return " = $ver"; 182 # FIXME: Same here, equal seem to be the correct version match operator. 183 return " >= $ver"; 191 184 } 192 185 return $ver; 193 186 } 194 187 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 .0200 $version =~ s/\.0$//g;201 return $version;202 }203

