[OpenWrt-Devel] [Patch v3 3/4] build: propagate override information to .config file

Mathieu Olivari mathieu at qca.qualcomm.com
Mon Feb 2 22:20:28 EST 2015


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 at qca.qualcomm.com>
---
 scripts/metadata.pl |  8 ++++++++
 scripts/metadata.pm | 11 ++++++++++-
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/scripts/metadata.pl b/scripts/metadata.pl
index ea437f5..abf8248 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 fc86573..4bf70bb 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;
 		};
-- 
1.9.1
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list