X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fopenwrt.git;a=blobdiff_plain;f=scripts%2Fmetadata.pm;h=8334f26d3179a0eb83aa1aa976778ff5828faf45;hp=09273df3ad543e2001c392d26144637f72a6fa8b;hb=9754a9c606d245f8d3721bd65276b12cc944426e;hpb=797b0459c43a6c3afc6ea264430777c76591852a diff --git a/scripts/metadata.pm b/scripts/metadata.pm index 09273df3ad..8334f26d31 100644 --- a/scripts/metadata.pm +++ b/scripts/metadata.pm @@ -2,7 +2,7 @@ package metadata; use base 'Exporter'; use strict; use warnings; -our @EXPORT = qw(%package %srcpackage %category %subdir %preconfig %features %overrides clear_packages parse_package_metadata parse_target_metadata get_multiline); +our @EXPORT = qw(%package %srcpackage %category %subdir %preconfig %features %overrides clear_packages parse_package_metadata parse_target_metadata get_multiline @ignore); our %package; our %preconfig; @@ -11,6 +11,7 @@ our %category; our %subdir; our %features; our %overrides; +our @ignore; sub get_multiline { my $fh = shift; @@ -67,7 +68,6 @@ sub parse_target_metadata($) { } }; /^Target-Name:\s*(.+)\s*$/ and $target->{name} = $1; - /^Target-Path:\s*(.+)\s*$/ and $target->{path} = $1; /^Target-Arch:\s*(.+)\s*$/ and $target->{arch} = $1; /^Target-Arch-Packages:\s*(.+)\s*$/ and $target->{arch_packages} = $1; /^Target-Features:\s*(.+)\s*$/ and $target->{features} = [ split(/\s+/, $1) ]; @@ -84,15 +84,19 @@ sub parse_target_metadata($) { $profile = { id => $1, name => $1, + priority => 999, packages => [] }; + $1 =~ /^DEVICE_/ and $target->{has_devices} = 1; push @{$target->{profiles}}, $profile; }; /^Target-Profile-Name:\s*(.+)\s*$/ and $profile->{name} = $1; + /^Target-Profile-Priority:\s*(\d+)\s*$/ and do { + $profile->{priority} = $1; + $target->{sort} = 1; + }; /^Target-Profile-Packages:\s*(.*)\s*$/ and $profile->{packages} = [ split(/\s+/, $1) ]; /^Target-Profile-Description:\s*(.*)\s*/ and $profile->{desc} = get_multiline(*FILE); - /^Target-Profile-Config:/ and $profile->{config} = get_multiline(*FILE, "\t"); - /^Target-Profile-Kconfig:/ and $profile->{kconfig} = 1; } close FILE; foreach my $target (@target) { @@ -107,6 +111,11 @@ sub parse_target_metadata($) { packages => [] } ]; + + $target->{sort} and @{$target->{profiles}} = sort { + $a->{priority} <=> $b->{priority} or + $a->{name} cmp $b->{name}; + } @{$target->{profiles}}; } return @target; } @@ -130,6 +139,7 @@ sub parse_package_metadata($) { my $subdir; my $src; my $override; + my %ignore = map { $_ => 1 } @ignore; open FILE, "<$file" or do { warn "Cannot open '$file': $!\n"; @@ -155,6 +165,7 @@ sub parse_package_metadata($) { /^Package:\s*(.+?)\s*$/ and do { undef $feature; $pkg = {}; + $pkg->{ignore} = $ignore{$src}; $pkg->{src} = $src; $pkg->{makefile} = $makefile; $pkg->{name} = $1; @@ -178,7 +189,7 @@ sub parse_package_metadata($) { $feature and do { /^Target-Name:\s*(.+?)\s*$/ and do { $features{$1} or $features{$1} = []; - push @{$features{$1}}, $feature; + push @{$features{$1}}, $feature unless $ignore{$src}; }; /^Target-Title:\s*(.+?)\s*$/ and $feature->{target_title} = $1; /^Feature-Priority:\s*(\d+)\s*$/ and $feature->{priority} = $1; @@ -219,7 +230,7 @@ sub parse_package_metadata($) { /^Build-Depends: \s*(.+)\s*$/ and $pkg->{builddepends} = [ split /\s+/, $1 ]; /^Build-Depends\/(\w+): \s*(.+)\s*$/ and $pkg->{"builddepends/$1"} = [ split /\s+/, $2 ]; /^Build-Types:\s*(.+)\s*$/ and $pkg->{buildtypes} = [ split /\s+/, $1 ]; - /^Feed:\s*(.+?)\s*$/ and $pkg->{feed} = $1; + /^Repository:\s*(.+?)\s*$/ and $pkg->{repository} = $1; /^Category: \s*(.+)\s*$/ and do { $pkg->{category} = $1; defined $category{$1} or $category{$1} = {}; @@ -245,7 +256,7 @@ sub parse_package_metadata($) { $preconfig = { id => $1 }; - $preconfig{$pkgname}->{$1} = $preconfig; + $preconfig{$pkgname}->{$1} = $preconfig unless $ignore{$src}; } }; /^Preconfig-Type:\s*(.*?)\s*$/ and $preconfig->{type} = $1;