diff --git a/src/gnuradio_mcp/middlewares/oot.py b/src/gnuradio_mcp/middlewares/oot.py index 4df4ead..80ebf3c 100644 --- a/src/gnuradio_mcp/middlewares/oot.py +++ b/src/gnuradio_mcp/middlewares/oot.py @@ -57,27 +57,30 @@ headers so cmake skips the regeneration step. import hashlib, pathlib, re, sys root = pathlib.Path(sys.argv[1]) if len(sys.argv) > 1 else pathlib.Path(".") -bindings = root / "python" / "bindings" -if not bindings.is_dir(): + +# GR 3.9-: python/bindings/ | GR 3.10+: python//bindings/ +binding_dirs = list(root.joinpath("python").glob("**/bindings")) +if not binding_dirs: sys.exit(0) -for cc in sorted(bindings.glob("*_python.cc")): - text = cc.read_text() - m = re.search(r"BINDTOOL_HEADER_FILE\\((\\S+)\\)", text) - if not m: - continue - header = next(root.joinpath("include").rglob(m.group(1)), None) - if not header: - continue - actual = hashlib.md5(header.read_bytes()).hexdigest() - new_text = re.sub( - r"BINDTOOL_HEADER_FILE_HASH\\([a-f0-9]+\\)", - f"BINDTOOL_HEADER_FILE_HASH({actual})", - text, - ) - if new_text != text: - cc.write_text(new_text) - print(f"Fixed binding hash: {cc.name}") +for bindings in binding_dirs: + for cc in sorted(bindings.glob("*_python.cc")): + text = cc.read_text() + m = re.search(r"BINDTOOL_HEADER_FILE\\((\\S+)\\)", text) + if not m: + continue + header = next(root.joinpath("include").rglob(m.group(1)), None) + if not header: + continue + actual = hashlib.md5(header.read_bytes()).hexdigest() + new_text = re.sub( + r"BINDTOOL_HEADER_FILE_HASH\\([a-f0-9]+\\)", + f"BINDTOOL_HEADER_FILE_HASH({actual})", + text, + ) + if new_text != text: + cc.write_text(new_text) + print(f"Fixed binding hash: {cc.name}") """ diff --git a/src/gnuradio_mcp/oot_catalog.py b/src/gnuradio_mcp/oot_catalog.py index fa252d1..737fce1 100644 --- a/src/gnuradio_mcp/oot_catalog.py +++ b/src/gnuradio_mcp/oot_catalog.py @@ -286,6 +286,22 @@ CATALOG: dict[str, OOTModuleEntry] = { branch="master", homepage="https://github.com/muccc/gr-iridium", ), + _entry( + name="leo", + description="LEO satellite channel simulator (Doppler, path loss, atmosphere)", + category="Satellite", + git_url="https://gitlab.com/librespacefoundation/gr-leo", + branch="gnuradio-3.10", + homepage="https://gitlab.com/librespacefoundation/gr-leo", + ), + _entry( + name="dl5eu", + description="DVB-T OFDM synchronization and TPS decoder", + category="Broadcast", + git_url="https://github.com/dl5eu/gr-dl5eu", + branch="main", + homepage="https://github.com/dl5eu/gr-dl5eu", + ), _entry( name="inspector", description="Signal analysis toolbox (energy detection, OFDM estimation)",