This branch contains modifications to the mozilla:release branch for compiling the Record Replay gecko based browser.
macOS
- Make sure that you are using Python v2.7
cp mozconfig.macsample mozconfig
- Download
MacOSX11.1.sdk.tar.xz
from https://github.com/phracker/MacOSX-SDKs/releases - untar
MacOSX11.1.sdk.tar.xz
in the repo root to create aMacOSX11.1.sdk
directory - clone the latest mozilla-central and run
./mach bootstrap
within it and select (2) Firefox Desktop. Come back to this repo. - run
node build
- On Apple Silicon, you many need to run
RUSTC_BOOTSTRAP=qcms node build
to build successfully.
- On Apple Silicon, you many need to run
- run
./mach run
Linux
cp mozconfig.linuxsample mozconfig
- run
./mach bootstrap
and select (2) Firefox Desktop - run
node build
- run
./mach run
- If you change your PATH to point to a different version of say Python or Rust you need to rerun
./mach bootstrap
to get the build system to pick up the change.
- Checkout the
release
branch, pull from upstreamrelease
branch:
git checkout release
git pull https://github.com/mozilla/gecko-dev.git release
- Switch to a new branch, merge from the
release
branch.
git checkout webreplay-release
git checkout -b replay-merge
git merge release
- Fix merge conflicts.
- Fix build breaks.
- Make sure the output binary is
replay
and notfirefox
. - Get e2e tests etc. to pass.
- At this point it is reasonably safe to merge into the
webreplay-release
branch.
git checkout webreplay-release
git merge replay-merge
git push
- Update User Agent version reported by
CurrentFirefoxVersion()
intoolkit/recordreplay/ProcessRecordReplay.cpp
- Make sure automatic updates work with the new browser. Run the build/test action on the merge branch, delete the
noupdate
file for the build in S3, then launch the browser, open "About Replay" and see if it updates.
Tips for debugging:
- Look at the update server logs to make sure requests are being processed correctly.
- Set the
app.update.log
browser config when running, and then check console output. - If there is a line like
*** AUS:SVC readStatusFile - status: failed: 23, path: /path/to/update.status
, this is produced by the C++ updater which can be found inUpdateThreadFunc
inupdater.cpp
. Building a local browser with instrumentation is likely needed to investigate.
- Run live test harness and make sure crash rate is acceptable.
Speeding up oh-my-zsh
git config --add oh-my-zsh.hide-status 1
git config --add oh-my-zsh.hide-dirty 1