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:
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.
Files are synced from Fuchsia repository to the third_party/fuchsia/repo
directory in Pigweed. The files maintain their original paths under that
directory. The Copybara script applies patches to adapt the sources for use in
Pigweed. For example, __builtin_abort
is replaced with PW_ASSERT
.
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.
If the copybara
command fails, the Copybara script or patch file may need to
be updated. Try the following:
Ensure that the source files in
copy.bara.sky
are up-to-date. Fix the list if any files were renamed in Fuchsia.Update the patch file Copybara applies by running
python third_party/fuchsia/generate_fuchsia_patch.py
.