build: fix generation of large .vdi images
Instead of loading the whole image into the memory when generating the
sha256 sum, we load the file in chunks and update the hash incrementally
to avoid MemoryError in python. Also remove a stray empty line.
Fixes: #13056
Signed-off-by: Adones Pitogo <pitogo.adones@gmail.com>
(mention empty line removal, adds Fixes from PR)
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
(cherry picked from commit bdb4b78210)
			
			
This commit is contained in:
		 Adones Pitogo
					Adones Pitogo
				
			
				
					committed by
					
						 Christian Lamparter
						Christian Lamparter
					
				
			
			
				
	
			
			
			 Christian Lamparter
						Christian Lamparter
					
				
			
						parent
						
							62496e9a1a
						
					
				
				
					commit
					4ab8abfbf7
				
			| @@ -13,7 +13,6 @@ if len(argv) != 2: | |||||||
| json_path = Path(argv[1]) | json_path = Path(argv[1]) | ||||||
| file_path = Path(getenv("FILE_DIR")) / getenv("FILE_NAME") | file_path = Path(getenv("FILE_DIR")) / getenv("FILE_NAME") | ||||||
|  |  | ||||||
|  |  | ||||||
| if not file_path.is_file(): | if not file_path.is_file(): | ||||||
|     print("Skip JSON creation for non existing file", file_path) |     print("Skip JSON creation for non existing file", file_path) | ||||||
|     exit(0) |     exit(0) | ||||||
| @@ -37,7 +36,14 @@ def get_titles(): | |||||||
|  |  | ||||||
|  |  | ||||||
| device_id = getenv("DEVICE_ID") | device_id = getenv("DEVICE_ID") | ||||||
| hash_file = hashlib.sha256(file_path.read_bytes()).hexdigest() |  | ||||||
|  | sha256_hash = hashlib.sha256() | ||||||
|  | with open(str(file_path),"rb") as f: | ||||||
|  |     # Read and update hash string value in blocks of 4K | ||||||
|  |     for byte_block in iter(lambda: f.read(4096),b""): | ||||||
|  |         sha256_hash.update(byte_block) | ||||||
|  |  | ||||||
|  | hash_file = sha256_hash.hexdigest() | ||||||
|  |  | ||||||
| if file_path.with_suffix(file_path.suffix + ".sha256sum").exists(): | if file_path.with_suffix(file_path.suffix + ".sha256sum").exists(): | ||||||
|     hash_unsigned = ( |     hash_unsigned = ( | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user