build: fix STAGING_DIR cleaning for packages
[openwrt/openwrt.git] / scripts / metadata.pm
index ea38735389a5f4bccdfc8a17358a83823b4a3f05..5300e293e7bf9cdf737fc630f4b68fea9cf045e2 100644 (file)
@@ -238,6 +238,7 @@ sub parse_package_metadata($) {
                /^Build-Types:\s*(.+)\s*$/ and $src->{buildtypes} = [ split /\s+/, $1 ];
                next unless $pkg;
                /^Version: \s*(.+)\s*$/ and $pkg->{version} = $1;
+               /^ABIVersion: \s*(.+)\s*$/ and $pkg->{abiversion} = $1;
                /^Title: \s*(.+)\s*$/ and $pkg->{title} = $1;
                /^Menu: \s*(.+)\s*$/ and $pkg->{menu} = $1;
                /^Submenu: \s*(.+)\s*$/ and $pkg->{submenu} = $1;
@@ -250,6 +251,7 @@ sub parse_package_metadata($) {
                        my @vpkg = split /\s+/, $1;
                        @{$pkg->{provides}} = ($pkg->{name}, @vpkg);
                        foreach my $vpkg (@vpkg) {
+                               next if ($vpkg eq $pkg->{name});
                                $vpackage{$vpkg} or $vpackage{$vpkg} = [];
                                push @{$vpackage{$vpkg}}, $pkg;
                        }
@@ -283,8 +285,10 @@ sub parse_package_metadata($) {
 
                        for my $ugspec (@ugspecs) {
                                my @ugspec = split /:/, $ugspec, 2;
-                               parse_package_metadata_usergroup($src->{makefile}, "user", \%usernames, \%userids, $ugspec[0]) or return 0;
-                               if (@ugspec > 1) {
+                               if ($ugspec[0]) {
+                                       parse_package_metadata_usergroup($src->{makefile}, "user", \%usernames, \%userids, $ugspec[0]) or return 0;
+                               }
+                               if ($ugspec[1]) {
                                        parse_package_metadata_usergroup($src->{makefile}, "group", \%groupnames, \%groupids, $ugspec[1]) or return 0;
                                }
                        }