forked from mirrors/gecko-dev
The android startup script uses hg logs to get the date, this was failing for users using git cinnibar as they did not have hg installed This patch adds compatability to the code that allows git cinnibar users without hg to run the android startup script Differential Revision: https://phabricator.services.mozilla.com/D204562
64 lines
2.2 KiB
Python
64 lines
2.2 KiB
Python
# 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 pathlib
|
|
import re
|
|
import subprocess
|
|
from datetime import datetime, timedelta
|
|
|
|
import requests
|
|
from mozperftest.system.android_startup import (
|
|
BASE_URL_DICT,
|
|
DATETIME_FORMAT,
|
|
KEY_ARCHITECTURE,
|
|
KEY_COMMIT,
|
|
KEY_DATETIME,
|
|
KEY_NAME,
|
|
KEY_PRODUCT,
|
|
)
|
|
from mozversioncontrol import get_repository_object
|
|
|
|
HTTP_200_OKAY = 200
|
|
|
|
|
|
def before_iterations(kw):
|
|
product = kw["AndroidStartUp_product"]
|
|
architecture = "arm64-v8a"
|
|
if product == "geckoview_example":
|
|
architecture = "aarch64"
|
|
if get_repository_object("").name == "git":
|
|
commit_info = subprocess.getoutput("git log --max-count 1")
|
|
else:
|
|
commit_info = subprocess.getoutput("hg log -l 1")
|
|
commit_date = re.search(r"[Dd]ate:\s+([:\s\w]+)\s+", str(commit_info)).group(1)
|
|
download_date = (
|
|
datetime.strptime(commit_date, "%a %b %d %H:%M:%S %Y") - timedelta(days=1)
|
|
).strftime(DATETIME_FORMAT)
|
|
|
|
nightly_url = BASE_URL_DICT[product].format(
|
|
date=download_date, architecture=architecture
|
|
)
|
|
filename = f"{product}_nightly_{architecture}.apk"
|
|
print("Fetching {}...".format(filename), end="", flush=True)
|
|
download_apk_as_date(nightly_url, download_date, filename)
|
|
print(f"Downloaded {product} for date: {download_date}")
|
|
|
|
kw["apk_metadata"] = {
|
|
KEY_NAME: filename,
|
|
KEY_DATETIME: download_date,
|
|
KEY_COMMIT: "",
|
|
KEY_ARCHITECTURE: architecture,
|
|
KEY_PRODUCT: product,
|
|
}
|
|
|
|
|
|
def download_apk_as_date(nightly_url, download_date_string, filename):
|
|
apk = requests.get(nightly_url)
|
|
if apk.status_code != HTTP_200_OKAY:
|
|
raise Exception(
|
|
f"Something went wrong downloading the apk check to make sure you have entered"
|
|
f" a date that is valid and that the apk for the date you have requested("
|
|
f"{download_date_string}) is available and that the URL({nightly_url}) is also "
|
|
f"valid"
|
|
)
|
|
pathlib.Path(filename).write_bytes(apk.content)
|