pw_env_setup: Add Python constraints with hashes

- Split some constraints out into their own
  python_base_requirements.txt file. This contains all packages needed
  to run pip, wheel, pip-tools. This is installed by default in each
  pw_python_venv before project 3p deps.

- New constraint and requirement files:

  - `constraint_hashes.list`
    For downstream project use which contains packges with hashes for
    these files:
    - `constraint.list`
    - `python_base_requirements.txt`

  - `upstream_requirements_lock.txt`
    pip-compiled results with hashes for all Upstream Python
    requirements. This includes these files:
    - `constraint.list`
    - `python_base_requirements.txt`
    - `pigweed_upstream_requirements.txt`
    Currently this file is only used for Bazel's pip_install step.

- Presubmit steps:
  - check_upstream_python_constraints: Check if constraints need
    regenerating.
  - update_upstream_python_constraints: Regenerate all constraint
    files with hashes.
  - vendor_python_wheels: Downloads all Python packages to a local path
    in the out dir. This calls a new top level ninja target which is
    not run by default. This will download source Python wheels as
    well as binary wheels for all platforms on Python 3.8, 3.9, 3.10,
    and 3.11.

- Update some old versioned packages that were missing precompiled
  wheel files for Python 3.11.

Bug: b/287302102
Change-Id: I40a0f2c506e363af393c2128c3df683fd7a04487
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/153470
Commit-Queue: Anthony DiGirolamo <tonymd@google.com>
Reviewed-by: Rob Mohr <mohrr@google.com>
Reviewed-by: Ted Pudlik <tpudlik@google.com>
16 files changed
tree: 7d8ed30a95480763a3d97c7ca055c07151f7ac4a
  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