From da4796ebf7ea728dc81ff4b3c62410230520977a Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 20 Sep 2021 13:17:01 +0200 Subject: Build: change make update to not print errors regarding submodule branches Instead of trying to checkout non-existent branches and getting confusing fatal error prints, check if the branch exists first. Ref D12560 --- build_files/utils/make_update.py | 24 ++++++++++++++---------- build_files/utils/make_utils.py | 16 +++++++++++++--- 2 files changed, 27 insertions(+), 13 deletions(-) (limited to 'build_files') diff --git a/build_files/utils/make_update.py b/build_files/utils/make_update.py index f653639ec6d..30ef090efbb 100755 --- a/build_files/utils/make_update.py +++ b/build_files/utils/make_update.py @@ -200,16 +200,20 @@ def submodules_update(args, release_version, branch): if msg: skip_msg += submodule_path + " skipped: " + msg + "\n" else: - # We are using `exit_on_error=False` here because sub-modules are allowed to not have requested branch, - # in which case falling back to default back-up branch is fine. - if make_utils.git_branch(args.git_command) != submodule_branch: - call([args.git_command, "fetch", "origin"]) - call([args.git_command, "checkout", submodule_branch], exit_on_error=False) - call([args.git_command, "pull", "--rebase", "origin", submodule_branch], exit_on_error=False) - # If we cannot find the specified branch for this submodule, fallback to default one (aka master). - if make_utils.git_branch(args.git_command) != submodule_branch: - call([args.git_command, "checkout", submodule_branch_fallback]) - call([args.git_command, "pull", "--rebase", "origin", submodule_branch_fallback]) + # Find a matching branch that exists. + call([args.git_command, "fetch", "origin"]) + if make_utils.git_branch_exists(args.git_command, submodule_branch): + pass + elif make_utils.git_branch_exists(args.git_command, submodule_branch_fallback): + submodule_branch = submodule_branch_fallback + else: + submodule_branch = None + + # Switch to branch and pull. + if submodule_branch: + if make_utils.git_branch(args.git_command) != submodule_branch: + call([args.git_command, "checkout", submodule_branch]) + call([args.git_command, "pull", "--rebase", "origin", submodule_branch]) finally: os.chdir(cwd) diff --git a/build_files/utils/make_utils.py b/build_files/utils/make_utils.py index db352ff7e16..9def0059ceb 100755 --- a/build_files/utils/make_utils.py +++ b/build_files/utils/make_utils.py @@ -8,14 +8,19 @@ import subprocess import sys -def call(cmd, exit_on_error=True): - print(" ".join(cmd)) +def call(cmd, exit_on_error=True, silent=False): + if not silent: + print(" ".join(cmd)) # Flush to ensure correct order output on Windows. sys.stdout.flush() sys.stderr.flush() - retcode = subprocess.call(cmd) + if silent: + retcode = subprocess.call(cmd, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) + else: + retcode = subprocess.call(cmd) + if exit_on_error and retcode != 0: sys.exit(retcode) return retcode @@ -38,6 +43,11 @@ def check_output(cmd, exit_on_error=True): return output.strip() +def git_branch_exists(git_command, branch): + return call([git_command, "rev-parse", "--verify", branch], exit_on_error=False, silent=True) == 0 or \ + call([git_command, "rev-parse", "--verify", "remotes/origin/" + branch], exit_on_error=False, silent=True) == 0 + + def git_branch(git_command): # Get current branch name. try: -- cgit v1.2.3