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 --- dom/media/webrtc/third_party_build/loop-ff.sh | 236 ++++++++++++++++++++++++++ 1 file changed, 236 insertions(+) create mode 100644 dom/media/webrtc/third_party_build/loop-ff.sh (limited to 'dom/media/webrtc/third_party_build/loop-ff.sh') diff --git a/dom/media/webrtc/third_party_build/loop-ff.sh b/dom/media/webrtc/third_party_build/loop-ff.sh new file mode 100644 index 0000000000..72a8d88091 --- /dev/null +++ b/dom/media/webrtc/third_party_build/loop-ff.sh @@ -0,0 +1,236 @@ +#!/bin/bash + +source dom/media/webrtc/third_party_build/use_config_env.sh + +# file for logging loop script output +LOOP_OUTPUT_LOG=$LOG_DIR/log-loop-ff.txt + +function echo_log() +{ + echo "===loop-ff=== $@" 2>&1| tee -a $LOOP_OUTPUT_LOG +} + +function show_error_msg() +{ + echo_log "*** ERROR *** $? line $1 $0 did not complete successfully!" + echo_log "$ERROR_HELP" +} +ERROR_HELP="" + +# Print an Error message if `set -eE` causes the script to exit due to a failed command +trap 'show_error_msg $LINENO' ERR + +# If DEBUG_LOOP_FF is set all commands should be printed as they are executed +if [ ! "x$DEBUG_LOOP_FF" = "x" ]; then + set -x +fi + +if [ "x$MOZ_LIBWEBRTC_SRC" = "x" ]; then + echo "MOZ_LIBWEBRTC_SRC is not defined, see README.md" + exit +fi + +if [ ! -d $MOZ_LIBWEBRTC_SRC ]; then + echo "Path $MOZ_LIBWEBRTC_SRC is not found, see README.md" + exit +fi + +if [ "x$MOZ_LIBWEBRTC_BRANCH" = "x" ]; then + echo "MOZ_LIBWEBRTC_BRANCH is not defined, see README.md" + exit +fi + +if [ "x$MOZ_STOP_AFTER_COMMIT" = "x" ]; then + MOZ_STOP_AFTER_COMMIT=`cd $MOZ_LIBWEBRTC_SRC ; git show $MOZ_TARGET_UPSTREAM_BRANCH_HEAD --format='%h' --name-only | head -1` + echo "No MOZ_STOP_AFTER_COMMIT variable defined - stopping at $MOZ_TARGET_UPSTREAM_BRANCH_HEAD" +fi + +if [ "x$MOZ_ADVANCE_ONE_COMMIT" = "x" ]; then + MOZ_ADVANCE_ONE_COMMIT="" +fi + +if [ "x$SKIP_NEXT_REVERT_CHK" = "x" ]; then + SKIP_NEXT_REVERT_CHK="0" +fi + +MOZ_CHANGED=0 +GIT_CHANGED=0 +HANDLE_NOOP_COMMIT="" + +# After this point: +# * eE: All commands should succeed. +# * u: All variables should be defined before use. +# * o pipefail: All stages of all pipes should succeed. +set -eEuo pipefail + +# start a new log with every run of this script +rm -f $LOOP_OUTPUT_LOG +# make sure third_party/libwebrtc/README.moz-ff-commit is the committed version +# so we properly determine MOZ_LIBWEBRTC_BASE and MOZ_LIBWEBRTC_NEXT_BASE +# in the loop below +hg revert -C third_party/libwebrtc/README.moz-ff-commit &> /dev/null + +# check for a resume situation from fast-forward-libwebrtc.sh +RESUME="" +if [ -f $STATE_DIR/resume_state ]; then + RESUME=`tail -1 $STATE_DIR/resume_state` +fi + +ERROR_HELP=$" +It appears that initial vendoring verification has failed. +- If you have never run the fast-forward process before, you may need to + prepare the github repository by running prep_repo.sh. +- If you have previously run loop-ff.sh successfully, there may be a new + change to third_party/libwebrtc that should be extracted and added to + the patch stack in github. It may be as easy as running: + ./mach python $SCRIPT_DIR/extract-for-git.py tip::tip + mv mailbox.patch $MOZ_LIBWEBRTC_SRC + (cd $MOZ_LIBWEBRTC_SRC && \\ + git am mailbox.patch) +" +# if we're not in the resume situation from fast-forward-libwebrtc.sh +if [ "x$RESUME" = "x" ]; then + # start off by verifying the vendoring process to make sure no changes have + # been added to elm to fix bugs. + echo_log "Verifying vendoring..." + bash $SCRIPT_DIR/verify_vendoring.sh + echo_log "Done verifying vendoring." +fi +ERROR_HELP="" + +for (( ; ; )); do + +find_base_commit +find_next_commit + +if [ $MOZ_LIBWEBRTC_BASE == $MOZ_LIBWEBRTC_NEXT_BASE ]; then + echo_log "Processing complete, already at upstream $MOZ_LIBWEBRTC_BASE" + exit +fi + +echo_log "===================" + +COMMITS_REMAINING=`cd $MOZ_LIBWEBRTC_SRC ; \ + git log --oneline $MOZ_LIBWEBRTC_BASE..$MOZ_TARGET_UPSTREAM_BRANCH_HEAD \ + | wc -l | tr -d " "` +echo_log "Commits remaining: $COMMITS_REMAINING" + +ERROR_HELP=$"Some portion of the detection and/or fixing of upstream revert commits +has failed. Please fix the state of the git hub repo at: $MOZ_LIBWEBRTC_SRC. +When fixed, please resume this script with the following command: + SKIP_NEXT_REVERT_CHK=1 bash $SCRIPT_DIR/loop-ff.sh +" +if [ "x$SKIP_NEXT_REVERT_CHK" == "x0" ]; then + echo_log "Check for upcoming revert commit" + AUTO_FIX_REVERT_AS_NOOP=1 bash $SCRIPT_DIR/detect_upstream_revert.sh \ + 2>&1| tee -a $LOOP_OUTPUT_LOG +fi +SKIP_NEXT_REVERT_CHK="0" +ERROR_HELP="" + +echo_log "Looking for $STATE_DIR/$MOZ_LIBWEBRTC_NEXT_BASE.no-op-cherry-pick-msg" +if [ -f $STATE_DIR/$MOZ_LIBWEBRTC_NEXT_BASE.no-op-cherry-pick-msg ]; then + echo_log "Detected special commit msg, setting HANDLE_NOOP_COMMIT=1" + HANDLE_NOOP_COMMIT="1" +fi + +echo_log "Moving from moz-libwebrtc commit $MOZ_LIBWEBRTC_BASE to $MOZ_LIBWEBRTC_NEXT_BASE" +bash $SCRIPT_DIR/fast-forward-libwebrtc.sh 2>&1| tee -a $LOOP_OUTPUT_LOG + +MOZ_CHANGED=`hg diff -c tip --stat \ + | egrep -ve "README.moz-ff-commit|README.mozilla|files changed," \ + | wc -l | tr -d " " || true` +GIT_CHANGED=`./mach python $SCRIPT_DIR/filter_git_changes.py \ + --repo-path $MOZ_LIBWEBRTC_SRC --commit-sha $MOZ_LIBWEBRTC_NEXT_BASE \ + | wc -l | tr -d " "` +FILE_CNT_MISMATCH_MSG=$" +The number of files changed in the upstream commit ($GIT_CHANGED) does +not match the number of files changed in the local Mozilla repo +commit ($MOZ_CHANGED). This may indicate a mismatch between the vendoring +script and this script, or it could be a true error in the import +processing. Once the issue has been resolved, the following steps +remain for this commit: + # generate moz.build files (may not be necessary) + ./mach python python/mozbuild/mozbuild/gn_processor.py \\ + $SCRIPT_DIR/gn-configs/webrtc.json + # commit the updated moz.build files with the appropriate commit msg + bash $SCRIPT_DIR/commit-build-file-changes.sh + # do a (hopefully) quick test build + ./mach build +" +echo_log "Verify number of files changed MOZ($MOZ_CHANGED) GIT($GIT_CHANGED)" +if [ "x$HANDLE_NOOP_COMMIT" == "x1" ]; then + echo_log "NO-OP commit detected, we expect file changed counts to differ" +elif [ $MOZ_CHANGED -ne $GIT_CHANGED ]; then + echo_log "MOZ_CHANGED $MOZ_CHANGED should equal GIT_CHANGED $GIT_CHANGED" + echo "$FILE_CNT_MISMATCH_MSG" + exit 1 +fi +HANDLE_NOOP_COMMIT="" + +# save the current patch stack in case we need to reconstitute it later +./mach python $SCRIPT_DIR/save_patch_stack.py \ + --repo-path $MOZ_LIBWEBRTC_SRC \ + --branch $MOZ_LIBWEBRTC_BRANCH \ + --patch-path "third_party/libwebrtc/moz-patch-stack" \ + --state-path $STATE_DIR \ + --target-branch-head $MOZ_TARGET_UPSTREAM_BRANCH_HEAD \ + 2>&1| tee -a $LOOP_OUTPUT_LOG + +MODIFIED_BUILD_RELATED_FILE_CNT=`hg diff -c tip --stat \ + --include 'third_party/libwebrtc/**BUILD.gn' \ + --include 'third_party/libwebrtc/webrtc.gni' \ + | grep -v "files changed" \ + | wc -l | tr -d " " || true` +ERROR_HELP=$" +Generating build files has failed. This likely means changes to one or more +BUILD.gn files are required. Commit those changes following the instructions +in https://wiki.mozilla.org/Media/WebRTC/libwebrtc_Update_Process#Operational_notes +Then complete these steps: + # generate moz.build files (may not be necessary) + ./mach python python/mozbuild/mozbuild/gn_processor.py \\ + $SCRIPT_DIR/gn-configs/webrtc.json + # commit the updated moz.build files with the appropriate commit msg + bash $SCRIPT_DIR/commit-build-file-changes.sh + # do a (hopefully) quick test build + ./mach build +After a successful build, you may resume this script. +" +echo_log "Modified BUILD.gn (or webrtc.gni) files: $MODIFIED_BUILD_RELATED_FILE_CNT" +if [ "x$MODIFIED_BUILD_RELATED_FILE_CNT" != "x0" ]; then + echo_log "Regenerate build files" + ./mach python python/mozbuild/mozbuild/gn_processor.py \ + $SCRIPT_DIR/gn-configs/webrtc.json 2>&1| tee -a $LOOP_OUTPUT_LOG + + MOZ_BUILD_CHANGE_CNT=`hg status third_party/libwebrtc \ + --include 'third_party/libwebrtc/**moz.build' | wc -l | tr -d " "` + if [ "x$MOZ_BUILD_CHANGE_CNT" != "x0" ]; then + echo_log "Detected modified moz.build files, commiting" + fi + + bash $SCRIPT_DIR/commit-build-file-changes.sh 2>&1| tee -a $LOOP_OUTPUT_LOG +fi +ERROR_HELP="" + +ERROR_HELP=$" +The test build has failed. Most likely this is due to an upstream api change that +must be reflected in Mozilla code outside of the third_party/libwebrtc directory. +" +echo_log "Test build" +./mach build 2>&1| tee -a $LOOP_OUTPUT_LOG +ERROR_HELP="" + +if [ ! "x$MOZ_STOP_AFTER_COMMIT" = "x" ]; then +if [ $MOZ_LIBWEBRTC_NEXT_BASE = $MOZ_STOP_AFTER_COMMIT ]; then + break +fi +fi + +if [ ! "x$MOZ_ADVANCE_ONE_COMMIT" = "x" ]; then + echo_log "Done advancing one commit." + exit +fi + +done + +echo_log "Completed fast-foward to $MOZ_STOP_AFTER_COMMIT" -- cgit v1.2.3