mirror of
https://github.com/meshtastic/firmware.git
synced 2026-05-18 21:56:34 -04:00
* Added NodeDB fixtures and refactored to use std maps for better efficiency * Defer NodeDB save during xmodem transfer to prevent mid-transfer fsFormat
52 lines
1.8 KiB
Bash
Executable File
52 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Regenerate Python protobuf bindings from the in-tree `protobufs/` submodule
|
|
# into `bin/_generated/`. Called by bin/regen-fake-nodedbs.sh; also useful as
|
|
# a standalone refresh after any change to a .proto file.
|
|
#
|
|
# Output is .gitignored — bindings are a build artifact.
|
|
#
|
|
# Namespace rewrite:
|
|
# The .proto files declare `package meshtastic;`, which makes protoc emit
|
|
# imports like `from meshtastic import mesh_pb2`. That conflicts with the
|
|
# PyPI `meshtastic` package (which the mcp-server relies on for its
|
|
# SerialInterface/BLEInterface transport). We post-process the generated
|
|
# files to live under `meshtastic_v25` instead — both the directory layout
|
|
# and all internal imports — so they coexist cleanly with the PyPI package.
|
|
|
|
set -euo pipefail
|
|
cd "$(dirname "$0")/.."
|
|
|
|
if ! command -v protoc >/dev/null 2>&1; then
|
|
echo "ERROR: protoc not found in PATH." >&2
|
|
echo " macOS: brew install protobuf" >&2
|
|
echo " Ubuntu/Debian: apt install protobuf-compiler" >&2
|
|
exit 1
|
|
fi
|
|
|
|
OUT=bin/_generated
|
|
LOCAL_NS=meshtastic_v25
|
|
|
|
rm -rf "$OUT"
|
|
mkdir -p "$OUT"
|
|
|
|
# 1) Generate from the in-tree protos. nanopb.proto first so its descriptor
|
|
# is available for the [(nanopb).*] options on other messages.
|
|
protoc \
|
|
--proto_path=protobufs \
|
|
--python_out="$OUT" \
|
|
protobufs/nanopb.proto \
|
|
protobufs/meshtastic/*.proto
|
|
|
|
# 2) Move the generated `meshtastic/` directory to `meshtastic_v25/`.
|
|
mv "$OUT/meshtastic" "$OUT/$LOCAL_NS"
|
|
|
|
# 3) Rewrite internal imports: any reference to `meshtastic.X_pb2` or
|
|
# `from meshtastic import X_pb2` becomes `meshtastic_v25.*`.
|
|
python3 bin/_rewrite_proto_namespace.py "$OUT/$LOCAL_NS" "$LOCAL_NS"
|
|
|
|
# 4) Make the package importable.
|
|
touch "$OUT/__init__.py"
|
|
touch "$OUT/$LOCAL_NS/__init__.py"
|
|
|
|
echo "regenerated Python protobuf bindings -> $OUT/$LOCAL_NS/ (namespace: $LOCAL_NS)" >&2
|