pw_build: Python script for the build_wheel target

This adds generate_python_wheel.py to replace the direct call to
python -m build within GN.

The behavior remains the same with two additions:

- Stale wheel files from old builds are deleted first
- After the wheel is created a 'requirements.txt' is written with the
  package name==version and the sha256 line. This will be used in a
  followup CL to install Python wheel artifacts with: `pip install
  --require-hashes`

Change-Id: If85210364f73e7fb8e59629cacaac95ebb0d90b1
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/153710
Commit-Queue: Anthony DiGirolamo <tonymd@google.com>
Reviewed-by: Wyatt Hepler <hepler@google.com>
Presubmit-Verified: CQ Bot Account <pigweed-scoped@luci-project-accounts.iam.gserviceaccount.com>
8 files changed
tree: bccc61c760f595dd7ef76ee336eccdbbfb8b2268
  1. .allstar/
  2. .vscode/
  3. build_overrides/
  4. docker/
  5. docs/
  6. pw_alignment/
  7. pw_allocator/
  8. pw_analog/
  9. pw_android_toolchain/
  10. pw_arduino_build/
  11. pw_assert/
  12. pw_assert_basic/
  13. pw_assert_log/
  14. pw_assert_tokenized/
  15. pw_assert_zephyr/
  16. pw_async/
  17. pw_async_basic/
  18. pw_base64/
  19. pw_bloat/
  20. pw_blob_store/
  21. pw_bluetooth/
  22. pw_bluetooth_hci/
  23. pw_bluetooth_profiles/
  24. pw_boot/
  25. pw_boot_cortex_m/
  26. pw_build/
  27. pw_build_info/
  28. pw_build_mcuxpresso/
  29. pw_bytes/
  30. pw_checksum/
  31. pw_chrono/
  32. pw_chrono_embos/
  33. pw_chrono_freertos/
  34. pw_chrono_stl/
  35. pw_chrono_threadx/
  36. pw_chrono_zephyr/
  37. pw_cli/
  38. pw_compilation_testing/
  39. pw_console/
  40. pw_containers/
  41. pw_cpu_exception/
  42. pw_cpu_exception_cortex_m/
  43. pw_crypto/
  44. pw_digital_io/
  45. pw_digital_io_mcuxpresso/
  46. pw_docgen/
  47. pw_doctor/
  48. pw_env_setup/
  49. pw_file/
  50. pw_function/
  51. pw_fuzzer/
  52. pw_hdlc/
  53. pw_hex_dump/
  54. pw_i2c/
  55. pw_i2c_linux/
  56. pw_i2c_mcuxpresso/
  57. pw_ide/
  58. pw_interrupt/
  59. pw_interrupt_cortex_m/
  60. pw_interrupt_zephyr/
  61. pw_intrusive_ptr/
  62. pw_kvs/
  63. pw_libc/
  64. pw_log/
  65. pw_log_android/
  66. pw_log_basic/
  67. pw_log_null/
  68. pw_log_rpc/
  69. pw_log_string/
  70. pw_log_tokenized/
  71. pw_log_zephyr/
  72. pw_malloc/
  73. pw_malloc_freelist/
  74. pw_metric/
  75. pw_minimal_cpp_stdlib/
  76. pw_module/
  77. pw_multisink/
  78. pw_package/
  79. pw_perf_test/
  80. pw_persistent_ram/
  81. pw_polyfill/
  82. pw_preprocessor/
  83. pw_presubmit/
  84. pw_protobuf/
  85. pw_protobuf_compiler/
  86. pw_random/
  87. pw_result/
  88. pw_ring_buffer/
  89. pw_router/
  90. pw_rpc/
  91. pw_rpc_transport/
  92. pw_rust/
  93. pw_snapshot/
  94. pw_software_update/
  95. pw_span/
  96. pw_spi/
  97. pw_spi_mcuxpresso/
  98. pw_status/
  99. pw_stm32cube_build/
  100. pw_stream/
  101. pw_stream_uart_mcuxpresso/
  102. pw_string/
  103. pw_symbolizer/
  104. pw_sync/
  105. pw_sync_baremetal/
  106. pw_sync_embos/
  107. pw_sync_freertos/
  108. pw_sync_stl/
  109. pw_sync_threadx/
  110. pw_sync_zephyr/
  111. pw_sys_io/
  112. pw_sys_io_arduino/
  113. pw_sys_io_baremetal_lm3s6965evb/
  114. pw_sys_io_baremetal_stm32f429/
  115. pw_sys_io_emcraft_sf2/
  116. pw_sys_io_mcuxpresso/
  117. pw_sys_io_pico/
  118. pw_sys_io_stdio/
  119. pw_sys_io_stm32cube/
  120. pw_sys_io_zephyr/
  121. pw_system/
  122. pw_target_runner/
  123. pw_thread/
  124. pw_thread_embos/
  125. pw_thread_freertos/
  126. pw_thread_stl/
  127. pw_thread_threadx/
  128. pw_thread_zephyr/
  129. pw_tls_client/
  130. pw_tls_client_boringssl/
  131. pw_tls_client_mbedtls/
  132. pw_tokenizer/
  133. pw_tool/
  134. pw_toolchain/
  135. pw_trace/
  136. pw_trace_tokenized/
  137. pw_transfer/
  138. pw_unit_test/
  139. pw_unit_test_zephyr/
  140. pw_varint/
  141. pw_watch/
  142. pw_web/
  143. pw_work_queue/
  144. seed/
  145. targets/
  146. third_party/
  147. ts/
  148. zephyr/
  149. .bazelignore
  150. .bazelrc
  151. .black.toml
  152. .clang-format
  153. .clang-tidy
  154. .eslintrc.json
  155. .git-blame-ignore-revs
  156. .gitattributes
  157. .gitignore
  158. .gn
  159. .mypy.ini
  160. .prettierrc.js
  161. .pw_ide.yaml
  162. .pylintrc
  163. activate.bat
  164. Android.bp
  165. AUTHORS
  166. bootstrap.bat
  167. bootstrap.sh
  168. BUILD.bazel
  169. BUILD.gn
  170. BUILDCONFIG.gn
  171. CMakeLists.txt
  172. jest.config.ts
  173. Kconfig.zephyr
  174. LICENSE
  175. modules.gni
  176. OWNERS
  177. package-lock.json
  178. package.json
  179. pigweed.json
  180. PIGWEED_MODULES
  181. README.md
  182. rollup.config.js
  183. tsconfig.json
  184. WORKSPACE
README.md

Pigweed

Pigweed is an open source collection of embedded-targeted libraries–or as we like to call them, modules. These modules are building blocks and infrastructure that enable faster and more reliable development on small-footprint MMU-less 32-bit microcontrollers like the STMicroelectronics STM32L452 or the Nordic nRF52832.

For more information please see our website: https://pigweed.dev/.

Links