scripts/metadata.pl: move parse_target_metadata() to metadata.pm
authorFelix Fietkau <nbd@openwrt.org>
Sun, 15 Mar 2015 11:07:40 +0000 (11:07 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Sun, 15 Mar 2015 11:07:40 +0000 (11:07 +0000)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 44776

scripts/metadata.pl
scripts/metadata.pm

index abf8248..bfb9ab5 100755 (executable)
@@ -6,12 +6,6 @@ use metadata;
 
 my %board;
 
-sub confstr($) {
-       my $conf = shift;
-       $conf =~ tr#/\.\-/#___#;
-       return $conf;
-}
-
 sub version_to_num($) {
        my $str = shift;
        my $num = 0;
@@ -53,84 +47,6 @@ sub version_filter_list(@) {
        return @items;
 }
 
-sub parse_target_metadata() {
-       my $file = shift @ARGV;
-       my ($target, @target, $profile);
-       my %target;
-
-       open FILE, "<$file" or do {
-               warn "Can't open file '$file': $!\n";
-               return;
-       };
-       while (<FILE>) {
-               chomp;
-               /^Target:\s*(.+)\s*$/ and do {
-                       my $name = $1;
-                       $target = {
-                               id => $name,
-                               board => $name,
-                               boardconf => confstr($name),
-                               conf => confstr($name),
-                               profiles => [],
-                               features => [],
-                               depends => [],
-                               subtargets => []
-                       };
-                       push @target, $target;
-                       $target{$name} = $target;
-                       if ($name =~ /([^\/]+)\/([^\/]+)/) {
-                               push @{$target{$1}->{subtargets}}, $2;
-                               $target->{board} = $1;
-                               $target->{boardconf} = confstr($1);
-                               $target->{subtarget} = 1;
-                               $target->{parent} = $target{$1};
-                       }
-               };
-               /^Target-Name:\s*(.+)\s*$/ and $target->{name} = $1;
-               /^Target-Path:\s*(.+)\s*$/ and $target->{path} = $1;
-               /^Target-Arch:\s*(.+)\s*$/ and $target->{arch} = $1;
-               /^Target-Arch-Packages:\s*(.+)\s*$/ and $target->{arch_packages} = $1;
-               /^Target-Features:\s*(.+)\s*$/ and $target->{features} = [ split(/\s+/, $1) ];
-               /^Target-Depends:\s*(.+)\s*$/ and $target->{depends} = [ split(/\s+/, $1) ];
-               /^Target-Description:/ and $target->{desc} = get_multiline(*FILE);
-               /^Target-Optimization:\s*(.+)\s*$/ and $target->{cflags} = $1;
-               /^CPU-Type:\s*(.+)\s*$/ and $target->{cputype} = $1;
-               /^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;
-               /^Default-Subtarget:\s*(.+)\s*$/ and $target->{def_subtarget} = $1;
-               /^Default-Packages:\s*(.+)\s*$/ and $target->{packages} = [ split(/\s+/, $1) ];
-               /^Target-Profile:\s*(.+)\s*$/ and do {
-                       $profile = {
-                               id => $1,
-                               name => $1,
-                               packages => []
-                       };
-                       push @{$target->{profiles}}, $profile;
-               };
-               /^Target-Profile-Name:\s*(.+)\s*$/ and $profile->{name} = $1;
-               /^Target-Profile-Packages:\s*(.*)\s*$/ and $profile->{packages} = [ split(/\s+/, $1) ];
-               /^Target-Profile-Description:\s*(.*)\s*/ and $profile->{desc} = get_multiline(*FILE);
-               /^Target-Profile-Config:/ and $profile->{config} = get_multiline(*FILE, "\t");
-               /^Target-Profile-Kconfig:/ and $profile->{kconfig} = 1;
-       }
-       close FILE;
-       foreach my $target (@target) {
-               if (@{$target->{subtargets}} > 0) {
-                       $target->{profiles} = [];
-                       next;
-               }
-               @{$target->{profiles}} > 0 or $target->{profiles} = [
-                       {
-                               id => 'Default',
-                               name => 'Default',
-                               packages => []
-                       }
-               ];
-       }
-       return @target;
-}
-
 sub gen_kconfig_overrides() {
        my %config;
        my %kconfig;
@@ -313,7 +229,8 @@ EOF
 }
 
 sub gen_target_config() {
-       my @target = parse_target_metadata();
+       my $file = shift @ARGV;
+       my @target = parse_target_metadata($file);
        my %defaults;
 
        my @target_sort = sort {
index 4bf70bb..aa82fcd 100644 (file)
@@ -2,7 +2,7 @@ package metadata;
 use base 'Exporter';
 use strict;
 use warnings;
-our @EXPORT = qw(%package %srcpackage %category %subdir %preconfig %features %overrides clear_packages parse_package_metadata get_multiline);
+our @EXPORT = qw(%package %srcpackage %category %subdir %preconfig %features %overrides clear_packages parse_package_metadata parse_target_metadata get_multiline);
 
 our %package;
 our %preconfig;
@@ -24,6 +24,90 @@ sub get_multiline {
        return $str ? $str : "";
 }
 
+sub confstr($) {
+       my $conf = shift;
+       $conf =~ tr#/\.\-/#___#;
+       return $conf;
+}
+
+sub parse_target_metadata($) {
+       my $file = shift;
+       my ($target, @target, $profile);
+       my %target;
+
+       open FILE, "<$file" or do {
+               warn "Can't open file '$file': $!\n";
+               return;
+       };
+       while (<FILE>) {
+               chomp;
+               /^Target:\s*(.+)\s*$/ and do {
+                       my $name = $1;
+                       $target = {
+                               id => $name,
+                               board => $name,
+                               boardconf => confstr($name),
+                               conf => confstr($name),
+                               profiles => [],
+                               features => [],
+                               depends => [],
+                               subtargets => []
+                       };
+                       push @target, $target;
+                       $target{$name} = $target;
+                       if ($name =~ /([^\/]+)\/([^\/]+)/) {
+                               push @{$target{$1}->{subtargets}}, $2;
+                               $target->{board} = $1;
+                               $target->{boardconf} = confstr($1);
+                               $target->{subtarget} = 1;
+                               $target->{parent} = $target{$1};
+                       }
+               };
+               /^Target-Name:\s*(.+)\s*$/ and $target->{name} = $1;
+               /^Target-Path:\s*(.+)\s*$/ and $target->{path} = $1;
+               /^Target-Arch:\s*(.+)\s*$/ and $target->{arch} = $1;
+               /^Target-Arch-Packages:\s*(.+)\s*$/ and $target->{arch_packages} = $1;
+               /^Target-Features:\s*(.+)\s*$/ and $target->{features} = [ split(/\s+/, $1) ];
+               /^Target-Depends:\s*(.+)\s*$/ and $target->{depends} = [ split(/\s+/, $1) ];
+               /^Target-Description:/ and $target->{desc} = get_multiline(*FILE);
+               /^Target-Optimization:\s*(.+)\s*$/ and $target->{cflags} = $1;
+               /^CPU-Type:\s*(.+)\s*$/ and $target->{cputype} = $1;
+               /^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;
+               /^Default-Subtarget:\s*(.+)\s*$/ and $target->{def_subtarget} = $1;
+               /^Default-Packages:\s*(.+)\s*$/ and $target->{packages} = [ split(/\s+/, $1) ];
+               /^Target-Profile:\s*(.+)\s*$/ and do {
+                       $profile = {
+                               id => $1,
+                               name => $1,
+                               packages => []
+                       };
+                       push @{$target->{profiles}}, $profile;
+               };
+               /^Target-Profile-Name:\s*(.+)\s*$/ and $profile->{name} = $1;
+               /^Target-Profile-Packages:\s*(.*)\s*$/ and $profile->{packages} = [ split(/\s+/, $1) ];
+               /^Target-Profile-Description:\s*(.*)\s*/ and $profile->{desc} = get_multiline(*FILE);
+               /^Target-Profile-Config:/ and $profile->{config} = get_multiline(*FILE, "\t");
+               /^Target-Profile-Kconfig:/ and $profile->{kconfig} = 1;
+       }
+       close FILE;
+       foreach my $target (@target) {
+               if (@{$target->{subtargets}} > 0) {
+                       $target->{profiles} = [];
+                       next;
+               }
+               @{$target->{profiles}} > 0 or $target->{profiles} = [
+                       {
+                               id => 'Default',
+                               name => 'Default',
+                               packages => []
+                       }
+               ];
+       }
+       return @target;
+}
+
 sub clear_packages() {
        %subdir = ();
        %preconfig = ();