diff options
Diffstat (limited to 'www/firefox/files/patch-bug1749604')
-rw-r--r-- | www/firefox/files/patch-bug1749604 | 249 |
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" + |