mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-10-05 02:50:44 +09:00
03c1bb2425
Commit 27af930e9a
changed the boards.cfg format
but missed to change the parsing in buildman.
This patch changes c'tor of Board class to the new sequence, but omits
maintainer field.
Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com>
155 lines
4.5 KiB
Python
155 lines
4.5 KiB
Python
# Copyright (c) 2012 The Chromium OS Authors.
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0+
|
|
#
|
|
|
|
class Board:
|
|
"""A particular board that we can build"""
|
|
def __init__(self, status, arch, cpu, soc, vendor, board_name, target, options):
|
|
"""Create a new board type.
|
|
|
|
Args:
|
|
status: define whether the board is 'Active' or 'Orphaned'
|
|
arch: Architecture name (e.g. arm)
|
|
cpu: Cpu name (e.g. arm1136)
|
|
soc: Name of SOC, or '' if none (e.g. mx31)
|
|
vendor: Name of vendor (e.g. armltd)
|
|
board_name: Name of board (e.g. integrator)
|
|
target: Target name (use make <target>_config to configure)
|
|
options: board-specific options (e.g. integratorcp:CM1136)
|
|
"""
|
|
self.target = target
|
|
self.arch = arch
|
|
self.cpu = cpu
|
|
self.board_name = board_name
|
|
self.vendor = vendor
|
|
self.soc = soc
|
|
self.props = [self.target, self.arch, self.cpu, self.board_name,
|
|
self.vendor, self.soc]
|
|
self.options = options
|
|
self.build_it = False
|
|
|
|
|
|
class Boards:
|
|
"""Manage a list of boards."""
|
|
def __init__(self):
|
|
# Use a simple list here, sinc OrderedDict requires Python 2.7
|
|
self._boards = []
|
|
|
|
def AddBoard(self, board):
|
|
"""Add a new board to the list.
|
|
|
|
The board's target member must not already exist in the board list.
|
|
|
|
Args:
|
|
board: board to add
|
|
"""
|
|
self._boards.append(board)
|
|
|
|
def ReadBoards(self, fname):
|
|
"""Read a list of boards from a board file.
|
|
|
|
Create a board object for each and add it to our _boards list.
|
|
|
|
Args:
|
|
fname: Filename of boards.cfg file
|
|
"""
|
|
with open(fname, 'r') as fd:
|
|
for line in fd:
|
|
if line[0] == '#':
|
|
continue
|
|
fields = line.split()
|
|
if not fields:
|
|
continue
|
|
for upto in range(len(fields)):
|
|
if fields[upto] == '-':
|
|
fields[upto] = ''
|
|
while len(fields) < 8:
|
|
fields.append('')
|
|
if len(fields) > 8:
|
|
fields = fields[:8]
|
|
|
|
board = Board(*fields)
|
|
self.AddBoard(board)
|
|
|
|
|
|
def GetList(self):
|
|
"""Return a list of available boards.
|
|
|
|
Returns:
|
|
List of Board objects
|
|
"""
|
|
return self._boards
|
|
|
|
def GetDict(self):
|
|
"""Build a dictionary containing all the boards.
|
|
|
|
Returns:
|
|
Dictionary:
|
|
key is board.target
|
|
value is board
|
|
"""
|
|
board_dict = {}
|
|
for board in self._boards:
|
|
board_dict[board.target] = board
|
|
return board_dict
|
|
|
|
def GetSelectedDict(self):
|
|
"""Return a dictionary containing the selected boards
|
|
|
|
Returns:
|
|
List of Board objects that are marked selected
|
|
"""
|
|
board_dict = {}
|
|
for board in self._boards:
|
|
if board.build_it:
|
|
board_dict[board.target] = board
|
|
return board_dict
|
|
|
|
def GetSelected(self):
|
|
"""Return a list of selected boards
|
|
|
|
Returns:
|
|
List of Board objects that are marked selected
|
|
"""
|
|
return [board for board in self._boards if board.build_it]
|
|
|
|
def GetSelectedNames(self):
|
|
"""Return a list of selected boards
|
|
|
|
Returns:
|
|
List of board names that are marked selected
|
|
"""
|
|
return [board.target for board in self._boards if board.build_it]
|
|
|
|
def SelectBoards(self, args):
|
|
"""Mark boards selected based on args
|
|
|
|
Args:
|
|
List of strings specifying boards to include, either named, or
|
|
by their target, architecture, cpu, vendor or soc. If empty, all
|
|
boards are selected.
|
|
|
|
Returns:
|
|
Dictionary which holds the number of boards which were selected
|
|
due to each argument, arranged by argument.
|
|
"""
|
|
result = {}
|
|
for arg in args:
|
|
result[arg] = 0
|
|
result['all'] = 0
|
|
|
|
for board in self._boards:
|
|
if args:
|
|
for arg in args:
|
|
if arg in board.props:
|
|
if not board.build_it:
|
|
board.build_it = True
|
|
result[arg] += 1
|
|
result['all'] += 1
|
|
else:
|
|
board.build_it = True
|
|
result['all'] += 1
|
|
|
|
return result
|