Re: [U-Boot] [PATCH v3 11/18] buildman: Allow tests to have their own boards

2014-09-10 Thread Simon Glass
Applied to u-boot-x86/buildman.
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH v3 11/18] buildman: Allow tests to have their own boards

2014-09-05 Thread Simon Glass
Rather than reading boards.cfg, which may take time to generate and is not
necessarily suitable for running tests, create our own list of boards.

Signed-off-by: Simon Glass s...@chromium.org
---

Changes in v3: None
Changes in v2: None

 tools/buildman/control.py   | 21 -
 tools/buildman/func_test.py | 20 +++-
 2 files changed, 31 insertions(+), 10 deletions(-)

diff --git a/tools/buildman/control.py b/tools/buildman/control.py
index c8eeb6a..fb15ae8 100644
--- a/tools/buildman/control.py
+++ b/tools/buildman/control.py
@@ -78,7 +78,7 @@ def ShowActions(series, why_selected, boards_selected, 
builder, options):
 print ('Total boards to build for each commit: %d\n' %
 why_selected['all'])
 
-def DoBuildman(options, args, toolchains=None, make_func=None):
+def DoBuildman(options, args, toolchains=None, make_func=None, boards=None):
 The main control code for buildman
 
 Args:
@@ -90,6 +90,8 @@ def DoBuildman(options, args, toolchains=None, 
make_func=None):
 to execute 'make'. If this is None, the normal function
 will be used, which calls the 'make' tool with suitable
 arguments. This setting is useful for tests.
+board: Boards() object to use, containing a list of available
+boards. If this is None it will be created and scanned.
 
 if options.full_help:
 pager = os.getenv('PAGER')
@@ -135,14 +137,15 @@ def DoBuildman(options, args, toolchains=None, 
make_func=None):
 sys.exit(col.Color(col.RED, str))
 
 # Work out what subset of the boards we are building
-board_file = os.path.join(options.git, 'boards.cfg')
-status = subprocess.call([os.path.join(options.git,
-   'tools/genboardscfg.py')])
-if status != 0:
-sys.exit(Failed to generate boards.cfg)
-
-boards = board.Boards()
-boards.ReadBoards(os.path.join(options.git, 'boards.cfg'))
+if not boards:
+board_file = os.path.join(options.git, 'boards.cfg')
+status = subprocess.call([os.path.join(options.git,
+'tools/genboardscfg.py')])
+if status != 0:
+sys.exit(Failed to generate boards.cfg)
+
+boards = board.Boards()
+boards.ReadBoards(os.path.join(options.git, 'boards.cfg'))
 
 exclude = []
 if options.exclude:
diff --git a/tools/buildman/func_test.py b/tools/buildman/func_test.py
index b92cde3..237a80b 100644
--- a/tools/buildman/func_test.py
+++ b/tools/buildman/func_test.py
@@ -10,6 +10,7 @@ import sys
 import tempfile
 import unittest
 
+import board
 import bsettings
 import cmdline
 import command
@@ -34,6 +35,14 @@ chromeos_daisy=VBOOT=${chroot}/build/daisy/usr ${vboot}
 chromeos_peach=VBOOT=${chroot}/build/peach_pit/usr ${vboot}
 '''
 
+boards = [
+['Active', 'arm', 'armv7', '', 'Tester', 'ARM Board 1', 'board0',  ''],
+['Active', 'arm', 'armv7', '', 'Tester', 'ARM Board 2', 'board1', ''],
+['Active', 'powerpc', 'powerpc', '', 'Tester', 'PowerPC board 1', 
'board2', ''],
+['Active', 'powerpc', 'mpc5xx', '', 'Tester', 'PowerPC board 2', 'board3', 
''],
+['Active', 'sandbox', 'sandbox', '', 'Tester', 'Sandbox board', 'board4', 
''],
+]
+
 class TestFunctional(unittest.TestCase):
 Functional test for buildman.
 
@@ -55,6 +64,9 @@ class TestFunctional(unittest.TestCase):
 self._toolchains.Add('gcc', test=False)
 bsettings.Setup(None)
 bsettings.AddFile(settings_data)
+self._boards = board.Boards()
+for brd in boards:
+self._boards.AddBoard(board.Board(*brd))
 
 def tearDown(self):
 shutil.rmtree(self._base_dir)
@@ -67,7 +79,7 @@ class TestFunctional(unittest.TestCase):
 sys.argv = [sys.argv[0]] + list(args)
 options, args = cmdline.ParseArgs()
 return control.DoBuildman(options, args, toolchains=self._toolchains,
-make_func=self._HandleMake)
+make_func=self._HandleMake, boards=self._boards)
 
 def testFullHelp(self):
 command.test_result = None
@@ -194,6 +206,12 @@ class TestFunctional(unittest.TestCase):
 print 'make', stage
 sys.exit(1)
 
+def testNoBoards(self):
+Test that buildman aborts when there are no boards
+self._boards = board.Boards()
+with self.assertRaises(SystemExit):
+self._RunControl()
+
 def testCurrentSource(self):
 Very simple test to invoke buildman on the current source
 self._RunControl()
-- 
2.1.0.rc2.206.gedb03e5

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot