Changeset 44776


Ignore:
Timestamp:
2015-03-15T12:07:40+01:00 (3 years ago)
Author:
nbd
Message:

scripts/metadata.pl: move parse_target_metadata() to metadata.pm

Signed-off-by: Felix Fietkau <nbd@…>

Location:
trunk/scripts
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/scripts/metadata.pl

    r44336 r44776  
    66 
    77my %board; 
    8  
    9 sub confstr($) { 
    10         my $conf = shift; 
    11         $conf =~ tr#/\.\-/#___#; 
    12         return $conf; 
    13 } 
    148 
    159sub version_to_num($) { 
     
    5246 
    5347        return @items; 
    54 } 
    55  
    56 sub parse_target_metadata() { 
    57         my $file = shift @ARGV; 
    58         my ($target, @target, $profile); 
    59         my %target; 
    60  
    61         open FILE, "<$file" or do { 
    62                 warn "Can't open file '$file': $!\n"; 
    63                 return; 
    64         }; 
    65         while (<FILE>) { 
    66                 chomp; 
    67                 /^Target:\s*(.+)\s*$/ and do { 
    68                         my $name = $1; 
    69                         $target = { 
    70                                 id => $name, 
    71                                 board => $name, 
    72                                 boardconf => confstr($name), 
    73                                 conf => confstr($name), 
    74                                 profiles => [], 
    75                                 features => [], 
    76                                 depends => [], 
    77                                 subtargets => [] 
    78                         }; 
    79                         push @target, $target; 
    80                         $target{$name} = $target; 
    81                         if ($name =~ /([^\/]+)\/([^\/]+)/) { 
    82                                 push @{$target{$1}->{subtargets}}, $2; 
    83                                 $target->{board} = $1; 
    84                                 $target->{boardconf} = confstr($1); 
    85                                 $target->{subtarget} = 1; 
    86                                 $target->{parent} = $target{$1}; 
    87                         } 
    88                 }; 
    89                 /^Target-Name:\s*(.+)\s*$/ and $target->{name} = $1; 
    90                 /^Target-Path:\s*(.+)\s*$/ and $target->{path} = $1; 
    91                 /^Target-Arch:\s*(.+)\s*$/ and $target->{arch} = $1; 
    92                 /^Target-Arch-Packages:\s*(.+)\s*$/ and $target->{arch_packages} = $1; 
    93                 /^Target-Features:\s*(.+)\s*$/ and $target->{features} = [ split(/\s+/, $1) ]; 
    94                 /^Target-Depends:\s*(.+)\s*$/ and $target->{depends} = [ split(/\s+/, $1) ]; 
    95                 /^Target-Description:/ and $target->{desc} = get_multiline(*FILE); 
    96                 /^Target-Optimization:\s*(.+)\s*$/ and $target->{cflags} = $1; 
    97                 /^CPU-Type:\s*(.+)\s*$/ and $target->{cputype} = $1; 
    98                 /^Linux-Version:\s*(.+)\s*$/ and $target->{version} = $1; 
    99                 /^Linux-Release:\s*(.+)\s*$/ and $target->{release} = $1; 
    100                 /^Linux-Kernel-Arch:\s*(.+)\s*$/ and $target->{karch} = $1; 
    101                 /^Default-Subtarget:\s*(.+)\s*$/ and $target->{def_subtarget} = $1; 
    102                 /^Default-Packages:\s*(.+)\s*$/ and $target->{packages} = [ split(/\s+/, $1) ]; 
    103                 /^Target-Profile:\s*(.+)\s*$/ and do { 
    104                         $profile = { 
    105                                 id => $1, 
    106                                 name => $1, 
    107                                 packages => [] 
    108                         }; 
    109                         push @{$target->{profiles}}, $profile; 
    110                 }; 
    111                 /^Target-Profile-Name:\s*(.+)\s*$/ and $profile->{name} = $1; 
    112                 /^Target-Profile-Packages:\s*(.*)\s*$/ and $profile->{packages} = [ split(/\s+/, $1) ]; 
    113                 /^Target-Profile-Description:\s*(.*)\s*/ and $profile->{desc} = get_multiline(*FILE); 
    114                 /^Target-Profile-Config:/ and $profile->{config} = get_multiline(*FILE, "\t"); 
    115                 /^Target-Profile-Kconfig:/ and $profile->{kconfig} = 1; 
    116         } 
    117         close FILE; 
    118         foreach my $target (@target) { 
    119                 if (@{$target->{subtargets}} > 0) { 
    120                         $target->{profiles} = []; 
    121                         next; 
    122                 } 
    123                 @{$target->{profiles}} > 0 or $target->{profiles} = [ 
    124                         { 
    125                                 id => 'Default', 
    126                                 name => 'Default', 
    127                                 packages => [] 
    128                         } 
    129                 ]; 
    130         } 
    131         return @target; 
    13248} 
    13349 
     
    314230 
    315231sub gen_target_config() { 
    316         my @target = parse_target_metadata(); 
     232        my $file = shift @ARGV; 
     233        my @target = parse_target_metadata($file); 
    317234        my %defaults; 
    318235 
  • trunk/scripts/metadata.pm

    r44336 r44776  
    33use strict; 
    44use warnings; 
    5 our @EXPORT = qw(%package %srcpackage %category %subdir %preconfig %features %overrides clear_packages parse_package_metadata get_multiline); 
     5our @EXPORT = qw(%package %srcpackage %category %subdir %preconfig %features %overrides clear_packages parse_package_metadata parse_target_metadata get_multiline); 
    66 
    77our %package; 
     
    2323 
    2424        return $str ? $str : ""; 
     25} 
     26 
     27sub confstr($) { 
     28        my $conf = shift; 
     29        $conf =~ tr#/\.\-/#___#; 
     30        return $conf; 
     31} 
     32 
     33sub parse_target_metadata($) { 
     34        my $file = shift; 
     35        my ($target, @target, $profile); 
     36        my %target; 
     37 
     38        open FILE, "<$file" or do { 
     39                warn "Can't open file '$file': $!\n"; 
     40                return; 
     41        }; 
     42        while (<FILE>) { 
     43                chomp; 
     44                /^Target:\s*(.+)\s*$/ and do { 
     45                        my $name = $1; 
     46                        $target = { 
     47                                id => $name, 
     48                                board => $name, 
     49                                boardconf => confstr($name), 
     50                                conf => confstr($name), 
     51                                profiles => [], 
     52                                features => [], 
     53                                depends => [], 
     54                                subtargets => [] 
     55                        }; 
     56                        push @target, $target; 
     57                        $target{$name} = $target; 
     58                        if ($name =~ /([^\/]+)\/([^\/]+)/) { 
     59                                push @{$target{$1}->{subtargets}}, $2; 
     60                                $target->{board} = $1; 
     61                                $target->{boardconf} = confstr($1); 
     62                                $target->{subtarget} = 1; 
     63                                $target->{parent} = $target{$1}; 
     64                        } 
     65                }; 
     66                /^Target-Name:\s*(.+)\s*$/ and $target->{name} = $1; 
     67                /^Target-Path:\s*(.+)\s*$/ and $target->{path} = $1; 
     68                /^Target-Arch:\s*(.+)\s*$/ and $target->{arch} = $1; 
     69                /^Target-Arch-Packages:\s*(.+)\s*$/ and $target->{arch_packages} = $1; 
     70                /^Target-Features:\s*(.+)\s*$/ and $target->{features} = [ split(/\s+/, $1) ]; 
     71                /^Target-Depends:\s*(.+)\s*$/ and $target->{depends} = [ split(/\s+/, $1) ]; 
     72                /^Target-Description:/ and $target->{desc} = get_multiline(*FILE); 
     73                /^Target-Optimization:\s*(.+)\s*$/ and $target->{cflags} = $1; 
     74                /^CPU-Type:\s*(.+)\s*$/ and $target->{cputype} = $1; 
     75                /^Linux-Version:\s*(.+)\s*$/ and $target->{version} = $1; 
     76                /^Linux-Release:\s*(.+)\s*$/ and $target->{release} = $1; 
     77                /^Linux-Kernel-Arch:\s*(.+)\s*$/ and $target->{karch} = $1; 
     78                /^Default-Subtarget:\s*(.+)\s*$/ and $target->{def_subtarget} = $1; 
     79                /^Default-Packages:\s*(.+)\s*$/ and $target->{packages} = [ split(/\s+/, $1) ]; 
     80                /^Target-Profile:\s*(.+)\s*$/ and do { 
     81                        $profile = { 
     82                                id => $1, 
     83                                name => $1, 
     84                                packages => [] 
     85                        }; 
     86                        push @{$target->{profiles}}, $profile; 
     87                }; 
     88                /^Target-Profile-Name:\s*(.+)\s*$/ and $profile->{name} = $1; 
     89                /^Target-Profile-Packages:\s*(.*)\s*$/ and $profile->{packages} = [ split(/\s+/, $1) ]; 
     90                /^Target-Profile-Description:\s*(.*)\s*/ and $profile->{desc} = get_multiline(*FILE); 
     91                /^Target-Profile-Config:/ and $profile->{config} = get_multiline(*FILE, "\t"); 
     92                /^Target-Profile-Kconfig:/ and $profile->{kconfig} = 1; 
     93        } 
     94        close FILE; 
     95        foreach my $target (@target) { 
     96                if (@{$target->{subtargets}} > 0) { 
     97                        $target->{profiles} = []; 
     98                        next; 
     99                } 
     100                @{$target->{profiles}} > 0 or $target->{profiles} = [ 
     101                        { 
     102                                id => 'Default', 
     103                                name => 'Default', 
     104                                packages => [] 
     105                        } 
     106                ]; 
     107        } 
     108        return @target; 
    25109} 
    26110 
Note: See TracChangeset for help on using the changeset viewer.