gecko-dev/tools/update-verify/scripts/chunked-verify.py
Julien Cristau e92445954b Bug 1689040 - bump update-verify docker image to ubuntu 20.04. r=bhearsum
Use python3 in more places so we don't have to explicitly install
the python 2.x package.

The newer version of curl in 20.04 will hopefully fix the intermittent
http2 framing errors we've been seeing recently.

Differential Revision: https://phabricator.services.mozilla.com/D106259
2021-03-01 10:49:26 +00:00

65 lines
2.4 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/.
from __future__ import absolute_import, print_function
import logging
import os
from os import path
import sys
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 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])
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)