forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			68 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/usr/bin/env python3
 | |
| # This Source Code Form is subject to the terms of the Mozilla Public
 | |
| # License, v. 2.0. If a copy of the MPL was not distributed with this file,
 | |
| # You can obtain one at http://mozilla.org/MPL/2.0/.
 | |
| 
 | |
| import logging
 | |
| import os
 | |
| import sys
 | |
| from os import path
 | |
| from tempfile import mkstemp
 | |
| 
 | |
| sys.path.append(path.join(path.dirname(__file__), "../python"))
 | |
| logging.basicConfig(stream=sys.stdout, level=logging.INFO, format="%(message)s")
 | |
| log = logging.getLogger(__name__)
 | |
| 
 | |
| from async_download import download_from_config
 | |
| from mozrelease.update_verify import UpdateVerifyConfig
 | |
| from util.commands import run_cmd
 | |
| 
 | |
| UPDATE_VERIFY_COMMAND = ["bash", "verify.sh", "-c"]
 | |
| UPDATE_VERIFY_DIR = path.join(path.dirname(__file__), "../release/updates")
 | |
| 
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     from argparse import ArgumentParser
 | |
| 
 | |
|     parser = ArgumentParser("")
 | |
| 
 | |
|     parser.set_defaults(
 | |
|         chunks=None,
 | |
|         thisChunk=None,
 | |
|     )
 | |
|     parser.add_argument("--verify-config", required=True, dest="verifyConfig")
 | |
|     parser.add_argument("--verify-channel", required=True, dest="verify_channel")
 | |
|     parser.add_argument("--chunks", required=True, dest="chunks", type=int)
 | |
|     parser.add_argument("--this-chunk", required=True, dest="thisChunk", type=int)
 | |
|     parser.add_argument("--diff-summary", required=True, type=str)
 | |
| 
 | |
|     options = parser.parse_args()
 | |
|     assert options.chunks and options.thisChunk, "chunks and this-chunk are required"
 | |
|     assert path.isfile(options.verifyConfig), "Update verify config must exist!"
 | |
|     verifyConfigFile = options.verifyConfig
 | |
| 
 | |
|     fd, configFile = mkstemp()
 | |
|     # Needs to be opened in "bytes" mode because we perform relative seeks on it
 | |
|     fh = os.fdopen(fd, "wb")
 | |
|     try:
 | |
|         verifyConfig = UpdateVerifyConfig()
 | |
|         verifyConfig.read(path.join(UPDATE_VERIFY_DIR, verifyConfigFile))
 | |
|         myVerifyConfig = verifyConfig.getChunk(options.chunks, options.thisChunk)
 | |
|         # override the channel if explicitly set
 | |
|         if options.verify_channel:
 | |
|             myVerifyConfig.channel = options.verify_channel
 | |
|         myVerifyConfig.write(fh)
 | |
|         fh.close()
 | |
|         run_cmd(["cat", configFile])
 | |
| 
 | |
|         # Before verifying, we want to download and cache all required files
 | |
|         download_from_config(myVerifyConfig)
 | |
| 
 | |
|         run_cmd(
 | |
|             UPDATE_VERIFY_COMMAND + [configFile],
 | |
|             cwd=UPDATE_VERIFY_DIR,
 | |
|             env={"DIFF_SUMMARY_LOG": path.abspath(options.diff_summary)},
 | |
|         )
 | |
|     finally:
 | |
|         if path.exists(configFile):
 | |
|             os.unlink(configFile)
 | 
