From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- .../webrtc/third_party_build/fetch_github_repo.py | 122 +++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 dom/media/webrtc/third_party_build/fetch_github_repo.py (limited to 'dom/media/webrtc/third_party_build/fetch_github_repo.py') diff --git a/dom/media/webrtc/third_party_build/fetch_github_repo.py b/dom/media/webrtc/third_party_build/fetch_github_repo.py new file mode 100644 index 0000000000..bfa40f5c7b --- /dev/null +++ b/dom/media/webrtc/third_party_build/fetch_github_repo.py @@ -0,0 +1,122 @@ +# 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 os +import re +import shutil + +from run_operations import run_git, run_shell + +# This script fetches the moz-libwebrtc github repro with the expected +# upstream remote and branch-heads setup. This is used by both the +# prep_repo.sh script as well as the restore_patch_stack.py script. +# +# For speed and conservation of network resources, after fetching all +# the data, a tar of the repo is made and used if available. + + +def fetch_repo(github_path, force_fetch, tar_path): + capture_output = False + + # check for pre-existing repo - make sure we force the removal + if force_fetch and os.path.exists(github_path): + print("Removing existing repo: {}".format(github_path)) + shutil.rmtree(github_path) + + # clone https://github.com/mozilla/libwebrtc + if not os.path.exists(github_path): + # check for pre-existing tar, use it if we have it + if os.path.exists(tar_path): + print("Using tar file to reconstitute repo") + cmd = "cd {} ; tar --extract --gunzip --file={}".format( + os.path.dirname(github_path), os.path.basename(tar_path) + ) + run_shell(cmd, capture_output) + else: + print("Cloning github repo") + run_shell( + "git clone https://github.com/mozilla/libwebrtc {}".format(github_path), + capture_output, + ) + + # setup upstream (https://webrtc.googlesource.com/src) + stdout_lines = run_git("git config --local --list", github_path) + stdout_lines = [ + path for path in stdout_lines if re.findall("^remote.upstream.url.*", path) + ] + if len(stdout_lines) == 0: + print("Fetching upstream") + run_git("git checkout master", github_path) + run_git( + "git remote add upstream https://webrtc.googlesource.com/src", github_path + ) + run_git("git fetch upstream", github_path) + run_git("git merge upstream/master", github_path) + else: + print( + "Upstream remote (https://webrtc.googlesource.com/src) already configured" + ) + + # setup upstream branch-heads + stdout_lines = run_git( + "git config --local --get-all remote.upstream.fetch", github_path + ) + if len(stdout_lines) == 1: + print("Fetching upstream branch-heads") + run_git( + "git config --local --add remote.upstream.fetch +refs/branch-heads/*:refs/remotes/branch-heads/*", + github_path, + ) + run_git("git fetch upstream", github_path) + else: + print("Upstream remote branch-heads already configured") + + # do a sanity fetch in case this was not a freshly cloned copy of the + # repo, meaning it may not have all the mozilla branches present. + run_git("git fetch --all", github_path) + + # create tar to avoid time refetching + if not os.path.exists(tar_path): + print("Creating tar file for quicker restore") + cmd = "cd {} ; tar --create --gzip --file={} {}".format( + os.path.dirname(github_path), + os.path.basename(tar_path), + os.path.basename(github_path), + ) + run_shell(cmd, capture_output) + + +if __name__ == "__main__": + default_state_dir = ".moz-fast-forward" + default_tar_name = "moz-libwebrtc.tar.gz" + + parser = argparse.ArgumentParser( + description="Restore moz-libwebrtc github patch stack" + ) + parser.add_argument( + "--repo-path", + required=True, + help="path to libwebrtc repo", + ) + parser.add_argument( + "--force-fetch", + action="store_true", + default=False, + help="force rebuild an existing repo directory", + ) + parser.add_argument( + "--tar-name", + default=default_tar_name, + help="name of tar file (defaults to {})".format(default_tar_name), + ) + parser.add_argument( + "--state-path", + default=default_state_dir, + help="path to state directory (defaults to {})".format(default_state_dir), + ) + args = parser.parse_args() + + fetch_repo( + args.repo_path, args.force_fetch, os.path.join(args.state_path, args.tar_name) + ) -- cgit v1.2.3