))
endef
-define Feature/Default
- TARGET_NAME:=
- TARGET_TITLE:=
- PRIORITY:=
- NAME:=
-endef
-
-define Feature
- $(eval $(Feature/Default))
- $(eval $(Feature/$(1)))
- $(if $(DUMP),$(call Dumpinfo/Feature,$(1)))
-endef
-
-define Dumpinfo/Feature
-$(info Feature: $(TARGET_NAME)_$(1)
-Target-Name: $(TARGET_NAME)
-Target-Title: $(TARGET_TITLE)
-Feature-Name: $(NAME)
-$(if $(PRIORITY),Feature-Priority: $(PRIORITY)
-)Feature-Description:
-$(Feature/$(1)/description)
-@@
-)
-endef
-
endif
use base 'Exporter';
use strict;
use warnings;
-our @EXPORT = qw(%package %vpackage %srcpackage %category %features %overrides clear_packages parse_package_metadata parse_target_metadata get_multiline @ignore %usernames %groupnames);
+our @EXPORT = qw(%package %vpackage %srcpackage %category %overrides clear_packages parse_package_metadata parse_target_metadata get_multiline @ignore %usernames %groupnames);
our %package;
our %vpackage;
our %srcpackage;
our %category;
-our %features;
our %overrides;
our @ignore;
%vpackage = ();
%srcpackage = ();
%category = ();
- %features = ();
%overrides = ();
%usernames = ();
%groupnames = ();
sub parse_package_metadata($) {
my $file = shift;
my $pkg;
- my $feature;
my $src;
my $override;
my %ignore = map { $_ => 1 } @ignore;
};
next unless $src;
/^Package:\s*(.+?)\s*$/ and do {
- undef $feature;
$pkg = {};
$pkg->{src} = $src;
$pkg->{name} = $1;
$vpackage{$1} or $vpackage{$1} = [];
unshift @{$vpackage{$1}}, $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 unless $src->{ignore};
- };
- /^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;
- };
/^Build-Depends: \s*(.+)\s*$/ and $src->{builddepends} = [ split /\s+/, $1 ];
/^Build-Depends\/(\w+): \s*(.+)\s*$/ and $src->{"builddepends/$1"} = [ split /\s+/, $2 ];
/^Build-Types:\s*(.+)\s*$/ and $src->{buildtypes} = [ split /\s+/, $1 ];
undef $category{$cat};
}
-sub print_package_features() {
- keys %features > 0 or return;
- print "menu \"Package features\"\n";
- foreach my $n (keys %features) {
- my @features = sort { $b->{priority} <=> $a->{priority} or $a->{title} cmp $b->{title} } @{$features{$n}};
- print <<EOF;
-choice
- prompt "$features[0]->{target_title}"
- default FEATURE_$features[0]->{name}
-EOF
-
- foreach my $feature (@features) {
- print <<EOF;
- config FEATURE_$feature->{name}
- bool "$feature->{title}"
-EOF
- $feature->{description} =~ /\w/ and do {
- print "\t\thelp\n".$feature->{description}."\n";
- };
- }
- print "endchoice\n"
- }
- print "endmenu\n\n";
-}
-
sub print_package_overrides() {
keys %overrides > 0 or return;
print "\tconfig OVERRIDE_PKGS\n";
if (scalar glob "package/feeds/*/*/image-config.in") {
print "source \"package/feeds/*/*/image-config.in\"\n";
}
- print_package_features();
print_package_config_category 'Base system';
foreach my $cat (sort {uc($a) cmp uc($b)} keys %category) {
print_package_config_category $cat;