Do not run code on version.py import (#23063)
* Do not run code on version.py import * fix athenapull/23065/head
parent
7c8044d2db
commit
f7c46c6949
|
@ -3,7 +3,7 @@ import os
|
||||||
import requests
|
import requests
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
from common.basedir import PERSIST
|
from common.basedir import PERSIST
|
||||||
from selfdrive.version import version
|
from selfdrive.version import get_version
|
||||||
|
|
||||||
API_HOST = os.getenv('API_HOST', 'https://api.commadotai.com')
|
API_HOST = os.getenv('API_HOST', 'https://api.commadotai.com')
|
||||||
|
|
||||||
|
@ -39,8 +39,8 @@ class Api():
|
||||||
def api_get(endpoint, method='GET', timeout=None, access_token=None, **params):
|
def api_get(endpoint, method='GET', timeout=None, access_token=None, **params):
|
||||||
headers = {}
|
headers = {}
|
||||||
if access_token is not None:
|
if access_token is not None:
|
||||||
headers['Authorization'] = "JWT "+access_token
|
headers['Authorization'] = "JWT " + access_token
|
||||||
|
|
||||||
headers['User-Agent'] = "openpilot-" + version
|
headers['User-Agent'] = "openpilot-" + get_version()
|
||||||
|
|
||||||
return requests.request(method, API_HOST + "/" + endpoint, timeout=timeout, headers=headers, params=params)
|
return requests.request(method, API_HOST + "/" + endpoint, timeout=timeout, headers=headers, params=params)
|
||||||
|
|
|
@ -30,7 +30,7 @@ from selfdrive.hardware import HARDWARE, PC
|
||||||
from selfdrive.loggerd.config import ROOT
|
from selfdrive.loggerd.config import ROOT
|
||||||
from selfdrive.loggerd.xattr_cache import getxattr, setxattr
|
from selfdrive.loggerd.xattr_cache import getxattr, setxattr
|
||||||
from selfdrive.swaglog import cloudlog, SWAGLOG_DIR
|
from selfdrive.swaglog import cloudlog, SWAGLOG_DIR
|
||||||
from selfdrive.version import version, get_version, get_git_remote, get_git_branch, get_git_commit
|
from selfdrive.version import get_version, get_origin, get_short_branch, get_commit
|
||||||
|
|
||||||
ATHENA_HOST = os.getenv('ATHENA_HOST', 'wss://athena.comma.ai')
|
ATHENA_HOST = os.getenv('ATHENA_HOST', 'wss://athena.comma.ai')
|
||||||
HANDLER_THREADS = int(os.getenv('HANDLER_THREADS', "4"))
|
HANDLER_THREADS = int(os.getenv('HANDLER_THREADS', "4"))
|
||||||
|
@ -176,9 +176,9 @@ def getMessage(service=None, timeout=1000):
|
||||||
def getVersion():
|
def getVersion():
|
||||||
return {
|
return {
|
||||||
"version": get_version(),
|
"version": get_version(),
|
||||||
"remote": get_git_remote(),
|
"remote": get_origin(),
|
||||||
"branch": get_git_branch(),
|
"branch": get_short_branch(),
|
||||||
"commit": get_git_commit(),
|
"commit": get_commit(),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -551,7 +551,7 @@ def main():
|
||||||
except socket.timeout:
|
except socket.timeout:
|
||||||
try:
|
try:
|
||||||
r = requests.get("http://api.commadotai.com/v1/me", allow_redirects=False,
|
r = requests.get("http://api.commadotai.com/v1/me", allow_redirects=False,
|
||||||
headers={"User-Agent": f"openpilot-{version}"}, timeout=15.0)
|
headers={"User-Agent": f"openpilot-{get_version()}"}, timeout=15.0)
|
||||||
if r.status_code == 302 and r.headers['Location'].startswith("http://u.web2go.com"):
|
if r.status_code == 302 and r.headers['Location'].startswith("http://u.web2go.com"):
|
||||||
params.put_bool("PrimeRedirected", True)
|
params.put_bool("PrimeRedirected", True)
|
||||||
except Exception:
|
except Exception:
|
||||||
|
|
|
@ -6,7 +6,7 @@ from multiprocessing import Process
|
||||||
from common.params import Params
|
from common.params import Params
|
||||||
from selfdrive.manager.process import launcher
|
from selfdrive.manager.process import launcher
|
||||||
from selfdrive.swaglog import cloudlog
|
from selfdrive.swaglog import cloudlog
|
||||||
from selfdrive.version import version, dirty
|
from selfdrive.version import get_version, get_dirty
|
||||||
|
|
||||||
ATHENA_MGR_PID_PARAM = "AthenadPid"
|
ATHENA_MGR_PID_PARAM = "AthenadPid"
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ ATHENA_MGR_PID_PARAM = "AthenadPid"
|
||||||
def main():
|
def main():
|
||||||
params = Params()
|
params = Params()
|
||||||
dongle_id = params.get("DongleId").decode('utf-8')
|
dongle_id = params.get("DongleId").decode('utf-8')
|
||||||
cloudlog.bind_global(dongle_id=dongle_id, version=version, dirty=dirty)
|
cloudlog.bind_global(dongle_id=dongle_id, version=get_version(), dirty=get_dirty())
|
||||||
|
|
||||||
try:
|
try:
|
||||||
while 1:
|
while 1:
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import os
|
import os
|
||||||
from common.params import Params
|
from common.params import Params
|
||||||
from common.basedir import BASEDIR
|
from common.basedir import BASEDIR
|
||||||
from selfdrive.version import comma_remote, tested_branch
|
from selfdrive.version import get_comma_remote, get_tested_branch
|
||||||
from selfdrive.car.fingerprints import eliminate_incompatible_cars, all_legacy_fingerprint_cars
|
from selfdrive.car.fingerprints import eliminate_incompatible_cars, all_legacy_fingerprint_cars
|
||||||
from selfdrive.car.vin import get_vin, VIN_UNKNOWN
|
from selfdrive.car.vin import get_vin, VIN_UNKNOWN
|
||||||
from selfdrive.car.fw_versions import get_fw_versions, match_fw_to_car
|
from selfdrive.car.fw_versions import get_fw_versions, match_fw_to_car
|
||||||
|
@ -14,7 +14,7 @@ EventName = car.CarEvent.EventName
|
||||||
|
|
||||||
|
|
||||||
def get_startup_event(car_recognized, controller_available, fw_seen):
|
def get_startup_event(car_recognized, controller_available, fw_seen):
|
||||||
if comma_remote and tested_branch:
|
if get_comma_remote() and get_tested_branch():
|
||||||
event = EventName.startup
|
event = EventName.startup
|
||||||
else:
|
else:
|
||||||
event = EventName.startupMaster
|
event = EventName.startupMaster
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
"""Install exception handler for process crash."""
|
"""Install exception handler for process crash."""
|
||||||
from selfdrive.swaglog import cloudlog
|
from selfdrive.swaglog import cloudlog
|
||||||
from selfdrive.version import version
|
from selfdrive.version import get_version
|
||||||
|
|
||||||
import sentry_sdk
|
import sentry_sdk
|
||||||
from sentry_sdk.integrations.threading import ThreadingIntegration
|
from sentry_sdk.integrations.threading import ThreadingIntegration
|
||||||
|
@ -24,4 +24,4 @@ def bind_extra(**kwargs) -> None:
|
||||||
def init() -> None:
|
def init() -> None:
|
||||||
sentry_sdk.init("https://a8dc76b5bfb34908a601d67e2aa8bcf9@o33823.ingest.sentry.io/77924",
|
sentry_sdk.init("https://a8dc76b5bfb34908a601d67e2aa8bcf9@o33823.ingest.sentry.io/77924",
|
||||||
default_integrations=False, integrations=[ThreadingIntegration(propagate_hub=True)],
|
default_integrations=False, integrations=[ThreadingIntegration(propagate_hub=True)],
|
||||||
release=version)
|
release=get_version())
|
||||||
|
|
|
@ -18,7 +18,7 @@ from selfdrive.hardware import PC, TICI
|
||||||
from selfdrive.loggerd.config import ROOT
|
from selfdrive.loggerd.config import ROOT
|
||||||
from selfdrive.manager.process_config import managed_processes
|
from selfdrive.manager.process_config import managed_processes
|
||||||
from selfdrive.test.helpers import with_processes
|
from selfdrive.test.helpers import with_processes
|
||||||
from selfdrive.version import version as VERSION
|
from selfdrive.version import get_version
|
||||||
from tools.lib.logreader import LogReader
|
from tools.lib.logreader import LogReader
|
||||||
|
|
||||||
SentinelType = log.Sentinel.SentinelType
|
SentinelType = log.Sentinel.SentinelType
|
||||||
|
@ -95,7 +95,7 @@ class TestLoggerd(unittest.TestCase):
|
||||||
initData = lr[0].initData
|
initData = lr[0].initData
|
||||||
|
|
||||||
self.assertTrue(initData.dirty != bool(os.environ["CLEAN"]))
|
self.assertTrue(initData.dirty != bool(os.environ["CLEAN"]))
|
||||||
self.assertEqual(initData.version, VERSION)
|
self.assertEqual(initData.version, get_version())
|
||||||
|
|
||||||
if os.path.isfile("/proc/cmdline"):
|
if os.path.isfile("/proc/cmdline"):
|
||||||
with open("/proc/cmdline") as f:
|
with open("/proc/cmdline") as f:
|
||||||
|
|
|
@ -12,7 +12,7 @@ from common.spinner import Spinner
|
||||||
from common.text_window import TextWindow
|
from common.text_window import TextWindow
|
||||||
from selfdrive.hardware import TICI
|
from selfdrive.hardware import TICI
|
||||||
from selfdrive.swaglog import cloudlog, add_file_handler
|
from selfdrive.swaglog import cloudlog, add_file_handler
|
||||||
from selfdrive.version import dirty
|
from selfdrive.version import get_dirty
|
||||||
|
|
||||||
MAX_CACHE_SIZE = 2e9
|
MAX_CACHE_SIZE = 2e9
|
||||||
CACHE_DIR = Path("/data/scons_cache" if TICI else "/tmp/scons_cache")
|
CACHE_DIR = Path("/data/scons_cache" if TICI else "/tmp/scons_cache")
|
||||||
|
@ -98,4 +98,4 @@ def build(spinner, dirty=False):
|
||||||
if __name__ == "__main__" and not PREBUILT:
|
if __name__ == "__main__" and not PREBUILT:
|
||||||
spinner = Spinner()
|
spinner = Spinner()
|
||||||
spinner.update_progress(0, 100)
|
spinner.update_progress(0, 100)
|
||||||
build(spinner, dirty)
|
build(spinner, get_dirty())
|
||||||
|
|
|
@ -18,12 +18,13 @@ from selfdrive.manager.process import ensure_running
|
||||||
from selfdrive.manager.process_config import managed_processes
|
from selfdrive.manager.process_config import managed_processes
|
||||||
from selfdrive.athena.registration import register, UNREGISTERED_DONGLE_ID
|
from selfdrive.athena.registration import register, UNREGISTERED_DONGLE_ID
|
||||||
from selfdrive.swaglog import cloudlog, add_file_handler
|
from selfdrive.swaglog import cloudlog, add_file_handler
|
||||||
from selfdrive.version import dirty, get_git_commit, version, origin, branch, commit, \
|
from selfdrive.version import get_dirty, get_commit, get_version, get_origin, get_branch, \
|
||||||
terms_version, training_version, comma_remote, \
|
terms_version, training_version, get_comma_remote
|
||||||
get_git_branch, get_git_remote
|
|
||||||
|
|
||||||
sys.path.append(os.path.join(BASEDIR, "pyextra"))
|
sys.path.append(os.path.join(BASEDIR, "pyextra"))
|
||||||
|
|
||||||
|
|
||||||
def manager_init():
|
def manager_init():
|
||||||
# update system time from panda
|
# update system time from panda
|
||||||
set_time(cloudlog)
|
set_time(cloudlog)
|
||||||
|
@ -69,12 +70,12 @@ def manager_init():
|
||||||
print("WARNING: failed to make /dev/shm")
|
print("WARNING: failed to make /dev/shm")
|
||||||
|
|
||||||
# set version params
|
# set version params
|
||||||
params.put("Version", version)
|
params.put("Version", get_version())
|
||||||
params.put("TermsVersion", terms_version)
|
params.put("TermsVersion", terms_version)
|
||||||
params.put("TrainingVersion", training_version)
|
params.put("TrainingVersion", training_version)
|
||||||
params.put("GitCommit", get_git_commit(default=""))
|
params.put("GitCommit", get_commit(default=""))
|
||||||
params.put("GitBranch", get_git_branch(default=""))
|
params.put("GitBranch", get_branch(default=""))
|
||||||
params.put("GitRemote", get_git_remote(default=""))
|
params.put("GitRemote", get_origin(default=""))
|
||||||
|
|
||||||
# set dongle id
|
# set dongle id
|
||||||
reg_res = register(show_spinner=True)
|
reg_res = register(show_spinner=True)
|
||||||
|
@ -85,16 +86,16 @@ def manager_init():
|
||||||
raise Exception(f"Registration failed for device {serial}")
|
raise Exception(f"Registration failed for device {serial}")
|
||||||
os.environ['DONGLE_ID'] = dongle_id # Needed for swaglog
|
os.environ['DONGLE_ID'] = dongle_id # Needed for swaglog
|
||||||
|
|
||||||
if not dirty:
|
if not get_dirty():
|
||||||
os.environ['CLEAN'] = '1'
|
os.environ['CLEAN'] = '1'
|
||||||
|
|
||||||
cloudlog.bind_global(dongle_id=dongle_id, version=version, dirty=dirty,
|
cloudlog.bind_global(dongle_id=dongle_id, version=get_version(), dirty=get_dirty(),
|
||||||
device=HARDWARE.get_device_type())
|
device=HARDWARE.get_device_type())
|
||||||
|
|
||||||
if comma_remote and not (os.getenv("NOLOG") or os.getenv("NOCRASH") or PC):
|
if get_comma_remote() and not (os.getenv("NOLOG") or os.getenv("NOCRASH") or PC):
|
||||||
crash.init()
|
crash.init()
|
||||||
crash.bind_user(id=dongle_id)
|
crash.bind_user(id=dongle_id)
|
||||||
crash.bind_extra(dirty=dirty, origin=origin, branch=branch, commit=commit,
|
crash.bind_extra(dirty=get_dirty(), origin=get_origin(), branch=get_branch(), commit=get_commit(),
|
||||||
device=HARDWARE.get_device_type())
|
device=HARDWARE.get_device_type())
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ from selfdrive.manager.process_config import managed_processes
|
||||||
from selfdrive.test.openpilotci import BASE_URL, get_url
|
from selfdrive.test.openpilotci import BASE_URL, get_url
|
||||||
from selfdrive.test.process_replay.compare_logs import compare_logs, save_log
|
from selfdrive.test.process_replay.compare_logs import compare_logs, save_log
|
||||||
from selfdrive.test.process_replay.test_processes import format_diff
|
from selfdrive.test.process_replay.test_processes import format_diff
|
||||||
from selfdrive.version import get_git_commit
|
from selfdrive.version import get_commit
|
||||||
from tools.lib.framereader import FrameReader
|
from tools.lib.framereader import FrameReader
|
||||||
from tools.lib.logreader import LogReader
|
from tools.lib.logreader import LogReader
|
||||||
|
|
||||||
|
@ -169,7 +169,7 @@ if __name__ == "__main__":
|
||||||
|
|
||||||
print("Uploading new refs")
|
print("Uploading new refs")
|
||||||
|
|
||||||
new_commit = get_git_commit()
|
new_commit = get_commit()
|
||||||
log_fn = get_log_fn(new_commit)
|
log_fn = get_log_fn(new_commit)
|
||||||
save_log(log_fn, log_msgs)
|
save_log(log_fn, log_msgs)
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -6,7 +6,7 @@ from selfdrive.test.openpilotci import upload_file, get_url
|
||||||
from selfdrive.test.process_replay.compare_logs import save_log
|
from selfdrive.test.process_replay.compare_logs import save_log
|
||||||
from selfdrive.test.process_replay.process_replay import replay_process, CONFIGS
|
from selfdrive.test.process_replay.process_replay import replay_process, CONFIGS
|
||||||
from selfdrive.test.process_replay.test_processes import segments
|
from selfdrive.test.process_replay.test_processes import segments
|
||||||
from selfdrive.version import get_git_commit
|
from selfdrive.version import get_commit
|
||||||
from tools.lib.logreader import LogReader
|
from tools.lib.logreader import LogReader
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
@ -16,7 +16,7 @@ if __name__ == "__main__":
|
||||||
process_replay_dir = os.path.dirname(os.path.abspath(__file__))
|
process_replay_dir = os.path.dirname(os.path.abspath(__file__))
|
||||||
ref_commit_fn = os.path.join(process_replay_dir, "ref_commit")
|
ref_commit_fn = os.path.join(process_replay_dir, "ref_commit")
|
||||||
|
|
||||||
ref_commit = get_git_commit()
|
ref_commit = get_commit()
|
||||||
if ref_commit is None:
|
if ref_commit is None:
|
||||||
raise Exception("couldn't get ref commit")
|
raise Exception("couldn't get ref commit")
|
||||||
with open(ref_commit_fn, "w") as f:
|
with open(ref_commit_fn, "w") as f:
|
||||||
|
|
|
@ -22,7 +22,7 @@ from selfdrive.hardware import EON, TICI, PC, HARDWARE
|
||||||
from selfdrive.loggerd.config import get_available_percent
|
from selfdrive.loggerd.config import get_available_percent
|
||||||
from selfdrive.swaglog import cloudlog
|
from selfdrive.swaglog import cloudlog
|
||||||
from selfdrive.thermald.power_monitoring import PowerMonitoring
|
from selfdrive.thermald.power_monitoring import PowerMonitoring
|
||||||
from selfdrive.version import tested_branch, terms_version, training_version
|
from selfdrive.version import get_tested_branch, terms_version, training_version
|
||||||
|
|
||||||
ThermalStatus = log.DeviceState.ThermalStatus
|
ThermalStatus = log.DeviceState.ThermalStatus
|
||||||
NetworkType = log.DeviceState.NetworkType
|
NetworkType = log.DeviceState.NetworkType
|
||||||
|
@ -343,7 +343,7 @@ def thermald_thread():
|
||||||
last_update_exception = params.get("LastUpdateException", encoding='utf8')
|
last_update_exception = params.get("LastUpdateException", encoding='utf8')
|
||||||
|
|
||||||
if update_failed_count > 15 and last_update_exception is not None:
|
if update_failed_count > 15 and last_update_exception is not None:
|
||||||
if tested_branch:
|
if get_tested_branch():
|
||||||
extra_text = "Ensure the software is correctly installed"
|
extra_text = "Ensure the software is correctly installed"
|
||||||
else:
|
else:
|
||||||
extra_text = last_update_exception
|
extra_text = last_update_exception
|
||||||
|
|
|
@ -15,7 +15,7 @@ from common.file_helpers import mkdirs_exists_ok
|
||||||
from selfdrive.hardware import TICI, HARDWARE
|
from selfdrive.hardware import TICI, HARDWARE
|
||||||
from selfdrive.loggerd.config import ROOT
|
from selfdrive.loggerd.config import ROOT
|
||||||
from selfdrive.swaglog import cloudlog
|
from selfdrive.swaglog import cloudlog
|
||||||
from selfdrive.version import branch, commit, dirty, origin, version
|
from selfdrive.version import get_branch, get_commit, get_dirty, get_origin, get_version
|
||||||
|
|
||||||
MAX_SIZE = 100000 * 10 # mal size is 40-100k, allow up to 1M
|
MAX_SIZE = 100000 * 10 # mal size is 40-100k, allow up to 1M
|
||||||
if TICI:
|
if TICI:
|
||||||
|
@ -109,7 +109,7 @@ def report_tombstone_android(fn):
|
||||||
clean_path = executable.replace('./', '').replace('/', '_')
|
clean_path = executable.replace('./', '').replace('/', '_')
|
||||||
date = datetime.datetime.now().strftime("%Y-%m-%d--%H-%M-%S")
|
date = datetime.datetime.now().strftime("%Y-%m-%d--%H-%M-%S")
|
||||||
|
|
||||||
new_fn = f"{date}_{commit[:8]}_{safe_fn(clean_path)}"[:MAX_TOMBSTONE_FN_LEN]
|
new_fn = f"{date}_{get_commit(default='nocommit')[:8]}_{safe_fn(clean_path)}"[:MAX_TOMBSTONE_FN_LEN]
|
||||||
|
|
||||||
crashlog_dir = os.path.join(ROOT, "crash")
|
crashlog_dir = os.path.join(ROOT, "crash")
|
||||||
mkdirs_exists_ok(crashlog_dir)
|
mkdirs_exists_ok(crashlog_dir)
|
||||||
|
@ -183,7 +183,7 @@ def report_tombstone_apport(fn):
|
||||||
clean_path = path.replace('/', '_')
|
clean_path = path.replace('/', '_')
|
||||||
date = datetime.datetime.now().strftime("%Y-%m-%d--%H-%M-%S")
|
date = datetime.datetime.now().strftime("%Y-%m-%d--%H-%M-%S")
|
||||||
|
|
||||||
new_fn = f"{date}_{commit[:8]}_{safe_fn(clean_path)}"[:MAX_TOMBSTONE_FN_LEN]
|
new_fn = f"{date}_{get_commit(default='nocommit')[:8]}_{safe_fn(clean_path)}"[:MAX_TOMBSTONE_FN_LEN]
|
||||||
|
|
||||||
crashlog_dir = os.path.join(ROOT, "crash")
|
crashlog_dir = os.path.join(ROOT, "crash")
|
||||||
mkdirs_exists_ok(crashlog_dir)
|
mkdirs_exists_ok(crashlog_dir)
|
||||||
|
@ -203,14 +203,14 @@ def main():
|
||||||
|
|
||||||
sentry_sdk.utils.MAX_STRING_LENGTH = 8192
|
sentry_sdk.utils.MAX_STRING_LENGTH = 8192
|
||||||
sentry_sdk.init("https://a40f22e13cbc4261873333c125fc9d38@o33823.ingest.sentry.io/157615",
|
sentry_sdk.init("https://a40f22e13cbc4261873333c125fc9d38@o33823.ingest.sentry.io/157615",
|
||||||
default_integrations=False, release=version)
|
default_integrations=False, release=get_version())
|
||||||
|
|
||||||
dongle_id = Params().get("DongleId", encoding='utf-8')
|
dongle_id = Params().get("DongleId", encoding='utf-8')
|
||||||
sentry_sdk.set_user({"id": dongle_id})
|
sentry_sdk.set_user({"id": dongle_id})
|
||||||
sentry_sdk.set_tag("dirty", dirty)
|
sentry_sdk.set_tag("dirty", get_dirty())
|
||||||
sentry_sdk.set_tag("origin", origin)
|
sentry_sdk.set_tag("origin", get_origin())
|
||||||
sentry_sdk.set_tag("branch", branch)
|
sentry_sdk.set_tag("branch", get_branch())
|
||||||
sentry_sdk.set_tag("commit", commit)
|
sentry_sdk.set_tag("commit", get_commit())
|
||||||
sentry_sdk.set_tag("device", HARDWARE.get_device_type())
|
sentry_sdk.set_tag("device", HARDWARE.get_device_type())
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
from typing import List, Optional
|
from typing import List, Optional
|
||||||
|
from functools import lru_cache
|
||||||
|
|
||||||
from common.basedir import BASEDIR
|
from common.basedir import BASEDIR
|
||||||
from selfdrive.swaglog import cloudlog
|
from selfdrive.swaglog import cloudlog
|
||||||
|
@ -9,9 +10,16 @@ from selfdrive.swaglog import cloudlog
|
||||||
|
|
||||||
TESTED_BRANCHES = ['devel', 'release2-staging', 'release3-staging', 'dashcam-staging', 'release2', 'release3', 'dashcam']
|
TESTED_BRANCHES = ['devel', 'release2-staging', 'release3-staging', 'dashcam-staging', 'release2', 'release3', 'dashcam']
|
||||||
|
|
||||||
|
training_version: bytes = b"0.2.0"
|
||||||
|
terms_version: bytes = b"2"
|
||||||
|
|
||||||
|
|
||||||
|
def cache(user_function, /):
|
||||||
|
return lru_cache(maxsize=None)(user_function)
|
||||||
|
|
||||||
|
|
||||||
def run_cmd(cmd: List[str]) -> str:
|
def run_cmd(cmd: List[str]) -> str:
|
||||||
return subprocess.check_output(cmd, encoding='utf8').strip()
|
return subprocess.check_output(cmd, encoding='utf8').strip()
|
||||||
|
|
||||||
|
|
||||||
def run_cmd_default(cmd: List[str], default: Optional[str] = None) -> Optional[str]:
|
def run_cmd_default(cmd: List[str], default: Optional[str] = None) -> Optional[str]:
|
||||||
|
@ -21,19 +29,23 @@ def run_cmd_default(cmd: List[str], default: Optional[str] = None) -> Optional[s
|
||||||
return default
|
return default
|
||||||
|
|
||||||
|
|
||||||
def get_git_commit(branch: str = "HEAD", default: Optional[str] = None) -> Optional[str]:
|
@cache
|
||||||
|
def get_commit(branch: str = "HEAD", default: Optional[str] = None) -> Optional[str]:
|
||||||
return run_cmd_default(["git", "rev-parse", branch], default=default)
|
return run_cmd_default(["git", "rev-parse", branch], default=default)
|
||||||
|
|
||||||
|
|
||||||
def get_git_branch(default: Optional[str] = None) -> Optional[str]:
|
@cache
|
||||||
|
def get_short_branch(default: Optional[str] = None) -> Optional[str]:
|
||||||
return run_cmd_default(["git", "rev-parse", "--abbrev-ref", "HEAD"], default=default)
|
return run_cmd_default(["git", "rev-parse", "--abbrev-ref", "HEAD"], default=default)
|
||||||
|
|
||||||
|
|
||||||
def get_git_full_branchname(default: Optional[str] = None) -> Optional[str]:
|
@cache
|
||||||
|
def get_branch(default: Optional[str] = None) -> Optional[str]:
|
||||||
return run_cmd_default(["git", "rev-parse", "--abbrev-ref", "--symbolic-full-name", "@{u}"], default=default)
|
return run_cmd_default(["git", "rev-parse", "--abbrev-ref", "--symbolic-full-name", "@{u}"], default=default)
|
||||||
|
|
||||||
|
|
||||||
def get_git_remote(default: Optional[str] = None) -> Optional[str]:
|
@cache
|
||||||
|
def get_origin(default: Optional[str] = None) -> Optional[str]:
|
||||||
try:
|
try:
|
||||||
local_branch = run_cmd(["git", "name-rev", "--name-only", "HEAD"])
|
local_branch = run_cmd(["git", "name-rev", "--name-only", "HEAD"])
|
||||||
tracking_remote = run_cmd(["git", "config", "branch." + local_branch + ".remote"])
|
tracking_remote = run_cmd(["git", "config", "branch." + local_branch + ".remote"])
|
||||||
|
@ -42,55 +54,68 @@ def get_git_remote(default: Optional[str] = None) -> Optional[str]:
|
||||||
return run_cmd_default(["git", "config", "--get", "remote.origin.url"], default=default)
|
return run_cmd_default(["git", "config", "--get", "remote.origin.url"], default=default)
|
||||||
|
|
||||||
|
|
||||||
def get_version():
|
@cache
|
||||||
|
def get_version() -> str:
|
||||||
with open(os.path.join(os.path.dirname(os.path.abspath(__file__)), "common", "version.h")) as _versionf:
|
with open(os.path.join(os.path.dirname(os.path.abspath(__file__)), "common", "version.h")) as _versionf:
|
||||||
version = _versionf.read().split('"')[1]
|
version = _versionf.read().split('"')[1]
|
||||||
return version
|
return version
|
||||||
|
|
||||||
version = get_version()
|
|
||||||
prebuilt = os.path.exists(os.path.join(BASEDIR, 'prebuilt'))
|
|
||||||
|
|
||||||
training_version: bytes = b"0.2.0"
|
@cache
|
||||||
terms_version: bytes = b"2"
|
def get_prebuilt() -> bool:
|
||||||
|
return os.path.exists(os.path.join(BASEDIR, 'prebuilt'))
|
||||||
|
|
||||||
dirty: bool = True
|
|
||||||
comma_remote: bool = False
|
|
||||||
tested_branch: bool = False
|
|
||||||
origin = get_git_remote()
|
|
||||||
branch = get_git_full_branchname()
|
|
||||||
commit = get_git_commit()
|
|
||||||
|
|
||||||
if (origin is not None) and (branch is not None):
|
@cache
|
||||||
|
def get_comma_remote() -> bool:
|
||||||
|
origin = get_origin()
|
||||||
|
if origin is None:
|
||||||
|
return False
|
||||||
|
|
||||||
|
return origin.startswith('git@github.com:commaai') or origin.startswith('https://github.com/commaai')
|
||||||
|
|
||||||
|
|
||||||
|
@cache
|
||||||
|
def get_tested_branch() -> bool:
|
||||||
|
return get_short_branch() in TESTED_BRANCHES
|
||||||
|
|
||||||
|
|
||||||
|
@cache
|
||||||
|
def get_dirty() -> bool:
|
||||||
|
origin = get_origin()
|
||||||
|
branch = get_branch()
|
||||||
|
if (origin is None) or (branch is None):
|
||||||
|
return True
|
||||||
|
|
||||||
|
dirty = False
|
||||||
try:
|
try:
|
||||||
comma_remote = origin.startswith('git@github.com:commaai') or origin.startswith('https://github.com/commaai')
|
|
||||||
tested_branch = get_git_branch() in TESTED_BRANCHES
|
|
||||||
|
|
||||||
dirty = False
|
|
||||||
|
|
||||||
# Actually check dirty files
|
# Actually check dirty files
|
||||||
if not prebuilt:
|
if not get_prebuilt():
|
||||||
# This is needed otherwise touched files might show up as modified
|
# This is needed otherwise touched files might show up as modified
|
||||||
try:
|
try:
|
||||||
subprocess.check_call(["git", "update-index", "--refresh"])
|
subprocess.check_call(["git", "update-index", "--refresh"])
|
||||||
except subprocess.CalledProcessError:
|
except subprocess.CalledProcessError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
dirty = (subprocess.call(["git", "diff-index", "--quiet", branch, "--"]) != 0)
|
dirty = (subprocess.call(["git", "diff-index", "--quiet", branch, "--"]) != 0)
|
||||||
|
|
||||||
# Log dirty files
|
# Log dirty files
|
||||||
if dirty and comma_remote:
|
if dirty and get_comma_remote():
|
||||||
try:
|
try:
|
||||||
dirty_files = run_cmd(["git", "diff-index", branch, "--"])
|
dirty_files = run_cmd(["git", "diff-index", branch, "--"])
|
||||||
cloudlog.event("dirty comma branch", version=version, dirty=dirty, origin=origin, branch=branch,
|
cloudlog.event("dirty comma branch", version=get_version(), dirty=dirty, origin=origin, branch=branch,
|
||||||
dirty_files=dirty_files, commit=commit, origin_commit=get_git_commit(branch))
|
dirty_files=dirty_files, commit=get_commit(), origin_commit=get_commit(branch))
|
||||||
except subprocess.CalledProcessError:
|
except subprocess.CalledProcessError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
dirty = dirty or (not comma_remote)
|
dirty = dirty or (not get_comma_remote())
|
||||||
dirty = dirty or ('master' in branch)
|
dirty = dirty or ('master' in branch)
|
||||||
|
|
||||||
except subprocess.CalledProcessError:
|
except subprocess.CalledProcessError:
|
||||||
dirty = True
|
|
||||||
cloudlog.exception("git subprocess failed while checking dirty")
|
cloudlog.exception("git subprocess failed while checking dirty")
|
||||||
|
dirty = True
|
||||||
|
|
||||||
|
return dirty
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
@ -100,8 +125,9 @@ if __name__ == "__main__":
|
||||||
params.put("TermsVersion", terms_version)
|
params.put("TermsVersion", terms_version)
|
||||||
params.put("TrainingVersion", training_version)
|
params.put("TrainingVersion", training_version)
|
||||||
|
|
||||||
print("Dirty: %s" % dirty)
|
print("Dirty: %s" % get_dirty())
|
||||||
print("Version: %s" % version)
|
print("Version: %s" % get_version())
|
||||||
print("Remote: %s" % origin)
|
print("Origin: %s" % get_origin())
|
||||||
print("Branch: %s" % branch)
|
print("Branch: %s" % get_branch())
|
||||||
print("Prebuilt: %s" % prebuilt)
|
print("Short branch: %s" % get_short_branch())
|
||||||
|
print("Prebuilt: %s" % get_prebuilt())
|
||||||
|
|
Loading…
Reference in New Issue