xref: /openbmc/u-boot/tools/buildman/buildman.py (revision d3d5c123)
1a707b3dbSJagannadha Sutradharudu Teki#!/usr/bin/env python
2fc3fe1c2SSimon Glass#
3fc3fe1c2SSimon Glass# Copyright (c) 2012 The Chromium OS Authors.
4fc3fe1c2SSimon Glass#
51a459660SWolfgang Denk# SPDX-License-Identifier:	GPL-2.0+
6fc3fe1c2SSimon Glass#
7fc3fe1c2SSimon Glass
8fc3fe1c2SSimon Glass"""See README for more information"""
9fc3fe1c2SSimon Glass
10fc3fe1c2SSimon Glassimport multiprocessing
11fc3fe1c2SSimon Glassimport os
12fc3fe1c2SSimon Glassimport re
13fc3fe1c2SSimon Glassimport sys
14fc3fe1c2SSimon Glassimport unittest
15fc3fe1c2SSimon Glass
16fc3fe1c2SSimon Glass# Bring in the patman libraries
17fc3fe1c2SSimon Glassour_path = os.path.dirname(os.path.realpath(__file__))
18fc3fe1c2SSimon Glasssys.path.append(os.path.join(our_path, '../patman'))
19fc3fe1c2SSimon Glass
20fc3fe1c2SSimon Glass# Our modules
21fc3fe1c2SSimon Glassimport board
22fc3fe1c2SSimon Glassimport builder
23fc3fe1c2SSimon Glassimport checkpatch
24*d3d5c123SSimon Glassimport cmdline
25fc3fe1c2SSimon Glassimport control
26fc3fe1c2SSimon Glassimport doctest
27fc3fe1c2SSimon Glassimport gitutil
28fc3fe1c2SSimon Glassimport patchstream
29fc3fe1c2SSimon Glassimport terminal
30fc3fe1c2SSimon Glassimport toolchain
31fc3fe1c2SSimon Glass
32fc3fe1c2SSimon Glassdef RunTests():
33fc3fe1c2SSimon Glass    import test
344281ad8eSSimon Glass    import doctest
354281ad8eSSimon Glass
364281ad8eSSimon Glass    result = unittest.TestResult()
374281ad8eSSimon Glass    for module in ['toolchain']:
384281ad8eSSimon Glass        suite = doctest.DocTestSuite(module)
394281ad8eSSimon Glass        suite.run(result)
404281ad8eSSimon Glass
414281ad8eSSimon Glass    # TODO: Surely we can just 'print' result?
424281ad8eSSimon Glass    print result
434281ad8eSSimon Glass    for test, err in result.errors:
444281ad8eSSimon Glass        print err
454281ad8eSSimon Glass    for test, err in result.failures:
464281ad8eSSimon Glass        print err
47fc3fe1c2SSimon Glass
48fc3fe1c2SSimon Glass    sys.argv = [sys.argv[0]]
49fc3fe1c2SSimon Glass    suite = unittest.TestLoader().loadTestsFromTestCase(test.TestBuild)
50fc3fe1c2SSimon Glass    result = unittest.TestResult()
51fc3fe1c2SSimon Glass    suite.run(result)
52fc3fe1c2SSimon Glass
53fc3fe1c2SSimon Glass    # TODO: Surely we can just 'print' result?
54fc3fe1c2SSimon Glass    print result
55fc3fe1c2SSimon Glass    for test, err in result.errors:
56fc3fe1c2SSimon Glass        print err
57fc3fe1c2SSimon Glass    for test, err in result.failures:
58fc3fe1c2SSimon Glass        print err
59fc3fe1c2SSimon Glass
60fc3fe1c2SSimon Glass
61*d3d5c123SSimon Glassoptions, args = cmdline.ParseArgs()
62fc3fe1c2SSimon Glass
63fc3fe1c2SSimon Glass# Run our meagre tests
64fc3fe1c2SSimon Glassif options.test:
65fc3fe1c2SSimon Glass    RunTests()
66fc3fe1c2SSimon Glasselif options.full_help:
67fc3fe1c2SSimon Glass    pager = os.getenv('PAGER')
68fc3fe1c2SSimon Glass    if not pager:
69fc3fe1c2SSimon Glass        pager = 'more'
70fc3fe1c2SSimon Glass    fname = os.path.join(os.path.dirname(sys.argv[0]), 'README')
71fc3fe1c2SSimon Glass    command.Run(pager, fname)
72fc3fe1c2SSimon Glass
73fc3fe1c2SSimon Glass# Build selected commits for selected boards
74fc3fe1c2SSimon Glasselse:
752c3deb97SSimon Glass    ret_code = control.DoBuildman(options, args)
762c3deb97SSimon Glass    sys.exit(ret_code)
77