some cleanups in the metadata.pl script; allow target profiles to add overrides for menuconfig
some cleanups in the metadata.pl script; allow target profiles to add overrides for menuconfig

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@6648 3c298f89-4303-0410-b956-a3cf2f4a3e73

--- a/include/kernel-build.mk
+++ b/include/kernel-build.mk
@@ -220,6 +220,7 @@
 define Profile
   $(eval $(call Profile/Default))
   $(eval $(call Profile/$(1)))
+  $(eval $(call shexport,Profile/$(1)/Config))
   $(eval $(call shexport,Profile/$(1)/Description))
   DUMPINFO += \
 	echo "Target-Profile: $(1)"; \
@@ -228,6 +229,9 @@
 	if [ -f ./config/profile-$(1) ]; then \
 		echo "Target-Profile-Kconfig: yes"; \
 	fi; \
+	echo "Target-Profile-Config: "; \
+	getvar "$(call shvar,Profile/$(1)/Config)"; \
+	echo "@@"; \
 	echo "Target-Profile-Description:"; \
 	getvar "$(call shvar,Profile/$(1)/Description)"; \
 	echo "@@"; \

--- a/scripts/metadata.pl
+++ b/scripts/metadata.pl
@@ -4,6 +4,18 @@
 my %package;
 my %srcpackage;
 my %category;
+
+sub get_multiline {
+	my $prefix = shift;
+	my $str;
+	while (<>) {
+		last if /^@@/;
+		s/^\s*//g;
+		$str .= (($_ and $prefix) ? $prefix . $_ : $_);
+	}
+
+	return $str;
+}
 
 sub parse_target_metadata() {
 	my ($target, @target, $profile);	
@@ -25,14 +37,7 @@
 		/^Target-Path:\s*(.+)\s*$/ and $target->{path} = $1;
 		/^Target-Arch:\s*(.+)\s*$/ and $target->{arch} = $1;
 		/^Target-Features:\s*(.+)\s*$/ and $target->{features} = [ split(/\s+/, $1) ];
-		/^Target-Description:/ and do {
-			my $desc;
-			while (<>) {
-				last if /^@@/;
-				$desc .= $_;
-			}
-			$target->{desc} = $desc;
-		};
+		/^Target-Description:/ and $target->{desc} = get_multiline();
 		/^Linux-Version:\s*(.+)\s*$/ and $target->{version} = $1;
 		/^Linux-Release:\s*(.+)\s*$/ and $target->{release} = $1;
 		/^Linux-Kernel-Arch:\s*(.+)\s*$/ and $target->{karch} = $1;
@@ -47,14 +52,8 @@
 		};
 		/^Target-Profile-Name:\s*(.+)\s*$/ and $profile->{name} = $1;
 		/^Target-Profile-Packages:\s*(.*)\s*$/ and $profile->{packages} = [ split(/\s+/, $1) ];
-		/^Target-Profile-Description:/ and do {
-			my $desc;
-			while (<>) {
-				last if /^@@/;
-				$desc .= $_;
-			}
-			$profile->{desc} = $desc;
-		};
+		/^Target-Profile-Description:\s*(.*)\s*/ and $profile->{desc} = get_multiline();
+		/^Target-Profile-Config:/ and $profile->{config} = get_multiline("\t");
 		/^Target-Profile-Kconfig:/ and $profile->{kconfig} = 1;
 	}
 	foreach my $target (@target) {
@@ -106,38 +105,16 @@
 				push @{$package{$vpkg}->{vdepends}}, $pkg->{name};
 			}
 		};
-		/^Depends: \s*(.+)\s*$/ and do {
-			my @dep = split /\s+/, $1;
-			$pkg->{depends} = \@dep;
-		};
-		/^Build-Depends: \s*(.+)\s*$/ and do {
-			my @dep = split /\s+/, $1;
-			$pkg->{builddepends} = \@dep;
-		};
+		/^Depends: \s*(.+)\s*$/ and $pkg->{depends} = [ split /\s+/, $1 ];
+		/^Build-Depends: \s*(.+)\s*$/ and $pkg->{builddepends} = [ split /\s+/, $1 ];
 		/^Category: \s*(.+)\s*$/ and do {
 			$pkg->{category} = $1;
 			defined $category{$1} or $category{$1} = {};
 			defined $category{$1}->{$src} or $category{$1}->{$src} = [];
 			push @{$category{$1}->{$src}}, $pkg;
 		};
-		/^Description: \s*(.*)\s*$/ and do {
-			my $desc = "\t\t$1\n\n";
-			my $line;
-			while ($line = <>) {
-				last if $line =~ /^@@/;
-				$desc .= "\t\t$line";
-			}
-			$pkg->{description} = $desc;
-		};
-		/^Config: \s*(.*)\s*$/ and do {
-			my $conf = "$1\n";
-			my $line;
-			while ($line = <>) {
-				last if $line =~ /^@@/;
-				$conf .= "$line";
-			}
-			$pkg->{config} = $conf;
-		};
+		/^Description: \s*(.*)\s*$/ and $pkg->{description} = "\t\t $1\n". get_multiline("\t\t ");
+		/^Config: \s*(.*)\s*$/ and $pkg->{config} = "$1\n".get_multiline();
 		/^Prereq-Check:/ and $pkg->{prereq} = 1;
 		/^Preconfig:\s*(.+)\s*$/ and do {
 			my $pkgname = $pkg->{name};
@@ -323,6 +300,7 @@
 config LINUX_$target->{conf}_$profile->{id}
 	bool "$profile->{name}"
 	depends LINUX_$target->{conf}
+$profile->{config}
 EOF
 			$profile->{kconfig} and print "\tselect PROFILE_KCONFIG\n";
 			my %pkgs;

comments