Files
aes67-ESP32-P4/components/spotify/patches/bell/0001-nanopb-generator-protobuf5.patch
bsncubed 039ec75473 Step 7.5b1: cspot (philippe44 fork) builds and links on the P4
- external/cspot: git submodule, pinned to philippe44/cspot 3010349
  (bell ed2d6e9); GPL-3.0.
- components/spotify: project component wrapping cspot. bell trimmed to
  what cspot needs (Tremor Vorbis; no codec wrapper, sinks, MQTT, web
  server, fmt, regex; cJSON from IDF). Xtensa biquad assembly filtered
  out (P4 is RISC-V). CMAKE_POLICY_VERSION_MINIMUM 3.5 for CMake 4.
- Patches in components/spotify/patches, applied at configure time:
  nanopb generator works with protobuf >= 5 (MakeClass removed);
  URLParser.cpp missing <cstdio>/<cstring> for GCC 14.
- CONFIG_COMPILER_CXX_EXCEPTIONS=y (cspot needs exceptions).
- spotify_init() only builds a LoginBlob (link check).
- CLAUDE.md: submodule init and IDF-venv Python packages for nanopb.
- Verified on board: "cspot linked: device "P4 AES67", zeroconf info 588
  bytes"; HLS still playing, PTP locked; image 1.83 MB (70% free).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 15:25:10 +10:00

19 lines
898 B
Diff

diff --git a/external/nanopb/generator/nanopb_generator.py b/external/nanopb/generator/nanopb_generator.py
index e40f18b..64dad5e 100755
--- a/external/nanopb/generator/nanopb_generator.py
+++ b/external/nanopb/generator/nanopb_generator.py
@@ -1463,7 +1463,12 @@ class Message(ProtoElement):
optional_only.ClearField(str('extension'))
optional_only.ClearField(str('enum_type'))
desc = google.protobuf.descriptor.MakeDescriptor(optional_only)
- msg = reflection.MakeClass(desc)()
+ # protobuf >= 5 removed reflection.MakeClass (patch for this project)
+ try:
+ msg = reflection.MakeClass(desc)()
+ except AttributeError:
+ from google.protobuf import message_factory
+ msg = message_factory.GetMessageClass(desc)()
for field in optional_only.field:
if field.type == FieldD.TYPE_STRING: