From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- .../webrtc/third_party_build/filter_git_changes.py | 87 ++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 dom/media/webrtc/third_party_build/filter_git_changes.py (limited to 'dom/media/webrtc/third_party_build/filter_git_changes.py') diff --git a/dom/media/webrtc/third_party_build/filter_git_changes.py b/dom/media/webrtc/third_party_build/filter_git_changes.py new file mode 100644 index 0000000000..ee6cdbcbd9 --- /dev/null +++ b/dom/media/webrtc/third_party_build/filter_git_changes.py @@ -0,0 +1,87 @@ +# 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 argparse +import importlib +import re +import sys + +sys.path.insert(0, "./dom/media/webrtc/third_party_build") +vendor_libwebrtc = importlib.import_module("vendor-libwebrtc") + +from run_operations import run_git + + +def filter_git_changes(github_path, commit_sha, diff_filter): + command = [ + "git", + "show", + "--oneline", + "--name-status", + "--pretty=format:", + None if not diff_filter else "--diff-filter={}".format(diff_filter), + commit_sha, + ] + # strip possible empty elements from command list + command = " ".join([x for x in command if x is not None]) + + # Get the list of changes in the upstream commit. + stdout_lines = run_git(command, github_path) + + changed_files = [line.strip() for line in stdout_lines] + changed_files = [line for line in changed_files if line != ""] + + # Fetch the list of excludes and includes used in the vendoring script. + exclude_file_list = vendor_libwebrtc.get_excluded_files() + exclude_dir_list = vendor_libwebrtc.get_excluded_dirs() + include_list = vendor_libwebrtc.get_included_path_overrides() + + # First, search for changes in files that are specifically included. + # Do this first, because some of these files might be filtered out + # by the exclude list. + regex_includes = "|".join(["^.\t{}$".format(i) for i in include_list]) + included_files = [ + path for path in changed_files if re.findall(regex_includes, path) + ] + + # Convert the directory exclude list to a regex string and filter + # out the excluded directory paths (note the lack of trailing '$' + # in the regex). + regex_excludes = "|".join( + ["^(M|A|D|R\d\d\d)\t{}".format(i) for i in exclude_dir_list] + ) + files_not_excluded = [ + path for path in changed_files if not re.findall(regex_excludes, path) + ] + + # Convert the file exclude list to a regex string and filter out the + # excluded file paths. The trailing '$' in the regex ensures that + # we can exclude, for example, '.vpython' and not '.vpython3'. + regex_excludes = "|".join(["^.\t{}$".format(i) for i in exclude_file_list]) + files_not_excluded = [ + path for path in files_not_excluded if not re.findall(regex_excludes, path) + ] + + return included_files + files_not_excluded + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description="Get relevant change count from an upstream git commit" + ) + parser.add_argument( + "--repo-path", + required=True, + help="path to libwebrtc repo", + ) + parser.add_argument("--commit-sha", required=True, help="sha of commit to examine") + parser.add_argument( + "--diff-filter", + choices=("A", "D", "R"), + help="filter for adds (A), deletes (D), or renames (R)", + ) + args = parser.parse_args() + + paths = filter_git_changes(args.repo_path, args.commit_sha, args.diff_filter) + for path in paths: + print(path) -- cgit v1.2.3