Fix PSL source path for Flatpak build

This commit is contained in:
2026-04-14 09:29:45 -06:00
parent 8f7c40caf1
commit 9b89c7782c
2 changed files with 35 additions and 14 deletions

View File

@@ -3,7 +3,10 @@ import sys
import urllib.request import urllib.request
from pathlib import Path from pathlib import Path
URL = "https://raw.githubusercontent.com/publicsuffix/list/main/public_suffix_list.dat" URLS = (
"https://raw.githubusercontent.com/publicsuffix/list/main/public_suffix_list.dat",
"https://publicsuffix.org/list/public_suffix_list.dat",
)
def parse_rules(text: str): def parse_rules(text: str):
@@ -32,19 +35,36 @@ def emit_header(path: str, rules):
def main(): def main():
if len(sys.argv) != 2: if len(sys.argv) not in (2, 3):
raise SystemExit("usage: gen-public-suffix.py <output>") raise SystemExit("usage: gen-public-suffix.py <output> [source]")
output = Path(sys.argv[1]) output = Path(sys.argv[1])
fallback = Path(__file__).with_name("public_suffix_data.h") sources = []
try: if len(sys.argv) == 3:
with urllib.request.urlopen(URL, timeout=30) as resp: sources.append(Path(sys.argv[2]))
data = resp.read().decode("utf-8") sources.extend(
rules = parse_rules(data) [
emit_header(str(output), rules) Path(__file__).with_name("public_suffix_list.dat"),
except Exception: Path("/usr/share/publicsuffix/public_suffix_list.dat"),
if not fallback.exists(): Path("/app/share/publicsuffix/public_suffix_list.dat"),
raise ]
output.write_bytes(fallback.read_bytes()) )
data = None
for url in URLS:
try:
with urllib.request.urlopen(url, timeout=30) as resp:
data = resp.read().decode("utf-8")
break
except Exception:
pass
if data is None:
for source in sources:
if source.exists():
data = source.read_text(encoding="utf-8")
break
if data is None:
raise SystemExit("unable to load public suffix list")
rules = parse_rules(data)
emit_header(str(output), rules)
if __name__ == "__main__": if __name__ == "__main__":

View File

@@ -100,8 +100,9 @@ make_te = find_program('make-te.py')
python3 = find_program('python3', required: true) python3 = find_program('python3', required: true)
public_suffix_data = custom_target('public_suffix_data_h', public_suffix_data = custom_target('public_suffix_data_h',
input: 'public_suffix_list.dat',
output: 'public_suffix_data.h', output: 'public_suffix_data.h',
command: [python3, files('gen-public-suffix.py'), '@OUTPUT@'] command: [python3, files('gen-public-suffix.py'), '@OUTPUT@', '@INPUT@']
) )
textevents = custom_target('textevents', textevents = custom_target('textevents',