36
36
IDF_VERSION_PATCH ,
37
37
PREVIEW_TARGETS ,
38
38
PROJECT_DESCRIPTION_JSON ,
39
- BuildStage ,
40
39
BuildStatus ,
41
40
)
42
41
from .manifest .manifest import (
55
54
to_list ,
56
55
)
57
56
58
-
59
- class _AppBuildStageFilter (logging .Filter ):
60
- def __init__ (self , * args , app , ** kwargs ):
61
- super ().__init__ (* args , ** kwargs )
62
- self .app = app
63
-
64
- def filter (self , record : logging .LogRecord ) -> bool :
65
- if self .app ._build_stage :
66
- record .build_stage = self .app ._build_stage .value
67
-
68
- return True
57
+ LOGGER = logging .getLogger (__name__ )
69
58
70
59
71
60
class App (BaseModel ):
@@ -120,7 +109,6 @@ class App(BaseModel):
120
109
build_status : BuildStatus = BuildStatus .UNKNOWN
121
110
build_comment : t .Optional [str ] = None
122
111
123
- _build_stage : t .Optional [BuildStage ] = None
124
112
_build_duration : float = 0
125
113
_build_timestamp : t .Optional [datetime ] = None
126
114
@@ -176,9 +164,6 @@ def __init__(
176
164
# private attrs, won't be dumped to json
177
165
self ._checked_should_build = False
178
166
179
- self ._logger = logging .getLogger (f'{ __name__ } .{ hash (self )} ' )
180
- self ._logger .addFilter (_AppBuildStageFilter (app = self ))
181
-
182
167
self ._sdkconfig_files , self ._sdkconfig_files_defined_target = self ._process_sdkconfig_files ()
183
168
184
169
@classmethod
@@ -346,10 +331,10 @@ def _process_sdkconfig_files(self) -> t.Tuple[t.List[str], t.Optional[str]]:
346
331
# use filepath if abs/rel already point to itself
347
332
if not os .path .isfile (f ):
348
333
# find it in the app_dir
349
- self . _logger .debug ('sdkconfig file %s not found, checking under app_dir...' , f )
334
+ LOGGER .debug ('sdkconfig file %s not found, checking under app_dir...' , f )
350
335
f = os .path .join (self .app_dir , f )
351
336
if not os .path .isfile (f ):
352
- self . _logger .debug ('sdkconfig file %s not found, skipping...' , f )
337
+ LOGGER .debug ('sdkconfig file %s not found, skipping...' , f )
353
338
continue
354
339
355
340
expanded_fp = os .path .join (expanded_dir , os .path .basename (f ))
@@ -377,22 +362,22 @@ def _process_sdkconfig_files(self) -> t.Tuple[t.List[str], t.Optional[str]]:
377
362
with open (f ) as fr :
378
363
with open (expanded_fp ) as new_fr :
379
364
if fr .read () == new_fr .read ():
380
- self . _logger .debug ('Use sdkconfig file %s' , f )
365
+ LOGGER .debug ('Use sdkconfig file %s' , f )
381
366
try :
382
367
os .unlink (expanded_fp )
383
368
except OSError :
384
- self . _logger .debug ('Failed to remove file %s' , expanded_fp )
369
+ LOGGER .debug ('Failed to remove file %s' , expanded_fp )
385
370
real_sdkconfig_files .append (f )
386
371
else :
387
- self . _logger .debug ('Expand sdkconfig file %s to %s' , f , expanded_fp )
372
+ LOGGER .debug ('Expand sdkconfig file %s to %s' , f , expanded_fp )
388
373
real_sdkconfig_files .append (expanded_fp )
389
374
# copy the related target-specific sdkconfig files
390
375
par_dir = os .path .abspath (os .path .join (f , '..' ))
391
376
for target_specific_file in (
392
377
os .path .join (par_dir , str (p ))
393
378
for p in Path (par_dir ).glob (os .path .basename (f ) + f'.{ self .target } ' )
394
379
):
395
- self . _logger .debug (
380
+ LOGGER .debug (
396
381
'Copy target-specific sdkconfig file %s to %s' , target_specific_file , expanded_dir
397
382
)
398
383
shutil .copy (target_specific_file , expanded_dir )
@@ -474,21 +459,16 @@ def wrapper(self, *args, **kwargs):
474
459
return wrapper
475
460
476
461
def _pre_build (self ) -> None :
477
- if self .dry_run :
478
- self ._build_stage = BuildStage .DRY_RUN
479
- else :
480
- self ._build_stage = BuildStage .PRE_BUILD
481
-
482
462
if self .build_status == BuildStatus .SKIPPED :
483
463
return
484
464
485
465
if self .work_dir != self .app_dir :
486
466
if os .path .exists (self .work_dir ):
487
- self . _logger .debug ('Removed existing work dir: %s' , self .work_dir )
467
+ LOGGER .debug ('Removed existing work dir: %s' , self .work_dir )
488
468
if not self .dry_run :
489
469
shutil .rmtree (self .work_dir )
490
470
491
- self . _logger .debug ('Copied app from %s to %s' , self .app_dir , self .work_dir )
471
+ LOGGER .debug ('Copied app from %s to %s' , self .app_dir , self .work_dir )
492
472
if not self .dry_run :
493
473
# if the new directory inside the original directory,
494
474
# make sure not to go into recursion.
@@ -502,7 +482,7 @@ def _pre_build(self) -> None:
502
482
shutil .copytree (self .app_dir , self .work_dir , ignore = ignore , symlinks = True )
503
483
504
484
if os .path .exists (self .build_path ):
505
- self . _logger .debug ('Removed existing build dir: %s' , self .build_path )
485
+ LOGGER .debug ('Removed existing build dir: %s' , self .build_path )
506
486
if not self .dry_run :
507
487
shutil .rmtree (self .build_path )
508
488
@@ -511,17 +491,17 @@ def _pre_build(self) -> None:
511
491
512
492
sdkconfig_file = os .path .join (self .work_dir , 'sdkconfig' )
513
493
if os .path .exists (sdkconfig_file ):
514
- self . _logger .debug ('Removed existing sdkconfig file: %s' , sdkconfig_file )
494
+ LOGGER .debug ('Removed existing sdkconfig file: %s' , sdkconfig_file )
515
495
if not self .dry_run :
516
496
os .unlink (sdkconfig_file )
517
497
518
498
if os .path .isfile (self .build_log_path ):
519
- self . _logger .debug ('Removed existing build log file: %s' , self .build_log_path )
499
+ LOGGER .debug ('Removed existing build log file: %s' , self .build_log_path )
520
500
if not self .dry_run :
521
501
os .unlink (self .build_log_path )
522
502
elif not self .dry_run :
523
503
os .makedirs (os .path .dirname (self .build_log_path ), exist_ok = True )
524
- self . _logger .info ('Writing build log to %s' , self .build_log_path )
504
+ LOGGER .info ('Writing build log to %s' , self .build_log_path )
525
505
526
506
if self .dry_run :
527
507
self .build_status = BuildStatus .SKIPPED
@@ -570,8 +550,6 @@ def _post_build(self) -> None:
570
550
):
571
551
return
572
552
573
- self ._build_stage = BuildStage .POST_BUILD
574
-
575
553
# both status applied
576
554
if self .copy_sdkconfig :
577
555
try :
@@ -580,9 +558,9 @@ def _post_build(self) -> None:
580
558
os .path .join (self .build_path , 'sdkconfig' ),
581
559
)
582
560
except Exception as e :
583
- self . _logger .warning ('Copy sdkconfig file from failed: %s' , e )
561
+ LOGGER .warning ('Copy sdkconfig file from failed: %s' , e )
584
562
else :
585
- self . _logger .debug ('Copied sdkconfig file from %s to %s' , self .work_dir , self .build_path )
563
+ LOGGER .debug ('Copied sdkconfig file from %s to %s' , self .work_dir , self .build_path )
586
564
587
565
# for originally success builds generate size.json if enabled
588
566
#
@@ -592,7 +570,7 @@ def _post_build(self) -> None:
592
570
self .write_size_json ()
593
571
594
572
if not os .path .isfile (self .build_log_path ):
595
- self . _logger .warning (f'{ self .build_log_path } does not exist. Skipping post build actions...' )
573
+ LOGGER .warning (f'{ self .build_log_path } does not exist. Skipping post build actions...' )
596
574
return
597
575
598
576
# check warnings
@@ -603,21 +581,21 @@ def _post_build(self) -> None:
603
581
is_error_or_warning , ignored = self .is_error_or_warning (line )
604
582
if is_error_or_warning :
605
583
if ignored :
606
- self . _logger .info ('[Ignored warning] %s' , line )
584
+ LOGGER .info ('[Ignored warning] %s' , line )
607
585
else :
608
- self . _logger .warning ('%s' , line )
586
+ LOGGER .warning ('%s' , line )
609
587
has_unignored_warning = True
610
588
611
589
# for failed builds, print last few lines to help debug
612
590
if self .build_status == BuildStatus .FAILED :
613
591
# print last few lines to help debug
614
- self . _logger .error (
592
+ LOGGER .error (
615
593
'Last %s lines from the build log "%s":' ,
616
594
self .LOG_DEBUG_LINES ,
617
595
self .build_log_path ,
618
596
)
619
597
for line in lines [- self .LOG_DEBUG_LINES :]:
620
- self . _logger .error ('%s' , line )
598
+ LOGGER .error ('%s' , line )
621
599
# correct build status for originally successful builds
622
600
elif self .build_status == BuildStatus .SUCCESS :
623
601
if self .check_warnings and has_unignored_warning :
@@ -636,7 +614,7 @@ def _finalize(self) -> None:
636
614
# remove temp log file
637
615
if self ._is_build_log_path_temp :
638
616
os .unlink (self .build_log_path )
639
- self . _logger .debug ('Removed success build temporary log file: %s' , self .build_log_path )
617
+ LOGGER .debug ('Removed success build temporary log file: %s' , self .build_log_path )
640
618
641
619
# Cleanup build directory if not preserving
642
620
if not self .preserve :
@@ -649,25 +627,25 @@ def _finalize(self) -> None:
649
627
self .build_path ,
650
628
exclude_file_patterns = exclude_list ,
651
629
)
652
- self . _logger .debug ('Removed built binaries under: %s' , self .build_path )
630
+ LOGGER .debug ('Removed built binaries under: %s' , self .build_path )
653
631
654
632
def _build (
655
633
self ,
656
634
* ,
657
- manifest_rootpath : t .Optional [str ] = None , # noqa: ARG002
658
- modified_components : t .Optional [t .List [str ]] = None , # noqa: ARG002
659
- modified_files : t .Optional [t .List [str ]] = None , # noqa: ARG002
660
- check_app_dependencies : bool = False , # noqa: ARG002
635
+ manifest_rootpath : t .Optional [str ] = None ,
636
+ modified_components : t .Optional [t .List [str ]] = None ,
637
+ modified_files : t .Optional [t .List [str ]] = None ,
638
+ check_app_dependencies : bool = False ,
661
639
) -> None :
662
- self . _build_stage = BuildStage . BUILD
640
+ pass
663
641
664
642
def _write_size_json (self ) -> None :
665
643
if not self .size_json_path :
666
644
return
667
645
668
646
map_file = find_first_match ('*.map' , self .build_path )
669
647
if not map_file :
670
- self . _logger .warning (
648
+ LOGGER .warning (
671
649
'.map file not found. Cannot write size json to file: %s' ,
672
650
self .size_json_path ,
673
651
)
@@ -703,18 +681,18 @@ def _write_size_json(self) -> None:
703
681
check = True ,
704
682
)
705
683
706
- self . _logger .debug ('Generated size info to %s' , self .size_json_path )
684
+ LOGGER .debug ('Generated size info to %s' , self .size_json_path )
707
685
708
686
def write_size_json (self ) -> None :
709
687
if self .target in PREVIEW_TARGETS :
710
688
# targets in preview may not yet have support in esp-idf-size
711
- self . _logger .info ('Skipping generation of size json for target %s as it is in preview.' , self .target )
689
+ LOGGER .info ('Skipping generation of size json for target %s as it is in preview.' , self .target )
712
690
return
713
691
714
692
try :
715
693
self ._write_size_json ()
716
694
except Exception as e :
717
- self . _logger .warning ('Failed to generate size json: %s' , e )
695
+ LOGGER .warning ('Failed to generate size json: %s' , e )
718
696
719
697
def to_json (self ) -> str :
720
698
return self .model_dump_json ()
@@ -969,7 +947,7 @@ def _build(
969
947
check = True ,
970
948
additional_env_dict = additional_env_dict ,
971
949
)
972
- self . _logger .debug ('generated project_description.json to check app dependencies' )
950
+ LOGGER .debug ('generated project_description.json to check app dependencies' )
973
951
974
952
with open (os .path .join (self .build_path , PROJECT_DESCRIPTION_JSON )) as fr :
975
953
build_components = {item for item in json .load (fr )['build_components' ] if item }
0 commit comments