forked from qt-creator/qt-creator
		
	Add a small python program to wrap ninja and split its output nicely into stdout and stderr. Change-Id: Ib2fae405c170ea15910de20d5f45aaab75aa89cb Reviewed-by: Christian Stenger <christian.stenger@qt.io>
		
			
				
	
	
		
			32 lines
		
	
	
		
			944 B
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			944 B
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/python
 | 
						|
 | 
						|
'''A simple wrapper around ninja that enables Qt Creator to parse compile errors
 | 
						|
 | 
						|
   This wrapper splits up ninja output in such a way that Qt Creator will be able
 | 
						|
   to extract compile errors from the output of this script.
 | 
						|
 | 
						|
   Make sure that ninja is found in PATH and then override the make build step in
 | 
						|
   Qt Creator with this script to use it.
 | 
						|
'''
 | 
						|
 | 
						|
import os, subprocess, sys
 | 
						|
 | 
						|
def main():
 | 
						|
    stdout = os.fdopen(sys.stdout.fileno(), 'wb')
 | 
						|
    stderr = os.fdopen(sys.stderr.fileno(), 'wb')
 | 
						|
 | 
						|
    proc = subprocess.Popen(['ninja'] + sys.argv[1:], stdout=subprocess.PIPE, bufsize=256)
 | 
						|
 | 
						|
    for line in iter(proc.stdout.readline, b''):
 | 
						|
        if (line.startswith(b'[') or line.startswith(b'ninja: no work to do')) :
 | 
						|
            stdout.write(line)
 | 
						|
            stdout.flush()
 | 
						|
        else:
 | 
						|
            stderr.write(line)
 | 
						|
            stderr.flush()
 | 
						|
 | 
						|
    return proc.returncode
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    sys.exit(main())
 |