Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(676)

Unified Diff: third_party/crashpad/crashpad/doc/developing.ad

Issue 2478633002: Update Crashpad to b47bf6c250c6b825dee1c5fbad9152c2c962e828 (Closed)
Patch Set: mac comment 2 Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/crashpad/crashpad/client/crashpad_info.cc ('k') | third_party/crashpad/crashpad/doc/status.ad » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/crashpad/crashpad/doc/developing.ad
diff --git a/third_party/crashpad/crashpad/doc/developing.ad b/third_party/crashpad/crashpad/doc/developing.ad
index 9174f6b1a11a6df7037076808b5baffd80a0f73a..a8aafcf1280fd973930fbb7f690141a663c39dbd 100644
--- a/third_party/crashpad/crashpad/doc/developing.ad
+++ b/third_party/crashpad/crashpad/doc/developing.ad
@@ -38,7 +38,7 @@ present in the `$PATH` environment variable:
* Chromium’s
https://dev.chromium.org/developers/how-tos/depottools[depot_tools].
- * http://git-scm.com/[Git]. This is provided by Xcode on Mac OS X and by
+ * https://git-scm.com/[Git]. This is provided by Xcode on Mac OS X and by
depot_tools on Windows.
* https://www.python.org/[Python]. This is provided by the operating system on
Mac OS X, and by depot_tools on Windows.
@@ -69,8 +69,8 @@ $ *cd ~/crashpad*
$ *fetch crashpad*
----
-`fetch crashpad` performs the initial `gclient sync`, establishing a
-fully-functional local checkout.
+`fetch crashpad` performs the initial `git clone` and `gclient sync`,
+establishing a fully-functional local checkout.
=== Subsequent Checkouts
@@ -84,10 +84,10 @@ $ *gclient sync*
== Building
Crashpad uses https://gyp.gsrc.io/[GYP] to generate
-https://martine.github.io/ninja/[Ninja] build files. The build is described by
-`.gyp` files throughout the Crashpad source code tree. The
-`build/gyp_crashpad.py` script runs GYP properly for Crashpad, and is also
-called when you run `fetch crashpad`, `gclient sync`, or `gclient runhooks`.
+https://ninja-build.org/[Ninja] build files. The build is described by `.gyp`
+files throughout the Crashpad source code tree. The `build/gyp_crashpad.py`
+script runs GYP properly for Crashpad, and is also called when you run `fetch
+crashpad`, `gclient sync`, or `gclient runhooks`.
The Ninja build files and build output are in the `out` directory. Both debug-
and release-mode configurations are available. The examples below show the debug
@@ -104,6 +104,80 @@ Ninja is part of the
https://dev.chromium.org/developers/how-tos/depottools[depot_tools]. There’s no
need to install it separately.
+=== Android
+
+Crashpad’s Android port is in its early stages. This build relies on
+cross-compilation. It’s possible to develop Crashpad for Android on any platform
+that the https://developer.android.com/ndk/[Android NDK (Native Development
+Kit)] runs on.
+
+If it’s not already present on your system,
+https://developer.android.com/ndk/downloads/[download the NDK package for your
+system] and expand it to a suitable location. These instructions assume that
+it’s been expanded to `~/android-ndk-r13`.
+
+To build Crashpad, portions of the NDK must be reassembled into a
+https://developer.android.com/ndk/guides/standalone_toolchain.html[standalone
+toolchain]. This is a repackaged subset of the NDK suitable for cross-compiling
+for a single Android architecture (such as `arm`, `arm64`, `x86`, and `x86_64`)
+targeting a specific
+https://source.android.com/source/build-numbers.html[Android API level]. The
+standalone toolchain only needs to be built from the NDK one time for each set
+of options desired. To build a standalone toolchain targeting 64-bit ARM and API
+level 21 (Android 5.0 “Lollipop”), run:
+
+[subs="verbatim,quotes"]
+----
+$ *cd ~*
+$ *python android-ndk-r13/build/tools/make_standalone_toolchain.py \
+ --arch=arm64 --api=21 --install-dir=android-ndk-r13_arm64_api21*
+----
+
+Note that Chrome uses Android API level 21 for 64-bit platforms and 16 for
+32-bit platforms. See Chrome’s
+https://chromium.googlesource.com/chromium/src/+/master/build/config/android/config.gni[`build/config/android/config.gni`]
+which sets `_android_api_level` and `_android64_api_level`.
+
+To configure a Crashpad build for Android using this standalone toolchain,
+set several environment variables directing the build to the standalone
+toolchain, along with GYP options to identify an Android build. This must be
+done after any `gclient sync`, or instead of any `gclient runhooks` operation.
+The environment variables only need to be set for this `gyp_crashpad.py`
+invocation, and need not be permanent.
+
+[subs="verbatim,quotes"]
+----
+$ *cd \~/crashpad/crashpad*
+$ *CC_target=\~/android-ndk-r13_arm64_api21/bin/clang \
+ CXX_target=\~/android-ndk-r13_arm64_api21/bin/clang++ \
+ AR_target=\~/android-ndk-r13_arm64_api21/bin/aarch64-linux-android-ar \
+ NM_target=\~/android-ndk-r13_arm64_api21/bin/aarch64-linux-android-nm \
+ READELF_target=~/android-ndk-r13_arm64_api21/bin/aarch64-linux-android-readelf \
+ python build/gyp_crashpad.py \
+ -DOS=android -Dtarget_arch=arm64 -Dclang=1 \
+ --generator-output=out_android_arm64_api21 -f ninja-android*
+----
+
+Target “triplets” to use for `ar`, `nm`, and `readelf` are:
+
+[width="40%",cols="1,3",frame="topbot"]
+|===
+|`arm` |`arm-linux-androideabi`
+|`arm64` |`aarch64-linux-android`
+|`x86` |`i686-linux-android`
+|`x86_64` |`x86_64-linux-android`
+|===
+
+The port is incomplete, but targets known to be working include `crashpad_util`,
+`crashpad_test`, and `crashpad_test_test`. This list will grow over time. To
+build, direct `ninja` to the specific `out` directory chosen by
+`--generator-output` above.
+
+[subs="verbatim,quotes"]
+----
+$ *ninja -C out_android_arm64_api21/out/Debug crashpad_test_test*
+----
+
== Testing
Crashpad uses https://github.com/google/googletest/[Google Test] as its
@@ -130,6 +204,39 @@ $ *cd ~/crashpad/crashpad*
$ *python build/run_tests.py Debug*
----
+=== Android
+
+To test on Android, use
+https://developer.android.com/studio/command-line/adb.html[ADB (Android Debug
+Bridge)] to `adb push` test executables and test data to a device or emulator,
+then use `adb shell` to get a shell to run the test executables from. ADB is
+part of the https://developer.android.com/sdk/[Android SDK]. Note that it is
+sufficient to install just the command-line tools. The entire Android Studio IDE
+is not necessary to obtain ADB.
+
+This example runs `crashpad_test_test` on a device. This test executable has a
+run-time dependency on a second executable and a test data file, which are also
+transferred to the device prior to running the test.
+
+[subs="verbatim,quotes"]
+----
+$ *cd ~/crashpad/crashpad*
+$ *adb push out_android_arm64_api21/out/Debug/crashpad_test_test /data/local/tmp/*
+[100%] /data/local/tmp/crashpad_test_test
+$ *adb push \
+ out_android_arm64_api21/out/Debug/crashpad_test_test_multiprocess_exec_test_child \
+ /data/local/tmp/*
+[100%] /data/local/tmp/crashpad_test_test_multiprocess_exec_test_child
+$ *adb shell mkdir -p /data/local/tmp/crashpad_test_data_root/test*
+$ *adb push test/paths_test_data_root.txt \
+ /data/local/tmp/crashpad_test_data_root/test/*
+[100%] /data/local/tmp/crashpad_test_data_root/test/paths_test_data_root.txt
+$ *adb shell*
+device:/ $ *cd /data/local/tmp*
+device:/data/local/tmp $ *CRASHPAD_TEST_DATA_ROOT=crashpad_test_data_root \
+ ./crashpad_test_test*
+----
+
== Contributing
Crashpad’s contribution process is very similar to
@@ -139,11 +246,12 @@ process].
=== Code Review
A code review must be conducted for every change to Crashpad’s source code. Code
-review is conducted on https://codereview.chromium.org/[Chromium’s Rietveld]
-system, and all code reviews must be sent to an appropriate reviewer, with a Cc
-sent to
+review is conducted on https://chromium-review.googlesource.com/[Chromium’s
+Gerrit] system, and all code reviews must be sent to an appropriate reviewer,
+with a Cc sent to
https://groups.google.com/a/chromium.org/group/crashpad-dev[crashpad-dev]. The
-`codereview.settings` file specifies this environment to `git-cl`.
+https://chromium.googlesource.com/crashpad/crashpad/+/master/codereview.settings[`codereview.settings`]
+file specifies this environment to `git-cl`.
`git-cl` is part of the
https://dev.chromium.org/developers/how-tos/depottools[depot_tools]. There’s no
@@ -159,14 +267,18 @@ $ *git commit*
$ *git cl upload*
----
-Uploading a patch to Rietveld does not automatically request a review. You must
-select a reviewer and mail your request to them (with a Cc to crashpad-dev) from
-the Rietveld issue page after running `git cl upload`. If you have lost track of
-the issue page, `git cl issue` will remind you of its URL. Alternatively, you
-can request review when uploading to Rietveld by using `git cl upload
---send-mail`
+The https://polygerrit.appspot.com/[PolyGerrit interface] to Gerrit, undergoing
+active development, is recommended. To switch from the classic GWT-based Gerrit
+UI to PolyGerrit, click the PolyGerrit link in a Gerrit review page’s footer.
+
+Uploading a patch to Gerrit does not automatically request a review. You must
+select a reviewer on the Gerrit review page after running `git cl upload`. This
+action notifies your reviewer of the code review request. If you have lost track
+of the review page, `git cl issue` will remind you of its URL. Alternatively,
+you can request review when uploading to Gerrit by using `git cl upload
+--send-mail`.
-Git branches maintain their association with Rietveld issues, so if you need to
+Git branches maintain their association with Gerrit reviews, so if you need to
make changes based on review feedback, you can do so on the correct Git branch,
committing your changes locally with `git commit`. You can then upload a new
patch set with `git cl upload` and let your reviewer know you’ve addressed the
@@ -174,8 +286,8 @@ feedback.
=== Landing Changes
-After code review is complete and “LGTM” (“looks good to me”) has been received
-from all reviewers, project members can commit the patch themselves:
+After code review is complete and “Code-Review: +1” has been received from all
+reviewers, project members can commit the patch themselves:
[subs="verbatim,quotes"]
----
@@ -184,19 +296,14 @@ $ *git checkout work_branch*
$ *git cl land*
----
+Alternatively, patches can be committed by clicking the “Submit” button in the
+Gerrit UI.
+
Crashpad does not currently have a
https://dev.chromium.org/developers/testing/commit-queue[commit queue], so
-contributors that are not project members will have to ask a project member to
+contributors who are not project members will have to ask a project member to
commit the patch for them. Project members can commit changes on behalf of
-external contributors by patching the change into a local branch and landing it:
-
-[subs="verbatim,quotes"]
-----
-$ *cd ~/crashpad/crashpad*
-$ *git checkout -b for_external_contributor origin/master*
-$ *git cl patch 12345678* _# 12345678 is the Rietveld issue number_
-$ *git cl land -c \'External Contributor <external@contributor.org>'*
-----
+external contributors by clicking the “Submit” button in the Gerrit UI.
=== External Contributions
« no previous file with comments | « third_party/crashpad/crashpad/client/crashpad_info.cc ('k') | third_party/crashpad/crashpad/doc/status.ad » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698