Branch
Hash :
77c24e8a
Author :
Date :
2025-05-06T13:17:13
[check-*.py] Remove autotoolism Instead of passing source dir and build dir to as envvars, pass them directly as script arguments. The scripts also were supposed to be able to run outsize of the build scripts, but this was broken since the fallback when the envvars were not set was wrong. The HBSOURCES and HBHEADERS are still passed as envvars since they are long lists and might hit command line length limitation on some systems.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
#!/usr/bin/env python3
import os
import re
import sys
srcdir = sys.argv[1]
base_srcdir = sys.argv[2]
builddir = sys.argv[3]
os.chdir(srcdir)
def removeprefix(s):
abs_path = os.path.join(base_srcdir, s)
return os.path.relpath(abs_path, srcdir)
HBHEADERS = [os.path.basename(x) for x in os.getenv("HBHEADERS", "").split()] or [
x for x in os.listdir(".") if x.startswith("hb") and x.endswith(".h")
]
HBSOURCES = [removeprefix(x) for x in os.getenv("HBSOURCES", "").split()] or [
x for x in os.listdir(".") if x.startswith("hb") and x.endswith((".cc", ".hh"))
]
stat = 0
print(
'Checking that public header files #include "hb-common.h" or "hb.h" first (or none)'
)
for x in HBHEADERS:
if x == "hb.h" or x == "hb-common.h":
continue
print(f"Checking {x}")
with open(x, "r", encoding="utf-8") as f:
content = f.read()
first = re.findall(r"#.*include.*", content)[0]
if first not in ['#include "hb.h"', '#include "hb-common.h"']:
print("failure on %s" % x)
stat = 1
print("Checking that source files #include a private header first (or none)")
for x in HBSOURCES:
print(f"Checking {x}")
with open(x, "r", encoding="utf-8") as f:
content = f.read()
includes = re.findall(r"#.*include.*", content)
if includes:
if not len(re.findall(r'".*\.hh"', includes[0])):
print("failure on %s" % x)
stat = 1
print("Checking that there is no #include <hb-*.h>")
for x in HBHEADERS + HBSOURCES:
print(f"Checking {x}")
with open(x, "r", encoding="utf-8") as f:
content = f.read()
if re.findall("#.*include.*<.*hb", content):
print("failure on %s" % x)
stat = 1
sys.exit(stat)