pw_presubmit: Pass rng-seed to gn_fuzz_build

This CL adds a new `modified_env` context manager, and uses it to set
the FUZZTEST_PRNG_SEED that FuzzTest uses for seed material. It also
adds a function to convert `PresubmitContext.rng_seed` to the URL-safe,
base64-encoded value expected by FuzzTest.

Change-Id: I9f6c8f80b77012821af15b86f0735e7bfc391cc3
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/149433
Reviewed-by: Rob Mohr <mohrr@google.com>
Presubmit-Verified: CQ Bot Account <pigweed-scoped@luci-project-accounts.iam.gserviceaccount.com>
Commit-Queue: Aaron Green <aarongreen@google.com>
2 files changed
tree: be29542b1f03d64d568946c703cf5126c0739832
  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_docgen/
  46. pw_doctor/
  47. pw_env_setup/
  48. pw_file/
  49. pw_function/
  50. pw_fuzzer/
  51. pw_hdlc/
  52. pw_hex_dump/
  53. pw_i2c/
  54. pw_i2c_mcuxpresso/
  55. pw_ide/
  56. pw_interrupt/
  57. pw_interrupt_cortex_m/
  58. pw_interrupt_zephyr/
  59. pw_intrusive_ptr/
  60. pw_kvs/
  61. pw_libc/
  62. pw_log/
  63. pw_log_android/
  64. pw_log_basic/
  65. pw_log_null/
  66. pw_log_rpc/
  67. pw_log_string/
  68. pw_log_tokenized/
  69. pw_log_zephyr/
  70. pw_malloc/
  71. pw_malloc_freelist/
  72. pw_metric/
  73. pw_minimal_cpp_stdlib/
  74. pw_module/
  75. pw_multisink/
  76. pw_package/
  77. pw_perf_test/
  78. pw_persistent_ram/
  79. pw_polyfill/
  80. pw_preprocessor/
  81. pw_presubmit/
  82. pw_protobuf/
  83. pw_protobuf_compiler/
  84. pw_random/
  85. pw_result/
  86. pw_ring_buffer/
  87. pw_router/
  88. pw_rpc/
  89. pw_rpc_transport/
  90. pw_rust/
  91. pw_snapshot/
  92. pw_software_update/
  93. pw_span/
  94. pw_spi/
  95. pw_status/
  96. pw_stm32cube_build/
  97. pw_stream/
  98. pw_string/
  99. pw_symbolizer/
  100. pw_sync/
  101. pw_sync_baremetal/
  102. pw_sync_embos/
  103. pw_sync_freertos/
  104. pw_sync_stl/
  105. pw_sync_threadx/
  106. pw_sync_zephyr/
  107. pw_sys_io/
  108. pw_sys_io_arduino/
  109. pw_sys_io_baremetal_lm3s6965evb/
  110. pw_sys_io_baremetal_stm32f429/
  111. pw_sys_io_emcraft_sf2/
  112. pw_sys_io_mcuxpresso/
  113. pw_sys_io_pico/
  114. pw_sys_io_stdio/
  115. pw_sys_io_stm32cube/
  116. pw_sys_io_zephyr/
  117. pw_system/
  118. pw_target_runner/
  119. pw_thread/
  120. pw_thread_embos/
  121. pw_thread_freertos/
  122. pw_thread_stl/
  123. pw_thread_threadx/
  124. pw_thread_zephyr/
  125. pw_tls_client/
  126. pw_tls_client_boringssl/
  127. pw_tls_client_mbedtls/
  128. pw_tokenizer/
  129. pw_tool/
  130. pw_toolchain/
  131. pw_trace/
  132. pw_trace_tokenized/
  133. pw_transfer/
  134. pw_unit_test/
  135. pw_unit_test_zephyr/
  136. pw_varint/
  137. pw_watch/
  138. pw_web/
  139. pw_work_queue/
  140. seed/
  141. targets/
  142. third_party/
  143. ts/
  144. zephyr/
  145. .bazelignore
  146. .bazelrc
  147. .black.toml
  148. .clang-format
  149. .clang-tidy
  150. .eslintrc.json
  151. .git-blame-ignore-revs
  152. .gitattributes
  153. .gitignore
  154. .gn
  155. .mypy.ini
  156. .prettierrc.js
  157. .pw_ide.yaml
  158. .pylintrc
  159. activate.bat
  160. Android.bp
  161. AUTHORS
  162. bootstrap.bat
  163. bootstrap.sh
  164. BUILD.bazel
  165. BUILD.gn
  166. BUILDCONFIG.gn
  167. CMakeLists.txt
  168. jest.config.ts
  169. Kconfig.zephyr
  170. LICENSE
  171. modules.gni
  172. OWNERS
  173. package-lock.json
  174. package.json
  175. pigweed.json
  176. PIGWEED_MODULES
  177. README.md
  178. rollup.config.js
  179. tsconfig.json
  180. 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