[meson] Use pathlib in gen-harfbuzzcc.py

This commit is contained in:
Khaled Hosny 2022-07-28 12:32:49 +02:00 committed by خالد حسني (Khaled Hosny)
parent 5df2347cf3
commit eaf7e5686c
1 changed files with 11 additions and 10 deletions

View File

@ -2,23 +2,24 @@
"This tool is intended to be used from meson" "This tool is intended to be used from meson"
import os, sys, shutil import shutil
import sys
from pathlib import Path
if len (sys.argv) < 3: if len (sys.argv) < 3:
sys.exit (__doc__) sys.exit (__doc__)
OUTPUT = sys.argv[1] OUTPUT = Path (sys.argv[1])
CURRENT_SOURCE_DIR = sys.argv[2] CURRENT_SOURCE_DIR = Path (sys.argv[2])
# make sure input files are unique # make sure input files are unique
sources = sorted(set(sys.argv[3:])) sources = [Path(x) for x in sorted(set(sys.argv[3:]))]
with open (OUTPUT, "wb") as f: with open (OUTPUT, "wb") as f:
f.write ("".join ('#include "{}"\n'.format (os.path.relpath (os.path.abspath (x), CURRENT_SOURCE_DIR)) for x in sources if x.endswith (".cc")).encode ()) f.write ("".join (f'#include "{p.resolve ().relative_to (CURRENT_SOURCE_DIR)}"\n' for p in sources if p.suffix == ".cc").encode ())
# copy it also to the source tree, but only if it has changed # copy it also to the source tree, but only if it has changed
baseline_filename = os.path.join (CURRENT_SOURCE_DIR, os.path.basename (OUTPUT)) baseline = CURRENT_SOURCE_DIR / OUTPUT.name
with open(baseline_filename, "rb") as baseline: if baseline.read_bytes() != OUTPUT.read_bytes():
with open(OUTPUT, "rb") as generated: shutil.copyfile (OUTPUT, baseline)
if baseline.read() != generated.read():
shutil.copyfile (OUTPUT, baseline_filename)