mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	tools: ynl-gen: use temporary file for rendering
Currently any error during render leads to output an empty file. That is quite annoying when using tools/net/ynl/ynl-regen.sh which git greps files with content of "YNL-GEN.." and therefore ignores empty files. So once you fail to regen, you have to checkout the file. Avoid that by rendering to a temporary file first, only at the end copy the content to the actual destination. Signed-off-by: Jiri Pirko <jiri@nvidia.com> Reviewed-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
							parent
							
								
									58f2ffdedf
								
							
						
					
					
						commit
						f65f305ae0
					
				
					 1 changed files with 8 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -5,6 +5,8 @@ import argparse
 | 
			
		|||
import collections
 | 
			
		||||
import os
 | 
			
		||||
import re
 | 
			
		||||
import shutil
 | 
			
		||||
import tempfile
 | 
			
		||||
import yaml
 | 
			
		||||
 | 
			
		||||
from lib import SpecFamily, SpecAttrSet, SpecAttr, SpecOperation, SpecEnumSet, SpecEnumEntry
 | 
			
		||||
| 
						 | 
				
			
			@ -2304,7 +2306,7 @@ def main():
 | 
			
		|||
    parser.add_argument('-o', dest='out_file', type=str)
 | 
			
		||||
    args = parser.parse_args()
 | 
			
		||||
 | 
			
		||||
    out_file = open(args.out_file, 'w+') if args.out_file else os.sys.stdout
 | 
			
		||||
    tmp_file = tempfile.TemporaryFile('w+') if args.out_file else os.sys.stdout
 | 
			
		||||
 | 
			
		||||
    if args.header is None:
 | 
			
		||||
        parser.error("--header or --source is required")
 | 
			
		||||
| 
						 | 
				
			
			@ -2329,7 +2331,7 @@ def main():
 | 
			
		|||
        print(f'Message enum-model {parsed.msg_id_model} not supported for {args.mode} generation')
 | 
			
		||||
        os.sys.exit(1)
 | 
			
		||||
 | 
			
		||||
    cw = CodeWriter(BaseNlLib(), out_file)
 | 
			
		||||
    cw = CodeWriter(BaseNlLib(), tmp_file)
 | 
			
		||||
 | 
			
		||||
    _, spec_kernel = find_kernel_root(args.spec)
 | 
			
		||||
    if args.mode == 'uapi' or args.header:
 | 
			
		||||
| 
						 | 
				
			
			@ -2578,6 +2580,10 @@ def main():
 | 
			
		|||
    if args.header:
 | 
			
		||||
        cw.p(f'#endif /* {hdr_prot} */')
 | 
			
		||||
 | 
			
		||||
    if args.out_file:
 | 
			
		||||
        out_file = open(args.out_file, 'w+')
 | 
			
		||||
        tmp_file.seek(0)
 | 
			
		||||
        shutil.copyfileobj(tmp_file, out_file)
 | 
			
		||||
 | 
			
		||||
if __name__ == "__main__":
 | 
			
		||||
    main()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue