Files
RedBear-OS/local/recipes/libs/libxkbcommon/source/test/symbols-leak-test.py
T
vasilito 04b7641e85 config: add x11proto dependency for libxau and SDDM
- Add x11proto to redbear-full.toml package list
- libxau recipe updated with x11proto dependency and custom build script
- Fixes libxau build failure: 'Package xproto was not found'
2026-06-20 14:57:46 +03:00

63 lines
1.5 KiB
Python
Executable File

#!/usr/bin/env python3
"""Check that all exported symbols are specified in the symbol version scripts.
If this fails, please update the appropriate .map file (adding new version
nodes as needed).
"""
import os
import pathlib
import re
import sys
top_srcdir = pathlib.Path(os.environ["top_srcdir"])
def symbols_from_map(path):
return re.findall(r"^\s+(xkb_.*);", path.read_text("utf-8"), re.MULTILINE)
def symbols_from_src(path):
return re.findall(r"XKB_EXPORT.*\n(xkb_.*)\(", path.read_text("utf-8"))
def diff(map_path, src_paths):
map_symbols = set(symbols_from_map(map_path))
src_symbols = set.union(set(), *(symbols_from_src(path) for path in src_paths))
return sorted(map_symbols - src_symbols), sorted(src_symbols - map_symbols)
exit = 0
# xkbcommon symbols
left, right = diff(
top_srcdir / "xkbcommon.map",
[
*(top_srcdir / "src").glob("*.c"),
*(top_srcdir / "src" / "xkbcomp").glob("*.c"),
*(top_srcdir / "src" / "compose").glob("*.c"),
],
)
if left:
print("xkbcommon map has extra symbols:", " ".join(left))
exit = 1
if right:
print("xkbcommon src has extra symbols:", " ".join(right))
exit = 1
# xkbcommon-x11 symbols
left, right = diff(
top_srcdir / "xkbcommon-x11.map",
[
*(top_srcdir / "src" / "x11").glob("*.c"),
],
)
if left:
print("xkbcommon-x11 map has extra symbols:", " ".join(left))
exit = 1
if right:
print("xkbcommon-x11 src has extra symbols:", " ".join(right))
exit = 1
sys.exit(exit)