Pass read-only file to dropbox uploader

It seems that the dropbox API internally switches to the
system_server label while uploading (likely it starts a new thread).
system_server has read-only SELinux permissions on
/data/misc/perfetto-traces. This CL passes a read-only copy of the
file descriptor to Dropbox to work around this.

The violation looks like this:
01-31 06:47:46.424 16056 16056 I perfetto: type=1400 audit(0.0:62): avc: denied { write } for path=2F646174612F6D6973632F706572666574746F2D7472616365732F2332303937393830202864656C6574656429 dev="sda45" ino=2097980 scontext=u:r:system_server:s0 tcontext=u:object_r:perfetto_traces_data_file:s0 tclass=file permissive=1

Test: perfetto -c :test --dropbox
Change-Id: If15de8d111188610a1dad1fcd8a2315f7ee5d9ac
1 file changed
tree: f4a71074b6c727e19aaea604d510dff150e00b5b
  1. build_overrides/
  2. buildtools/
  3. cts/
  4. debian/
  5. docs/
  6. gn/
  7. include/
  8. infra/
  9. protos/
  10. src/
  11. test/
  12. tools/
  13. .clang-format
  14. .gitignore
  15. .gn
  16. .travis.yml
  17. Android.bp
  18. Android.bp.extras
  19. BUILD.gn
  20. codereview.settings
  21. MODULE_LICENSE_APACHE2
  22. NOTICE
  23. OWNERS
  24. perfetto.rc
  25. PRESUBMIT.py
  26. README.chromium
  27. README.md
README.md

Perfetto - Performance instrumentation and logging for POSIX platforms

This project is meant to be built both as part of the Android tree and from a standalone checkout

For internal docs see this page

Supported platforms

Android is the platform targeted in the first milestones. Right now Linux desktop and OSX are maintained best-effort.

Contributing

This project uses Android AOSP Gerrit for code reviews and uses the Google C++ style. Currently targets -std=c++11.

You can use both git cl upload from Chromium depot tools or Android repo to upload patches.

git cl is quite convenient as it supports code auto-formatting via git cl format.

See https://source.android.com/source/contributing for more details about external contributions and CLA signing.

Build instructions

See docs/build_instructions.md

Running Perfetto

See docs/running_perfetto.md

Continuous integration

Continuous build and test coverage is available at perfetto-ci.appspot.com. Trybots: CLs uploaded to gerrit are automatically submitted to TravisCI within one minute and made available on the CI page above. The relevant code lives in the infra/ directory.

Run tests

On the host (Linux / OSX)

$ tools/ninja -C out/default (tracing_unittests | tracing_benchmarks)
$ out/default/tracing_unittests --gtest_help

On Android

Either connect a device in ADB mode or use the bundled emulator.

To start the emulator:
$ tools/run_android_emulator (arm | arm64) &

To run the tests (either on the emulator or physical device):
$ tools/run_android_test out/default tracing_unittests