#!/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)