aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Crispin <john@openwrt.org>2015-02-09 12:09:43 +0000
committerJohn Crispin <john@openwrt.org>2015-02-09 12:09:43 +0000
commite2684c218d0bb5f132eb1c9b80cdafafd828fe21 (patch)
tree4c77faf6b78c540434dc0edf476bcdfa2e050cf2
parentb7cf4cc61300e6e6023ae6a494991e5c57f90656 (diff)
downloadupstream-e2684c218d0bb5f132eb1c9b80cdafafd828fe21.tar.gz
upstream-e2684c218d0bb5f132eb1c9b80cdafafd828fe21.tar.bz2
upstream-e2684c218d0bb5f132eb1c9b80cdafafd828fe21.zip
build: propagate override information to .config file
With this change, override information is now parsed from the metadata and put in the %packages hash. A new hash - %overrides - is created and exported, to be used during the .config-package.in generation. If an override is detected, a new option CONFIG_OVERRIDE_PKGS will be created in the .config, and will contain a space-separated list of all the overridden packages. Signed-off-by: Mathieu Olivari <mathieu@qca.qualcomm.com> SVN-Revision: 44336
-rwxr-xr-xscripts/metadata.pl8
-rw-r--r--scripts/metadata.pm11
2 files changed, 18 insertions, 1 deletions
diff --git a/scripts/metadata.pl b/scripts/metadata.pl
index ea437f5268..abf8248d35 100755
--- a/scripts/metadata.pl
+++ b/scripts/metadata.pl
@@ -679,6 +679,13 @@ EOF
print "endmenu\n\n";
}
+sub print_package_overrides() {
+ keys %overrides > 0 or return;
+ print "\tconfig OVERRIDE_PKGS\n";
+ print "\t\tstring\n";
+ print "\t\tdefault \"".join(" ", keys %overrides)."\"\n\n";
+}
+
sub gen_package_config() {
parse_package_metadata($ARGV[0]) or exit 1;
print "menuconfig IMAGEOPT\n\tbool \"Image configuration\"\n\tdefault n\n";
@@ -704,6 +711,7 @@ EOF
foreach my $cat (sort {uc($a) cmp uc($b)} keys %category) {
print_package_config_category $cat;
}
+ print_package_overrides();
}
sub get_conditional_dep($$) {
diff --git a/scripts/metadata.pm b/scripts/metadata.pm
index fc8657322e..4bf70bbbde 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 clear_packages parse_package_metadata get_multiline);
+our @EXPORT = qw(%package %srcpackage %category %subdir %preconfig %features %overrides clear_packages parse_package_metadata get_multiline);
our %package;
our %preconfig;
@@ -10,6 +10,7 @@ our %srcpackage;
our %category;
our %subdir;
our %features;
+our %overrides;
sub get_multiline {
my $fh = shift;
@@ -30,6 +31,7 @@ sub clear_packages() {
%srcpackage = ();
%category = ();
%features = ();
+ %overrides = ();
}
sub parse_package_metadata($) {
@@ -40,6 +42,7 @@ sub parse_package_metadata($) {
my $preconfig;
my $subdir;
my $src;
+ my $override;
open FILE, "<$file" or do {
warn "Cannot open '$file': $!\n";
@@ -54,8 +57,13 @@ sub parse_package_metadata($) {
$subdir =~ s/^package\///;
$subdir{$src} = $subdir;
$srcpackage{$src} = [];
+ $override = "";
undef $pkg;
};
+ /^Override: \s*(.+?)\s*$/ and do {
+ $override = $1;
+ $overrides{$src} = 1;
+ };
next unless $src;
/^Package:\s*(.+?)\s*$/ and do {
undef $feature;
@@ -70,6 +78,7 @@ sub parse_package_metadata($) {
$pkg->{buildtypes} = [];
$pkg->{subdir} = $subdir;
$pkg->{tristate} = 1;
+ $pkg->{override} = $override;
$package{$1} = $pkg;
push @{$srcpackage{$src}}, $pkg;
};