mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-11-04 05:50:17 +00:00 
			
		
		
		
	With Python versions older than 3.9 Buildman produces an error on start-up. Fix this with a workaround for importlib. There is already a workaround for v3.6 but I am not sure if that is still functioning. Signed-off-by: Simon Glass <sjg@chromium.org>
		
			
				
	
	
		
			103 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env python3
 | 
						|
# SPDX-License-Identifier: GPL-2.0+
 | 
						|
#
 | 
						|
# Copyright (c) 2012 The Chromium OS Authors.
 | 
						|
#
 | 
						|
 | 
						|
"""See README for more information"""
 | 
						|
 | 
						|
try:
 | 
						|
    import importlib.resources
 | 
						|
except ImportError:
 | 
						|
    # for Python 3.6
 | 
						|
    import importlib_resources
 | 
						|
import os
 | 
						|
import sys
 | 
						|
 | 
						|
# Bring in the patman libraries
 | 
						|
# pylint: disable=C0413
 | 
						|
our_path = os.path.dirname(os.path.realpath(__file__))
 | 
						|
sys.path.insert(1, os.path.join(our_path, '..'))
 | 
						|
 | 
						|
# Our modules
 | 
						|
from buildman import bsettings
 | 
						|
from buildman import cmdline
 | 
						|
from buildman import control
 | 
						|
from u_boot_pylib import test_util
 | 
						|
from u_boot_pylib import tools
 | 
						|
 | 
						|
def run_tests(skip_net_tests, debug, verbose, args):
 | 
						|
    """Run the buildman tests
 | 
						|
 | 
						|
    Args:
 | 
						|
        skip_net_tests (bool): True to skip tests which need the network
 | 
						|
        debug (bool): True to run in debugging mode (full traceback)
 | 
						|
        verbosity (int): Verbosity level to use (0-4)
 | 
						|
        args (list of str): List of tests to run, empty to run all
 | 
						|
    """
 | 
						|
    # These imports are here since tests are not available when buildman is
 | 
						|
    # installed as a Python module
 | 
						|
    # pylint: disable=C0415
 | 
						|
    from buildman import func_test
 | 
						|
    from buildman import test
 | 
						|
 | 
						|
    test_name = args.terms and args.terms[0] or None
 | 
						|
    if skip_net_tests:
 | 
						|
        test.use_network = False
 | 
						|
 | 
						|
    # Run the entry tests first ,since these need to be the first to import the
 | 
						|
    # 'entry' module.
 | 
						|
    result = test_util.run_test_suites(
 | 
						|
        'buildman', debug, verbose, False, args.threads, test_name, [],
 | 
						|
        [test.TestBuild, func_test.TestFunctional,
 | 
						|
         'buildman.toolchain', 'patman.gitutil'])
 | 
						|
 | 
						|
    return (0 if result.wasSuccessful() else 1)
 | 
						|
 | 
						|
def run_test_coverage():
 | 
						|
    """Run the tests and check that we get 100% coverage"""
 | 
						|
    test_util.run_test_coverage(
 | 
						|
        'tools/buildman/buildman', None,
 | 
						|
        ['tools/patman/*.py', 'tools/u_boot_pylib/*', '*test_fdt.py',
 | 
						|
         'tools/buildman/kconfiglib.py', 'tools/buildman/*test*.py',
 | 
						|
         'tools/buildman/main.py'],
 | 
						|
        '/tmp/b', single_thread='-T1')
 | 
						|
 | 
						|
 | 
						|
def run_buildman():
 | 
						|
    """Run bulidman
 | 
						|
 | 
						|
    This is the main program. It collects arguments and runs either the tests or
 | 
						|
    the control module.
 | 
						|
    """
 | 
						|
    args = cmdline.parse_args()
 | 
						|
 | 
						|
    if not args.debug:
 | 
						|
        sys.tracebacklimit = 0
 | 
						|
 | 
						|
    # Run our meagre tests
 | 
						|
    if cmdline.HAS_TESTS and args.test:
 | 
						|
        return run_tests(args.skip_net_tests, args.debug, args.verbose, args)
 | 
						|
 | 
						|
    elif cmdline.HAS_TESTS and args.coverage:
 | 
						|
        run_test_coverage()
 | 
						|
 | 
						|
    elif args.full_help:
 | 
						|
        if hasattr(importlib.resources, 'files'):
 | 
						|
            dirpath = importlib.resources.files('buildman')
 | 
						|
            tools.print_full_help(str(dirpath.joinpath('README.rst')))
 | 
						|
        else:
 | 
						|
            with importlib.resources.path('buildman', 'README.rst') as readme:
 | 
						|
                tools.print_full_help(str(readme))
 | 
						|
 | 
						|
 | 
						|
    # Build selected commits for selected boards
 | 
						|
    else:
 | 
						|
        bsettings.setup(args.config_file)
 | 
						|
        ret_code = control.do_buildman(args)
 | 
						|
        return ret_code
 | 
						|
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
    sys.exit(run_buildman())
 |