@ -8,6 +8,7 @@ import signal 
			
		
	
		
			
				
					import  shutil  
			
		
	
		
			
				
					import  subprocess  
			
		
	
		
			
				
					import  datetime  
			
		
	
		
			
				
					import  textwrap  
			
		
	
		
			
				
					from  selfdrive . swaglog  import  cloudlog ,  add_logentries_handler  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					from  common . basedir  import  BASEDIR ,  PARAMS  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -66,9 +67,13 @@ def unblock_stdout(): 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					if  __name__  ==  " __main__ " :  
			
		
	
		
			
				
					  unblock_stdout ( )   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					if  __name__  ==  " __main__ "  and  ANDROID :  
			
		
	
		
			
				
					  from  common . spinner  import  Spinner   
			
		
	
		
			
				
					  from  common . text_window  import  TextWindow   
			
		
	
		
			
				
					else :  
			
		
	
		
			
				
					  from  common . spinner  import  FakeSpinner  as  Spinner   
			
		
	
		
			
				
					  from  common . text_window  import  FakeTextWindow  as  TextWindow   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					import  importlib  
			
		
	
		
			
				
					import  traceback  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -126,11 +131,15 @@ if not prebuilt: 
			
		
	
		
			
				
					        # Build failed log errors   
			
		
	
		
			
				
					        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 ' ] ] ) ]   
			
		
	
		
			
				
					        errors  =  " \n " . join ( errors )   
			
		
	
		
			
				
					        error_ s  =  " \n " . join ( errors )   
			
		
	
		
			
				
					        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 )   
			
		
	
		
			
				
					    else :   
			
		
	
		
			
				
					      break   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -589,8 +598,13 @@ if __name__ == "__main__": 
			
		
	
		
			
				
					  except  Exception :   
			
		
	
		
			
				
					    add_logentries_handler ( cloudlog )   
			
		
	
		
			
				
					    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