The client portion of Breakpad is unmaintained upstream for Windows and OS X, since Chromium has switched to Crashpad there. The Linux client still gets fixes, but they're essentially all for ChromeOS support so they're not very useful to us. This patch forks what is currently in toolkit/crashreporter/google-breakpad/src/client into toolkit/crashreporter/breakpad-client so we can make changes in mozilla-central as needed without upstreaming them to a dead upstream. This patch also changes the update-breakpad script to remove the src/client directory when updating to a newer Breakpad revision. A followup patch will remove unused files from the forked copy. MozReview-Commit-ID: Fj4o2XjjkkD
70 lines
2.7 KiB
Bash
Executable File
70 lines
2.7 KiB
Bash
Executable File
#!/bin/bash
|
|
# 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/.
|
|
|
|
set -v -e -x
|
|
|
|
# Usage: update-breakpad.sh <path to breakpad git clone> [rev, defaults to HEAD]
|
|
|
|
if [ $# -lt 1 ]; then
|
|
echo "Usage: update-breakpad.sh /path/to/breakpad/src [rev]"
|
|
exit 1
|
|
fi
|
|
|
|
crashreporter_dir=`realpath $(dirname $0)`
|
|
repo=${crashreporter_dir}/../..
|
|
rm -rf ${crashreporter_dir}/google-breakpad
|
|
|
|
breakpad_repo=$1
|
|
rev=${2-HEAD}
|
|
(cd $breakpad_repo; git archive --prefix=toolkit/crashreporter/google-breakpad/ $rev) | (cd $repo; tar xf -)
|
|
# Breakpad uses gclient for externals, so manually export what we need.
|
|
lss_rev=$(cd $breakpad_repo; git show ${rev}:DEPS | python -c "import sys; exec sys.stdin; print deps['src/src/third_party/lss'].split('@')[1]")
|
|
(cd $breakpad_repo/src/third_party/lss; git archive --prefix=toolkit/crashreporter/google-breakpad/src/third_party/lss/ $lss_rev) | (cd $repo; tar xf -)
|
|
|
|
# remove some extraneous bits
|
|
# We've forked src/client toolkit/crashreporter/breakpad-client.
|
|
rm -rf \
|
|
${crashreporter_dir}/google-breakpad/docs/ \
|
|
${crashreporter_dir}/google-breakpad/autotools/ \
|
|
${crashreporter_dir}/google-breakpad/m4/ \
|
|
${crashreporter_dir}/google-breakpad/scripts/ \
|
|
${crashreporter_dir}/google-breakpad/src/client/ \
|
|
${crashreporter_dir}/google-breakpad/src/third_party/protobuf \
|
|
${crashreporter_dir}/google-breakpad/src/testing/ \
|
|
${crashreporter_dir}/google-breakpad/src/tools/gyp/ \
|
|
${crashreporter_dir}/google-breakpad/src/processor/testdata/ \
|
|
${crashreporter_dir}/google-breakpad/src/tools/windows/dump_syms/testdata/ \
|
|
${crashreporter_dir}/google-breakpad/.travis.yml
|
|
|
|
# restore our Makefile.ins
|
|
hg -R ${repo} st -n | grep "Makefile\.in$" | xargs hg revert --no-backup
|
|
# and moz.build files
|
|
hg -R ${repo} st -n | grep "moz\.build$" | xargs hg revert --no-backup
|
|
# and some other makefiles
|
|
hg -R ${repo} st -n | grep "objs\.mozbuild$" | xargs hg revert --no-backup
|
|
|
|
# Record git rev
|
|
(cd $breakpad_repo; git rev-parse $rev) > ${crashreporter_dir}/google-breakpad/GIT-INFO
|
|
|
|
# Apply any local patches
|
|
shopt -s nullglob
|
|
for p in ${crashreporter_dir}/breakpad-patches/*.patch; do
|
|
if grep -q -e "--git" $p; then
|
|
patch_opts="-p1"
|
|
else
|
|
patch_opts="-p0"
|
|
fi
|
|
echo "Applying $p"
|
|
if ! filterdiff -x '*/Makefile*' $p | \
|
|
patch -d ${crashreporter_dir}/google-breakpad ${patch_opts}; then
|
|
echo "Failed to apply $p"
|
|
exit 1
|
|
fi
|
|
done
|
|
# remove any .orig files that snuck in
|
|
find ${crashreporter_dir}/google-breakpad -name "*.orig" -exec rm '{}' \;
|
|
|
|
hg addremove ${crashreporter_dir}/google-breakpad/
|