Skip to content

Commit d40c4de

Browse files
authored
Merge pull request #704 from elbeno/libclang-availability
Make libclang available in CI string generation
2 parents 101c1cb + a6db3fc commit d40c4de

File tree

3 files changed

+28
-8
lines changed

3 files changed

+28
-8
lines changed

.github/workflows/unit_tests.yml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ jobs:
3838
cxx_flags: "-stdlib=libstdc++"
3939
- version: 19
4040
compiler: clang
41-
install: wget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh && sudo ./llvm.sh 19
41+
install: wget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh && sudo ./llvm.sh 19 all
4242
toolchain_root: "/usr/lib/llvm-19"
4343
- version: 19
4444
compiler: clang
@@ -110,6 +110,13 @@ jobs:
110110
${{ matrix.install }}
111111
sudo apt install -y ninja-build
112112
113+
- name: Install libclang for string catalog
114+
run: |
115+
python3 -m venv ${{github.workspace}}/test_venv
116+
source ${{github.workspace}}/test_venv/bin/activate
117+
pip install libclang
118+
echo "${{github.workspace}}/test_venv/bin" >> $GITHUB_PATH
119+
113120
- name: Restore CPM cache
114121
env:
115122
cache-name: cpm-cache-0

test/log/catalog_extra.json

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
11
{
2-
"extra_key": "extra_value"
2+
"extra_key": "extra_value",
3+
"enums": {
4+
"ns::E": {
5+
"17": "extra_value"
6+
},
7+
"extra_enum": {
8+
"1": "value"
9+
}
10+
}
311
}

tools/gen_str_catalog.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ def get_id(stable_ids, key_fn, gen, obj):
124124

125125
unique_strings = {i[0][0]: i for i in strings}.values()
126126
return (
127-
{m: {"string": module_string(m), "id": get_module_id(m)} for m in set(modules)},
127+
{m: {"string": module_string(m), "id": get_module_id(m)} for m in sorted(set(modules))},
128128
{item[0]: {**item[1], "id": get_msg_id(item[1])} for item in unique_strings},
129129
)
130130

@@ -204,15 +204,20 @@ def write_json(messages, modules, enums, extra_inputs: list[str], filename: str,
204204
if not mod in d["modules"]:
205205
d["modules"].append(mod)
206206

207-
es = dict()
208-
for (k, (_, v)) in enums.items():
209-
es.update({k: {value: name for (name, value) in v.items()}})
210-
211-
str_catalog = dict(**d, enums=es)
207+
str_catalog = dict(**d, enums=dict())
212208
for extra in extra_inputs:
213209
with open(extra, "r") as f:
214210
str_catalog.update(json.load(f))
215211

212+
es = dict()
213+
for (k, (_, v)) in enums.items():
214+
es.update({k: {value: name for (name, value) in v.items()}})
215+
for (k, v) in es.items():
216+
if k in str_catalog["enums"]:
217+
str_catalog["enums"][k].update(v) # type: ignore
218+
else:
219+
str_catalog["enums"].update({k: v}) # type: ignore
220+
216221
with open(filename, "w") as f:
217222
json.dump(str_catalog, f, indent=4)
218223

0 commit comments

Comments
 (0)