summaryrefslogtreecommitdiffstats
path: root/scripts/metadata.pm
diff options
context:
space:
mode:
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2009-10-17 22:11:21 +0000
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2009-10-17 22:11:21 +0000
commit5b6977f54e7aa62bee8851fc8df40bf631f10c2d (patch)
treec7c41c04b9c3f7c75ccdc39eab64e28f5cf2bce2 /scripts/metadata.pm
parent97abaa960a0d0265620b19648300845b35fb6a55 (diff)
add experimental support for a new menuconfig submenu "Package features".
allows selection between multiple packages providing the same feature, which affects dependencies of other packages. will be used e.g. for choosing between DirectFB and X.org for libraries like GTK2 git-svn-id: svn://svn.openwrt.org/openwrt/trunk@18056 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'scripts/metadata.pm')
-rw-r--r--scripts/metadata.pm24
1 files changed, 23 insertions, 1 deletions
diff --git a/scripts/metadata.pm b/scripts/metadata.pm
index dd62b4c04..8302728be 100644
--- a/scripts/metadata.pm
+++ b/scripts/metadata.pm
@@ -2,13 +2,14 @@ package metadata;
use base 'Exporter';
use strict;
use warnings;
-our @EXPORT = qw(%package %srcpackage %category %subdir %preconfig clear_packages parse_package_metadata get_multiline);
+our @EXPORT = qw(%package %srcpackage %category %subdir %preconfig %features clear_packages parse_package_metadata get_multiline);
our %package;
our %preconfig;
our %srcpackage;
our %category;
our %subdir;
+our %features;
sub get_multiline {
my $fh = shift;
@@ -28,11 +29,13 @@ sub clear_packages() {
%package = ();
%srcpackage = ();
%category = ();
+ %features = ();
}
sub parse_package_metadata($) {
my $file = shift;
my $pkg;
+ my $feature;
my $makefile;
my $preconfig;
my $subdir;
@@ -55,6 +58,7 @@ sub parse_package_metadata($) {
};
next unless $src;
/^Package:\s*(.+?)\s*$/ and do {
+ undef $feature;
$pkg = {};
$pkg->{src} = $src;
$pkg->{makefile} = $makefile;
@@ -69,6 +73,24 @@ sub parse_package_metadata($) {
$package{$1} = $pkg;
push @{$srcpackage{$src}}, $pkg;
};
+ /^Feature:\s*(.+?)\s*$/ and do {
+ undef $pkg;
+ $feature = {};
+ $feature->{name} = $1;
+ $feature->{priority} = 0;
+ };
+ $feature and do {
+ /^Target-Name:\s*(.+?)\s*$/ and do {
+ $features{$1} or $features{$1} = [];
+ push @{$features{$1}}, $feature;
+ };
+ /^Target-Title:\s*(.+?)\s*$/ and $feature->{target_title} = $1;
+ /^Feature-Priority:\s*(\d+)\s*$/ and $feature->{priority} = $1;
+ /^Feature-Name:\s*(.+?)\s*$/ and $feature->{title} = $1;
+ /^Feature-Description:/ and $feature->{description} = get_multiline(\*FILE, "\t\t\t");
+ next;
+ };
+ next unless $pkg;
/^Version: \s*(.+)\s*$/ and $pkg->{version} = $1;
/^Title: \s*(.+)\s*$/ and $pkg->{title} = $1;
/^Menu: \s*(.+)\s*$/ and $pkg->{menu} = $1;