Fuchsia libraries#

Fuchsia is a modern open source operating system developed by Google.

Pigweed does not use the Fuchsia operating system itself, but uses some low-level libraries developed for it.

Features#

Parts of two Fuchsia libraries are used in Pigweed:

  • FIT – Portable library of low-level C++ features.

  • stdcompat – Implements newer C++ features for older standards.

Code synchronization#

Unlike other third party libraries used by Pigweed, some Fuchsia source code is included in tree. A few factors drove this decision:

  • Core Pigweed features like pw::Function depend on these Fuchsia libraries. Including the source in-tree avoids having Pigweed require an an external repository.

  • The Fuchsia repository is too large to require downstream projects to clone.

If Fuchsia moves stdcompat and fit to separate repositories, the decision to include Fuchsia code in tree may be reconsidered.

Process#

Code is synchronized between the Fuchsia repository and the Pigweed repository using the third_party/fuchsia/copy.bara.sky) Copybara script.

To synchronize with the Fuchsia repository, run the copybara tool with the script:

copybara third_party/fuchsia/copy.bara.sky

That creates a Gerrit change with updates from the Fuchsia repo, if any.

Files are synced from Fuchsia repository to their original paths under the third_party/fuchsia/repo directory in Pigweed. The Copybara script applies patches to adapt the sources for use in Pigweed. For example, __builtin_abort is replaced with PW_ASSERT.