summaryrefslogtreecommitdiff
path: root/www/firefox/files/patch-bug1749604
diff options
context:
space:
mode:
Diffstat (limited to 'www/firefox/files/patch-bug1749604')
-rw-r--r--www/firefox/files/patch-bug1749604249
1 files changed, 249 insertions, 0 deletions
diff --git a/www/firefox/files/patch-bug1749604 b/www/firefox/files/patch-bug1749604
new file mode 100644
index 000000000000..a0195b8d00c9
--- /dev/null
+++ b/www/firefox/files/patch-bug1749604
@@ -0,0 +1,249 @@
+https://bugzilla.mozilla.org/show_bug.cgi?id=1749604
+https://hg.mozilla.org/mozilla-central/rev/f6031b5927f5
+https://hg.mozilla.org/mozilla-central/rev/c7440a6eb545
+https://github.com/mozilla/gecko-dev/commit/e6f459cd77e3
+(Avoid ~13 GB clone of moz-libwebrtc for libwebrtc regen)
+(To be dropped for 98)
+
+Updated README.md to reflect simplified setup for generation.
+Updated generate-gn-build-files.sh:
+ - remove dependencies on MOZ_LIBWEBRTC environment variable
+ - add checking for GN environment variable
+---
+
+diff --git a/dom/media/webrtc/third_party_build/gn-configs/README.md b/dom/media/webrtc/third_party_build/gn-configs/README.md
+index bc54ba183d016..09dea1ae87833 100644
+--- dom/media/webrtc/third_party_build/gn-configs/README.md
++++ dom/media/webrtc/third_party_build/gn-configs/README.md
+@@ -1,9 +1,10 @@
+ # Generate new gn json files and moz.build files for building libwebrtc in our tree
+
+-1. If generating on macOS for Apple Silicon (cross-compiling), make sure to have at least
+-[Xcode 12.2](https://download.developer.apple.com/Developer_Tools/Xcode_12.2/Xcode_12.2.xip).
++1. If generating on macOS for Apple Silicon (cross-compiling), make sure to have
++ at least [Xcode 12.2](https://download.developer.apple.com/Developer_Tools/Xcode_12.2/Xcode_12.2.xip).
+
+- In addition the aarch64 Rust target will need to be installed via: `rustup target add aarch64-apple-darwin`
++ The aarch64 Rust target will need to be installed via:
++ `rustup target add aarch64-apple-darwin`
+
+ 2. If generating on Windows 10, Visual Studio 2019 is required. Please follow
+ the install instructions from [here](https://firefox-source-docs.mozilla.org/setup/windows_build.html)
+@@ -14,86 +15,85 @@
+ - MSVC v142 - VS2019 C++ ARM64 build tools
+
+ "Debugging Tools for Windows" is also required.
+- - Under `Settings -> Apps` search for "Windows Software Development Kit" with the version
+- number 10.0.19041.685.
++ - Under `Settings -> Apps` search for "Windows Software Development Kit" with
++ the version number 10.0.19041.685.
+ - select Modify (and allow the installer to modify)
+ - select Change and then click Next
+ - select "Debugging Tools for Windows" and then click Change.
+
+- And the aarch64 Rust target will need to be installed via: `rustup target add aarch64-pc-windows-msvc`
++ The aarch64 Rust target will need to be installed via:
++ `rustup target add aarch64-pc-windows-msvc`
+
+-3. See information in `third_party/libwebrtc/README.mozilla` for the proper revision of libwebrtc
++3. See information in `third_party/libwebrtc/README.mozilla` for the proper
++ revision of libwebrtc
+
+ libwebrtc updated from commit https://github.com/mozilla/libwebrtc/archive/149d693483e9055f574d9d65b01fe75a186b654b.tar.gz on 2020-11-30T15:48:48.472088.
+ third_party updated from commit https://chromium.googlesource.com/chromium/src/third_party/+archive/5dc5a4a45df9592baa8e8c5f896006d9193d8e45.tar.gz on 2020-11-30T17:00:15.612630.
+
+- In our current case, the revision is `149d693483e9055f574d9d65b01fe75a186b654b` which
+- corresponds to:
++ In our current case, the revision is `149d693483e9055f574d9d65b01fe75a186b654b`
++ which corresponds to:
+
+ mozilla-modifications-rel86
+
+-4. Clone Mozilla's version of libwebrtc from [libwebrtc](https://github.com/mozilla/libwebrtc)
++ This commit was made on `Thu Nov 19 14:14:00 2020`.
+
+- git clone https://github.com/mozilla/libwebrtc moz-libwebrtc
+- export MOZ_LIBWEBRTC=`pwd`/moz-libwebrtc
+- (cd moz-libwebrtc ; git checkout mozilla-modifications-rel86)
++4. Download a version of the `gn` executable that corresponds to
++ `Thu Nov 19 14:14:00 2020`. In our case, that is version `1889 (8fe02009)`.
++
++ - [Win](https://chrome-infra-packages.appspot.com/p/gn/gn/windows-amd64/+/e_UmTHedzuu4zJ2gdpW8jrFFNnzIhThljx3jn3RMlVsC)
++ - [Linux](https://chrome-infra-packages.appspot.com/p/gn/gn/linux-amd64/+/bvBFKgehaepiKy_YhFnbiOpF38CK26N2OyE1R1jXof0C)
++ - [macOS](https://chrome-infra-packages.appspot.com/p/gn/gn/mac-amd64/+/nXvMRpyJhLhisAcnRmU5s9UZqovzMAhKAvWjax-swioC)
+
+- Note that branch was made on `Thu Nov 19 14:14:00 2020`
++ Find the downloaded `.zip` file, unzip and export the location of the
++ executable:
+
+-5. Clone `depot_tools` from [depot_tools](https://chromium.googlesource.com/chromium/tools/depot_tools.git)
++ unzip gn-mac-amd64.zip && export GN=`pwd`/gn
++ unzip gn-windows-amd64.zip && export GN=`pwd`/gn.exe
++ unzip gn-linux-amd64.zip && export GN=`pwd`/gn
+
+- git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
+- export DEPOT_TOOLS=`pwd`/depot_tools
++ On platforms that don't have pre-built `gn` executables, `ninja` and `gn` can
++ be easily built:
+
+- If generating files on Windows, the following steps must be completed
+- from a traditional Windows Cmd prompt (cmd.exe) launched from the start
+- menu or search bar. This allows `gclient` to properly bootstrap the
+- required python setup.
++ git clone https://github.com/ninja-build/ninja.git
++ git clone https://gn.googlesource.com/gn
++ (cd gn && git checkout 8fe02009)
++ (cd ninja && ./configure.py --bootstrap)
++ (export NINJA=`pwd`/ninja/ninja ; cd gn && python build/gen.py && $NINJA -C out)
++ export GN=`pwd`/gn/out/gn
+
+- cd {depot_tools directory}
+- set PATH=%CD%;%PATH%
+- set DEPOT_TOOLS_WIN_TOOLCHAIN=0
+- set vs2019_install="c:\Program Files (x86)\Microsoft Visual Studio\2019\Community"
+- gclient
+- exit
++ On OpenBSD, a slightly newer version of `gn` is needed in order to build:
+
+- Now, we need to checkout a revision of `depot_tools` that corresponds to the date of
+- our libwebrtc branch. The closest `depot_tools` commit to `Thu Nov 19 14:14:00 2020` is
+- `e7d1862b155ac3ccbef72c4d70629b5c88ffcb32`. There is additional information on how to
+- more automatically determine this [here](https://chromium.googlesource.com/chromium/src/+/master/docs/building_old_revisions.md).
++ (cd gn && git checkout 31f2bba8)
+
+- (cd depot_tools ; git checkout e7d1862b155ac3ccbef72c4d70629b5c88ffcb32 )
++5. Clone `depot_tools` from [depot_tools](https://chromium.googlesource.com/chromium/tools/depot_tools.git)
+
+-6. It is necessary to let `depot_tools` pull information into the `libwebrtc` tree as well. This can take a while.
++ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
++ export DEPOT_TOOLS=`pwd`/depot_tools
+
+- (cd moz-libwebrtc ; \
+- export PATH=$DEPOT_TOOLS:$PATH ; \
+- export DEPOT_TOOLS_UPDATE=0 ; \
+- export DEPOT_TOOLS_WIN_TOOLCHAIN=0 ; \
+- gclient config https://github.com/mozilla/libwebrtc && \
+- gclient sync -D --force --reset --with_branch_heads \
+- )
+-
+- Note that if one uses `gclient` sync with a different output directory `$MOZ_LIBWEBRTC_GIT`
+- must be set to the original clone directory, and `$MOZ_LIBWEBRTC` needs to be set to the
+- directory created by `gclient sync`.
++ Now, we need to checkout a revision of `depot_tools` that corresponds to the
++ date of our libwebrtc branch. The closest `depot_tools` commit to
++ `Thu Nov 19 14:14:00 2020` is `e7d1862b155ac3ccbef72c4d70629b5c88ffcb32`.
++ There is additional information on how to more automatically determine this
++ [here](https://chromium.googlesource.com/chromium/src/+/master/docs/building_old_revisions.md).
++
++ (cd depot_tools ; git checkout e7d1862b155ac3ccbef72c4d70629b5c88ffcb32 )
+
+-7. Now it is time to generate the build files. The script should be run from the top
+-directory of our firefox tree.
++6. It is time to generate the build files. The script should be run from the
++ top directory of our firefox tree.
+
+- ./dom/media/webrtc/third_party_build/gn-configs/generate-gn-build-files.sh
++ bash ./dom/media/webrtc/third_party_build/gn-configs/generate-gn-build-files.sh
+
+- Debugging the generate script itself may prove useful, and one can do this by setting the DEBUG_GEN environment
+- variable to a non-empty value. This will print everything that the script executes.
++ Debugging the generate script itself may prove useful, and one can do this by
++ setting the DEBUG_GEN environment variable to a non-empty value. This will
++ print everything that the script executes.
+
+-8. Checkin all the generated/modified files and try your build!
++7. Checkin all the generated/modified files and try your build!
+
+ # Adding new configurations to the build
+
+-- Each new platform/architecture will require 2 new mozconfig files,
+- one for the debug build and one for the non-debug build. The
+- filenames follow the same pattern as the generated json files,
+- `a-b-c-d.mozconfig` where:
++- Each new platform/architecture will require 2 new mozconfig files, one for the
++ debug build and one for the non-debug build. The filenames follow the same
++ pattern as the generated json files, `a-b-c-d.mozconfig` where:
+ - a = generating cpu (example: x64)
+ - b = debug (True / False)
+ - c = target cpu (example: x64 / arm64)
+@@ -103,9 +103,9 @@ directory of our firefox tree.
+ - The new configs must be added to the appropriate platform section in
+ `generate-gn-build-files.sh`.
+
+-**Note:** when adding new mozconfig files, especially for linux/android
+-configs, it is important to include the `ac_add_options
+---enable-bootstrap`. This ensures switching archtectures for
+-"cross-compiled" generation works properly. For example, when generating
+-`x86` or `arm64` linux json files, it would be necessary to install additional
+-libraries in order for the configure step to complete.
++**Note:** when adding new mozconfig files, especially for linux/android configs,
++it is important to include the `ac_add_options --enable-bootstrap`. This
++ensures switching archtectures for "cross-compiled" generation works properly.
++For example, when generating `x86` or `arm64` linux json files, it would be
++necessary to install additional libraries in order for the configure step to
++complete.
+diff --git a/dom/media/webrtc/third_party_build/gn-configs/generate-gn-build-files.sh b/dom/media/webrtc/third_party_build/gn-configs/generate-gn-build-files.sh
+index 4452b0ce76aeb..8d1acbf783514 100755
+--- dom/media/webrtc/third_party_build/gn-configs/generate-gn-build-files.sh
++++ dom/media/webrtc/third_party_build/gn-configs/generate-gn-build-files.sh
+@@ -8,33 +8,15 @@ if [ ! "x$DEBUG_GEN" = "x" ]; then
+ set -x
+ fi
+
+-if [ "x$MOZ_LIBWEBRTC" = "x" ]; then
+- echo "MOZ_LIBWEBRTC is not defined, see README.md"
++if [ "x$GN" = "x" ]; then
++ echo "GN is not defined, see README.md"
+ exit
+ fi
+
+-if [ -d $MOZ_LIBWEBRTC ]; then
+- echo "MOZ_LIBWEBRTC is $MOZ_LIBWEBRTC"
++if [ -f $GN ]; then
++ echo "GN is $GN"
+ else
+- echo "Path $MOZ_LIBWEBRTC is not found, see README.md"
+- exit
+-fi
+-
+-# git clone and gclient checkout may be in different places
+-if [ "x$MOZ_LIBWEBRTC_GIT" = "x" ]; then
+- MOZ_LIBWEBRTC_GIT=$MOZ_LIBWEBRTC
+-fi
+-
+-if [ ! -d $MOZ_LIBWEBRTC_GIT/.git ]; then
+- echo "No .git directory is found in the libwebrtc checkout, see README.md"
+- exit
+-fi
+-
+-if [ ! -d $MOZ_LIBWEBRTC/src/buildtools ]; then
+- echo "Path $MOZ_LIBWEBRTC/src/buildtools is not found, see README.md"
+- echo "Please run the following commands from inside $MOZ_LIBWEBRTC:"
+- echo "\tgclient config https://github.com/mozilla/libwebrtc"
+- echo "\tgclient sync -D --force --reset --with_branch_heads # this make take a while"
++ echo "Path $GN is not found, see README.md"
+ exit
+ fi
+
+@@ -115,21 +97,6 @@ fi
+ export PATH=$DEPOT_TOOLS:$PATH
+ export DEPOT_TOOLS_UPDATE=0
+
+-# Symlink in the buildtools and .git directories from our copy of libwebrtc.
+-if [ -L ./third_party/libwebrtc/buildtools ]; then
+- rm ./third_party/libwebrtc/buildtools
+-elif [ -d ./third_party/libwebrtc/buildtools ]; then
+- rm -rf ./third_party/libwebrtc/buildtools
+-fi
+-ln -s $MOZ_LIBWEBRTC/src/buildtools ./third_party/libwebrtc/
+-
+-if [ -L ./third_party/libwebrtc/.git ]; then
+- rm ./third_party/libwebrtc/.git
+-elif [ -d ./third_party/libwebrtc/.git ]; then
+- rm -rf ./third_party/libwebrtc/.git
+-fi
+-ln -s $MOZ_LIBWEBRTC_GIT/.git ./third_party/libwebrtc/
+-
+ CONFIG_DIR=dom/media/webrtc/third_party_build/gn-configs
+ echo "CONFIG_DIR is $CONFIG_DIR"
+