nanopb: Fix nanopb_pb2.py generation

Since nanopb 0.4.7, importing nanopb/generator/proto/__init__.py is not
sufficient to generate nanopb_pb2.py.

The more robust way to generate this file across nanopb versions is to
import nanopb_generator.py. This approach works with nanopb versions
>=0.4.1, and the existing Pigweed build infrastructure does not work
with nanopb versions prior to 0.4.2.

Add an assert to check that the file is actually generated so that we
can catch this error in the future if a future version of nanopb breaks
this script.

Test: Ran generate_nanopb_proto.py in a project with various versions of
  nanopb (0.4.1, 0.4.2, 0.4.6, 0.4.8) and confirmed that nanopb_pb2. was
  generated.
Change-Id: Ia39c60ae202fc1f0ff5da4221e983fcdf20e3c5e
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200772
Presubmit-Verified: CQ Bot Account <pigweed-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Armando Montanez <amontanez@google.com>
Commit-Queue: Kesavan Yogeswaran <hikes@google.com>
1 file changed
tree: 91c386e511b0c20a71f76393b31d9e40c5be85ea
  1. .allstar/
  2. .vscode/
  3. build_overrides/
  4. docker/
  5. docs/
  6. kudzu/
  7. pw_alignment/
  8. pw_allocator/
  9. pw_analog/
  10. pw_android_toolchain/
  11. pw_arduino_build/
  12. pw_assert/
  13. pw_assert_basic/
  14. pw_assert_log/
  15. pw_assert_tokenized/
  16. pw_assert_zephyr/
  17. pw_async/
  18. pw_async2/
  19. pw_async2_basic/
  20. pw_async_basic/
  21. pw_base64/
  22. pw_bloat/
  23. pw_blob_store/
  24. pw_bluetooth/
  25. pw_bluetooth_hci/
  26. pw_bluetooth_profiles/
  27. pw_bluetooth_proxy/
  28. pw_bluetooth_sapphire/
  29. pw_boot/
  30. pw_boot_cortex_m/
  31. pw_build/
  32. pw_build_android/
  33. pw_build_info/
  34. pw_build_mcuxpresso/
  35. pw_bytes/
  36. pw_channel/
  37. pw_checksum/
  38. pw_chre/
  39. pw_chrono/
  40. pw_chrono_embos/
  41. pw_chrono_freertos/
  42. pw_chrono_rp2040/
  43. pw_chrono_stl/
  44. pw_chrono_threadx/
  45. pw_chrono_zephyr/
  46. pw_cli/
  47. pw_compilation_testing/
  48. pw_config_loader/
  49. pw_console/
  50. pw_containers/
  51. pw_cpu_exception/
  52. pw_cpu_exception_cortex_m/
  53. pw_crypto/
  54. pw_digital_io/
  55. pw_digital_io_linux/
  56. pw_digital_io_mcuxpresso/
  57. pw_digital_io_rp2040/
  58. pw_docgen/
  59. pw_doctor/
  60. pw_emu/
  61. pw_env_setup/
  62. pw_env_setup_zephyr/
  63. pw_file/
  64. pw_format/
  65. pw_function/
  66. pw_fuzzer/
  67. pw_grpc/
  68. pw_hdlc/
  69. pw_hex_dump/
  70. pw_i2c/
  71. pw_i2c_linux/
  72. pw_i2c_mcuxpresso/
  73. pw_i2c_rp2040/
  74. pw_ide/
  75. pw_interrupt/
  76. pw_interrupt_cortex_m/
  77. pw_interrupt_xtensa/
  78. pw_interrupt_zephyr/
  79. pw_intrusive_ptr/
  80. pw_json/
  81. pw_kvs/
  82. pw_libc/
  83. pw_libcxx/
  84. pw_log/
  85. pw_log_android/
  86. pw_log_basic/
  87. pw_log_null/
  88. pw_log_rpc/
  89. pw_log_string/
  90. pw_log_tokenized/
  91. pw_log_zephyr/
  92. pw_malloc/
  93. pw_malloc_freelist/
  94. pw_malloc_freertos/
  95. pw_metric/
  96. pw_minimal_cpp_stdlib/
  97. pw_module/
  98. pw_multibuf/
  99. pw_multisink/
  100. pw_package/
  101. pw_perf_test/
  102. pw_persistent_ram/
  103. pw_polyfill/
  104. pw_preprocessor/
  105. pw_presubmit/
  106. pw_protobuf/
  107. pw_protobuf_compiler/
  108. pw_random/
  109. pw_result/
  110. pw_ring_buffer/
  111. pw_router/
  112. pw_rpc/
  113. pw_rpc_transport/
  114. pw_rust/
  115. pw_snapshot/
  116. pw_software_update/
  117. pw_span/
  118. pw_spi/
  119. pw_spi_mcuxpresso/
  120. pw_spi_rp2040/
  121. pw_status/
  122. pw_stm32cube_build/
  123. pw_stream/
  124. pw_stream_shmem_mcuxpresso/
  125. pw_stream_uart_linux/
  126. pw_stream_uart_mcuxpresso/
  127. pw_string/
  128. pw_symbolizer/
  129. pw_sync/
  130. pw_sync_baremetal/
  131. pw_sync_embos/
  132. pw_sync_freertos/
  133. pw_sync_stl/
  134. pw_sync_threadx/
  135. pw_sync_zephyr/
  136. pw_sys_io/
  137. pw_sys_io_ambiq_sdk/
  138. pw_sys_io_arduino/
  139. pw_sys_io_baremetal_lm3s6965evb/
  140. pw_sys_io_baremetal_stm32f429/
  141. pw_sys_io_emcraft_sf2/
  142. pw_sys_io_mcuxpresso/
  143. pw_sys_io_rp2040/
  144. pw_sys_io_stdio/
  145. pw_sys_io_stm32cube/
  146. pw_sys_io_zephyr/
  147. pw_system/
  148. pw_target_runner/
  149. pw_thread/
  150. pw_thread_embos/
  151. pw_thread_freertos/
  152. pw_thread_stl/
  153. pw_thread_threadx/
  154. pw_thread_zephyr/
  155. pw_tls_client/
  156. pw_tls_client_boringssl/
  157. pw_tls_client_mbedtls/
  158. pw_tokenizer/
  159. pw_toolchain/
  160. pw_toolchain_bazel/
  161. pw_trace/
  162. pw_trace_tokenized/
  163. pw_transfer/
  164. pw_uart/
  165. pw_unit_test/
  166. pw_unit_test_zephyr/
  167. pw_varint/
  168. pw_watch/
  169. pw_web/
  170. pw_work_queue/
  171. seed/
  172. targets/
  173. third_party/
  174. ts/
  175. zephyr/
  176. .bazelignore
  177. .bazelrc
  178. .black.toml
  179. .clang-format
  180. .clang-tidy
  181. .eslintrc.cjs
  182. .git-blame-ignore-revs
  183. .gitattributes
  184. .gitignore
  185. .gn
  186. .mypy.ini
  187. .prettierignore
  188. .prettierrc.cjs
  189. .pw_ide.yaml
  190. .pylintrc
  191. activate.bat
  192. Android.bp
  193. AUTHORS
  194. bootstrap.bat
  195. bootstrap.sh
  196. BUILD.bazel
  197. BUILD.gn
  198. BUILDCONFIG.gn
  199. CMakeLists.txt
  200. jest.config.ts
  201. Kconfig.zephyr
  202. LICENSE
  203. modules.gni
  204. OWNERS
  205. package-lock.json
  206. package.json
  207. pigweed.json
  208. PIGWEED_MODULES
  209. README.md
  210. rollup.config.js
  211. tsconfig.json
  212. 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