From eab33adbc963d5088e3b358054a37dfbae8416bf Mon Sep 17 00:00:00 2001 From: Willem Melching Date: Wed, 12 Aug 2020 11:38:38 +0200 Subject: [PATCH] Don't check dirty on prebuilt release (#2014) * dont check dirty on prebuilt release * cleanup * Command cleanup * Only log dirty comma branch * Less whitespace * Consistentcy Co-authored-by: Adeeb Shihadeh old-commit-hash: c3a45580265f2138e12c371966e28a81886ead75 --- selfdrive/version.py | 87 ++++++++++++++++++++++++-------------------- 1 file changed, 47 insertions(+), 40 deletions(-) diff --git a/selfdrive/version.py b/selfdrive/version.py index 0999e7511d..9ce31ddbe8 100644 --- a/selfdrive/version.py +++ b/selfdrive/version.py @@ -1,47 +1,47 @@ #!/usr/bin/env python3 import os import subprocess +from common.basedir import BASEDIR from selfdrive.swaglog import cloudlog -def get_git_commit(default=None): +def run_cmd(cmd): + return subprocess.check_output(cmd, encoding='utf8').strip() + + +def run_cmd_default(cmd, default=None): try: - return subprocess.check_output(["git", "rev-parse", "HEAD"], encoding='utf8').strip() + return run_cmd(cmd) except subprocess.CalledProcessError: return default +def get_git_commit(branch="HEAD", default=None): + return run_cmd_default(["git", "rev-parse", branch], default=default) + + def get_git_branch(default=None): - try: - return subprocess.check_output(["git", "rev-parse", "--abbrev-ref", "HEAD"], encoding='utf8').strip() - except subprocess.CalledProcessError: - return default + return run_cmd_default(["git", "rev-parse", "--abbrev-ref", "HEAD"], default=default) def get_git_full_branchname(default=None): - try: - return subprocess.check_output(["git", "rev-parse", "--abbrev-ref", "--symbolic-full-name", "@{u}"], encoding='utf8').strip() - except subprocess.CalledProcessError: - return default + return run_cmd_default(["git", "rev-parse", "--abbrev-ref", "--symbolic-full-name", "@{u}"], default=default) def get_git_remote(default=None): try: - local_branch = subprocess.check_output(["git", "name-rev", "--name-only", "HEAD"], encoding='utf8').strip() - tracking_remote = subprocess.check_output(["git", "config", "branch." + local_branch + ".remote"], encoding='utf8').strip() - return subprocess.check_output(["git", "config", "remote." + tracking_remote + ".url"], encoding='utf8').strip() - - except subprocess.CalledProcessError: - try: - # Not on a branch, fallback - return subprocess.check_output(["git", "config", "--get", "remote.origin.url"], encoding='utf8').strip() - except subprocess.CalledProcessError: - return default + local_branch = run_cmd(["git", "name-rev", "--name-only", "HEAD"]) + tracking_remote = run_cmd(["git", "config", "branch." + local_branch + ".remote"]) + return run_cmd(["git", "config", "remote." + tracking_remote + ".url"]) + except subprocess.CalledProcessError: # Not on a branch, fallback + run_cmd_default(["git", "config", "--get", "remote.origin.url"], default=default) with open(os.path.join(os.path.dirname(os.path.abspath(__file__)), "common", "version.h")) as _versionf: version = _versionf.read().split('"')[1] +prebuilt = os.path.exists(os.path.join(BASEDIR, 'prebuilt')) + training_version = b"0.2.0" terms_version = b"2" @@ -51,35 +51,42 @@ tested_branch = False origin = get_git_remote() branch = get_git_full_branchname() -try: - # This is needed otherwise touched files might show up as modified +if (origin is not None) and (branch is not None): try: - subprocess.check_call(["git", "update-index", "--refresh"]) - except subprocess.CalledProcessError: - pass - - if (origin is not None) and (branch is not None): comma_remote = origin.startswith('git@github.com:commaai') or origin.startswith('https://github.com/commaai') tested_branch = get_git_branch() in ['devel', 'release2-staging', 'dashcam-staging', 'release2', 'dashcam'] - dirty = not comma_remote + dirty = False + + # Actually check dirty files + if not prebuilt: + # This is needed otherwise touched files might show up as modified + try: + subprocess.check_call(["git", "update-index", "--refresh"]) + except subprocess.CalledProcessError: + pass + dirty = (subprocess.call(["git", "diff-index", "--quiet", branch, "--"]) != 0) + + # Log dirty files + if dirty and comma_remote: + try: + dirty_files = run_cmd(["git", "diff-index", branch, "--"]) + cloudlog.event("dirty comma branch", version=version, dirty=dirty, origin=origin, branch=branch, + dirty_files=dirty_files, commit=get_git_commit(), origin_commit=get_git_commit(branch)) + except subprocess.CalledProcessError: + pass + + dirty = dirty or (not comma_remote) dirty = dirty or ('master' in branch) - dirty = dirty or (subprocess.call(["git", "diff-index", "--quiet", branch, "--"]) != 0) - if dirty: - dirty_files = subprocess.check_output(["git", "diff-index", branch, "--"], encoding='utf8') - commit = subprocess.check_output(["git", "rev-parse", "--verify", "HEAD"], encoding='utf8').rstrip() - origin_commit = subprocess.check_output(["git", "rev-parse", "--verify", branch], encoding='utf8').rstrip() - cloudlog.event("dirty comma branch", version=version, dirty=dirty, origin=origin, branch=branch, - dirty_files=dirty_files, commit=commit, origin_commit=origin_commit) - -except subprocess.CalledProcessError: - dirty = True - cloudlog.exception("git subprocess failed while checking dirty") + except subprocess.CalledProcessError: + dirty = True + cloudlog.exception("git subprocess failed while checking dirty") if __name__ == "__main__": print("Dirty: %s" % dirty) print("Version: %s" % version) print("Remote: %s" % origin) - print("Branch %s" % branch) + print("Branch: %s" % branch) + print("Prebuilt: %s" % prebuilt)