@ -8,6 +8,7 @@ import signal 
			
		
	
		
		
			
				
					
					import  shutil import  shutil  
			
		
	
		
		
			
				
					
					import  subprocess import  subprocess  
			
		
	
		
		
			
				
					
					import  datetime import  datetime  
			
		
	
		
		
			
				
					
					import  textwrap  
			
		
	
		
		
			
				
					
					from  selfdrive . swaglog  import  cloudlog ,  add_logentries_handler from  selfdrive . swaglog  import  cloudlog ,  add_logentries_handler  
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					from  common . basedir  import  BASEDIR ,  PARAMS from  common . basedir  import  BASEDIR ,  PARAMS  
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -66,9 +67,13 @@ def unblock_stdout(): 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					if  __name__  ==  " __main__ " : if  __name__  ==  " __main__ " :  
			
		
	
		
		
			
				
					
					  unblock_stdout ( )    unblock_stdout ( )   
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					if  __name__  ==  " __main__ "  and  ANDROID :  
			
		
	
		
		
			
				
					
					  from  common . spinner  import  Spinner    from  common . spinner  import  Spinner   
			
		
	
		
		
			
				
					
					  from  common . text_window  import  TextWindow   
			
		
	
		
		
			
				
					
					else : else :  
			
		
	
		
		
			
				
					
					  from  common . spinner  import  FakeSpinner  as  Spinner    from  common . spinner  import  FakeSpinner  as  Spinner   
			
		
	
		
		
			
				
					
					  from  common . text_window  import  FakeTextWindow  as  TextWindow   
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					import  importlib import  importlib  
			
		
	
		
		
			
				
					
					import  traceback import  traceback  
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -126,11 +131,15 @@ if not prebuilt: 
			
		
	
		
		
			
				
					
					        # Build failed log errors          # Build failed log errors   
			
		
	
		
		
			
				
					
					        errors  =  [ line . decode ( ' utf8 ' ,  ' replace ' )  for  line  in  compile_output          errors  =  [ line . decode ( ' utf8 ' ,  ' replace ' )  for  line  in  compile_output   
			
		
	
		
		
			
				
					
					                  if  any ( [ err  in  line  for  err  in  [ b ' error:  ' ,  b ' not found, needed by target ' ] ] ) ]                    if  any ( [ err  in  line  for  err  in  [ b ' error:  ' ,  b ' not found, needed by target ' ] ] ) ]   
			
		
	
		
		
			
				
					
					        errors  =  " \n " . join ( errors )          error_ s  =  " \n " . join ( errors )   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					        add_logentries_handler ( cloudlog )          add_logentries_handler ( cloudlog )   
			
		
	
		
		
			
				
					
					        cloudlog . error ( " scons build failed \n "  +  errors )          cloudlog . error ( " scons build failed \n "  +  error_s )   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					        # Show TextWindow   
			
		
	
		
		
			
				
					
					        error_s  =  " \n   \n " . join ( [ " \n " . join ( textwrap . wrap ( e ,  65 ) )  for  e  in  errors ] )   
			
		
	
		
		
			
				
					
					        with  TextWindow ( " Openpilot failed to build \n   \n "  +  error_s )  as  t :   
			
		
	
		
		
			
				
					
					          t . wait_for_exit ( )   
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					        # TODO: Show errors in TextWindow   
			
		
	
		
		
			
				
					
					        exit ( 1 )          exit ( 1 )   
			
		
	
		
		
			
				
					
					    else :      else :   
			
		
	
		
		
			
				
					
					      break        break   
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -589,8 +598,13 @@ if __name__ == "__main__": 
			
		
	
		
		
			
				
					
					  except  Exception :    except  Exception :   
			
		
	
		
		
			
				
					
					    add_logentries_handler ( cloudlog )      add_logentries_handler ( cloudlog )   
			
		
	
		
		
			
				
					
					    cloudlog . exception ( " Manager failed to start " )      cloudlog . exception ( " Manager failed to start " )   
			
		
	
		
		
			
				
					
					    # TODO: Show exception using TextWindow  
 
			
				
				
			
		
	
		
		
			
				
					
					    # error = traceback.format_exc()      # Show last 3 lines of traceback   
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					    error  =  traceback . format_exc ( 3 )   
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    error  =  " Manager failed to start \n   \n "  +  error   
			
		
	
		
		
			
				
					
					    with  TextWindow ( error )  as  t :   
			
		
	
		
		
			
				
					
					      t . wait_for_exit ( )   
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    raise      raise