Changeset bf58911 in rtems-tools for rtemstoolkit


Ignore:
Timestamp:
Oct 24, 2017, 10:35:21 AM (2 years ago)
Author:
Chris Johns <chrisj@…>
Branches:
master
Children:
a248471
Parents:
5251361
git-author:
Chris Johns <chrisj@…> (10/24/17 10:35:21)
git-committer:
Chris Johns <chrisj@…> (10/24/17 11:21:35)
Message:

tester: Refactor to use INI format files for BSP configurations.

  • Add support for user condfigurations files with the --user-config.
  • Add support for a $HOME/.rtemstesterrc for a user configuration.

Closes #3204.

Location:
rtemstoolkit
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • rtemstoolkit/configuration.py

    r5251361 rbf58911  
    3737import os
    3838import re
     39import yaml
    3940
    4041try:
     
    5253        self.ini = None
    5354        self.macro_filter = re.compile('\$\{.+\}')
     55
     56    def __str__(self):
     57        if self.ini is None:
     58            return 'empty'
     59        s = ['Base: %s' % (self.ini['base'])]
     60        s += ['Files:']
     61        for f in self.ini['files']:
     62            s += [' %s' % (f)]
     63        s += ['Defaults:']
     64        for default in self.config.defaults():
     65            s += ' ' + default
     66        s += ['Sections:']
     67        for section in self.config.sections():
     68            s += [' [%s]' % (section)]
     69            for option in self.config.options(section):
     70                s += ['  %s = %s' % (option, self.config.get(section, option))]
     71        return os.linesep.join(s)
    5472
    5573    def get_item(self, section, label, err = True):
     
    7997        return rec
    8098
    81     def get_items(self, section, err = True):
     99    def get_items(self, section, err = True, flatten = True):
    82100        try:
    83             items = [(name, key.replace(os.linesep, ' ')) \
    84                      for name, key in self.config.items(section)]
     101            items = []
     102            for name, key in self.config.items(section):
     103                if flatten:
     104                    items += [(name, key.replace(os.linesep, ' '))]
     105                else:
     106                    items += [(name, key)]
    85107            return items
    86108        except:
     
    102124                raise error.general('config: section "%s" not found' % (section))
    103125        return []
     126
     127    def has_section(self, section):
     128        return self.config.has_section(section)
    104129
    105130    def load(self, name):
     
    133158                    includes += self.comma_list(section, 'include', err = False)
    134159
    135 
    136160    def files(self):
    137161        return self.ini['files']
  • rtemstoolkit/macros.py

    r5251361 rbf58911  
    135135            text += '> %s%s' % (f, os.linesep)
    136136        for map in self.macros:
    137             if map in self.read_maps:
    138                 if self.read_map_locked:
    139                     rm = 'R'
    140                 else:
    141                     rm = 'r'
    142             else:
    143                 rm = '-'
     137            rm = '-'
     138            for rmap in self.read_maps:
     139                if rmap[4:] == '___%s' % (map):
     140                    if self.read_map_locked:
     141                        rm = 'R[%s]' % (rmap[:4])
     142                    else:
     143                        rm = 'r[%s]' % (rmap[:4])
     144                    break
    144145            if map == self.write_map:
    145146                wm = 'w'
    146147            else:
    147148                wm = '-'
    148             text += '[%s] %s%s%s' % (map, rm, wm, os.linesep)
     149            text += '[%s] %s,%s%s' % (map, wm, rm, os.linesep)
    149150            for k in sorted(self.macros[map].keys()):
    150151                d = self.macros[map][k]
     
    251252
    252253    def get_read_maps(self):
    253         return [rm[5:] for rm in self.read_maps]
     254        return [rm[7:] for rm in self.read_maps]
    254255
    255256    def key_filter(self, key):
     
    494495            if _map in self.macros:
    495496                if _map not in self.get_read_maps():
    496                     rm = '%04d_%s' % (len(self.read_maps), _map)
     497                    rm = '%04d___%s' % (len(self.read_maps), _map)
    497498                    self.read_maps = sorted(self.read_maps + [rm])
    498499                return True
     
    503504            if _map in self.get_read_maps():
    504505                for i in range(0, len(self.read_maps)):
    505                     if '%04d_%s' % (i, _map) == self.read_maps[i]:
     506                    if '%04d___%s' % (i, _map) == self.read_maps[i]:
    506507                        self.read_maps.pop(i)
    507508                return True
    508509        return False
    509510
    510     def set_write_map(self, map):
    511         if map in self.macros:
    512             self.write_map = map
     511    def set_write_map(self, _map, add = False):
     512        if _map in self.macros:
     513            self.write_map = _map
     514            return True
     515        elif add:
     516            self.write_map = _map
     517            self.macros[_map] = {}
    513518            return True
    514519        return False
     520
     521    def unset_write_map(self):
     522        self.write_map = 'global'
     523        return True
    515524
    516525    def lock_read_map(self):
  • rtemstoolkit/path.py

    r5251361 rbf58911  
    154154    path = host(path)
    155155    shutil.rmtree(path, onerror = _onerror)
    156     return
    157156
    158157def expand(name, paths):
     
    161160        l += [join(p, name)]
    162161    return l
     162
     163def expanduser(path):
     164    path = host(path)
     165    path = os.path.expanduser(path)
     166    return shell(path)
    163167
    164168def collect_files(path_):
Note: See TracChangeset for help on using the changeset viewer.