.. _chapter-pw-env_setup: ------------ pw_env_setup ------------ A classic problem in the embedded space is reducing the time from git clone to having a binary executing on a device. The issue is that an entire suite of tools is needed for non-trivial production embedded projects. For example: - A C++ compiler for your target device, and also for your host - A build system or three; for example, GN, Ninja, CMake, Bazel - A code formatting program like clang-format - A debugger like OpenOCD to flash and debug your embedded device - A known Python version with known modules installed for scripting - A Go compiler for the Go-based command line tools ...and so on In the server space, container solutions like Docker or Podman solve this; however, in our experience container solutions are a mixed bag for embedded systems development where one frequently needs access to native system resources like USB devices, or must operate on Windows. pw_env_setup is our compromise solution for this problem that works on Mac, Windows, and Linux. It leverages the Chrome packaging system `CIPD`_ to bootstrap a Python installation, which in turn inflates a virtual environment. The tooling is installed into your workspace, and makes no changes to your system. This tooling is designed to be reused by any project. .. _CIPD: https://github.com/luci/luci-go/tree/master/cipd .. warning:: At this time pw_env_setup works for us, but isn’t well tested. We don’t suggest relying on it just yet. However, we are interested in experience reports; if you give it a try, please `send us a note`_ about your experience. .. _send us a note: pigweed@googlegroups.com