| 
									
										
										
										
											2024-09-26 11:21:39 +02:00
										 |  |  | # SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD | 
					
						
							| 
									
										
										
										
											2023-03-07 08:27:54 +01:00
										 |  |  | # SPDX-License-Identifier: Apache-2.0 | 
					
						
							|  |  |  | """
 | 
					
						
							|  |  |  | This file is used in CI for esp-protocols build tests | 
					
						
							|  |  |  | """
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import argparse | 
					
						
							|  |  |  | import os | 
					
						
							|  |  |  | import sys | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from idf_build_apps import build_apps, find_apps, setup_logging | 
					
						
							|  |  |  | from idf_build_apps.constants import SUPPORTED_TARGETS | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if __name__ == '__main__': | 
					
						
							|  |  |  |     parser = argparse.ArgumentParser( | 
					
						
							|  |  |  |         description='Build all projects', | 
					
						
							|  |  |  |         formatter_class=argparse.ArgumentDefaultsHelpFormatter, | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     parser.add_argument('paths', nargs='+', help='Paths to the apps to build.') | 
					
						
							| 
									
										
										
										
											2024-01-16 00:37:32 +11:00
										 |  |  |     parser.add_argument( | 
					
						
							|  |  |  |         '-v', | 
					
						
							|  |  |  |         '--verbose', | 
					
						
							|  |  |  |         action='count', | 
					
						
							|  |  |  |         help='Increase the LOGGER level of the script. Can be specified multiple times.', | 
					
						
							|  |  |  |     ) | 
					
						
							| 
									
										
										
										
											2023-03-07 08:27:54 +01:00
										 |  |  |     parser.add_argument( | 
					
						
							|  |  |  |         '-t', | 
					
						
							|  |  |  |         '--target', | 
					
						
							|  |  |  |         default='all', | 
					
						
							|  |  |  |         help='Build apps for given target', | 
					
						
							|  |  |  |     ) | 
					
						
							| 
									
										
										
										
											2023-04-14 20:13:12 +02:00
										 |  |  |     parser.add_argument('-r', '--rules', nargs='*', default=['sdkconfig.ci=default', 'sdkconfig.ci.*=', '=default'], help='Rules how to treat configs') | 
					
						
							|  |  |  |     parser.add_argument('-m', '--manifests', nargs='*', default=[], help='list of manifest files') | 
					
						
							|  |  |  |     parser.add_argument('-d', '--delete', action='store_true', help='Delete build artifacts') | 
					
						
							| 
									
										
										
										
											2023-06-22 19:37:23 +02:00
										 |  |  |     parser.add_argument('-c', '--recursive', action='store_true', help='Build recursively') | 
					
						
							|  |  |  |     parser.add_argument('-l', '--linux', action='store_true', help='Include linux build (dont check warnings)') | 
					
						
							| 
									
										
										
										
											2024-01-16 00:37:32 +11:00
										 |  |  |     parser.add_argument('--preserve-all', action='store_true', help='Preserve the binaries for all apps when specified.') | 
					
						
							|  |  |  |     parser.add_argument('--pytest-apps', action='store_true', help='Only build apps required by pytest scripts.') | 
					
						
							| 
									
										
										
										
											2023-03-07 08:27:54 +01:00
										 |  |  |     args = parser.parse_args() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     IDF_PATH = os.environ['IDF_PATH'] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-28 16:49:37 +02:00
										 |  |  |     # Compose the ignore warning strings from the global list and from the environment | 
					
						
							|  |  |  |     ignore_warning_file = os.path.join(os.path.dirname(os.path.realpath(__file__)),'ignore_build_warnings.txt') | 
					
						
							|  |  |  |     ignore_warning = open(ignore_warning_file).read().rstrip('\n').split('\n') | 
					
						
							|  |  |  |     if 'EXPECTED_WARNING' in os.environ: | 
					
						
							|  |  |  |         ignore_warning += os.environ['EXPECTED_WARNING'].split('\n') | 
					
						
							| 
									
										
										
										
											2023-06-22 19:37:23 +02:00
										 |  |  |     if args.linux: | 
					
						
							|  |  |  |         SUPPORTED_TARGETS.append('linux') | 
					
						
							|  |  |  |         ignore_warning = 'warning: '  # Ignore all common warnings on linux builds | 
					
						
							| 
									
										
										
										
											2023-03-07 08:27:54 +01:00
										 |  |  |     setup_logging(2) | 
					
						
							| 
									
										
										
										
											2024-09-26 11:21:39 +02:00
										 |  |  |     apps = find_apps( | 
					
						
							|  |  |  |         args.paths, | 
					
						
							|  |  |  |         recursive=args.recursive, | 
					
						
							|  |  |  |         target=args.target, | 
					
						
							|  |  |  |         build_dir='build_@t_@w', | 
					
						
							|  |  |  |         config_rules_str=args.rules, | 
					
						
							|  |  |  |         build_log_filename='build_log.txt', | 
					
						
							| 
									
										
										
										
											2025-10-10 16:02:48 +02:00
										 |  |  |         size_json_filename=None, | 
					
						
							| 
									
										
										
										
											2024-09-26 11:21:39 +02:00
										 |  |  |         check_warnings=True, | 
					
						
							|  |  |  |         manifest_files=args.manifests, | 
					
						
							|  |  |  |         default_build_targets=SUPPORTED_TARGETS, | 
					
						
							|  |  |  |         manifest_rootpath='.', | 
					
						
							|  |  |  |     ) | 
					
						
							| 
									
										
										
										
											2023-03-07 08:27:54 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     sys.exit( | 
					
						
							|  |  |  |         build_apps(apps, | 
					
						
							| 
									
										
										
										
											2025-07-25 08:36:43 +02:00
										 |  |  |                    verbose=2, | 
					
						
							| 
									
										
										
										
											2023-03-07 08:27:54 +01:00
										 |  |  |                    dry_run=False, | 
					
						
							|  |  |  |                    keep_going=False, | 
					
						
							| 
									
										
										
										
											2024-09-26 11:21:39 +02:00
										 |  |  |                    no_preserve=args.delete, | 
					
						
							| 
									
										
										
										
											2023-06-22 19:37:23 +02:00
										 |  |  |                    ignore_warning_strs=ignore_warning) | 
					
						
							|  |  |  |     ) |