Path: blob/main/dns/dnsmasq-devel/files/update.py
18157 views
#!/usr/bin/env python31"""update.py for dnsmasq-devel - (C) 2025 Matthias Andree, placed under MIT license2To use, edit Makefile with the new version,3then run files/update.py, which will download, check sigs, if GnuPG checks out, update makesum,4upload tarball and sig to my public_distfiles/ because upstream has low bandwidth, and test build.56If things work out, commit manually and push."""78import os9import shutil10import subprocess11import sys1213def trace(func):14def wrapper(*args, **kwargs):15print(f"\n> {func.__name__}({args}, {kwargs})", file=sys.stderr)16retval = func(*args, **kwargs)17print(f"< {func.__name__} -> {retval!r}", file=sys.stderr)18return retval19return wrapper2021traced_run = trace(subprocess.run)2223cleanenv={'LC_ALL': 'C.UTF-8',24'PATH': os.environ["PATH"]}25defargs={"check": "True", "env": cleanenv, "encoding": 'UTF-8'}2627try:28distdir, master_site, files_dir, dist_dir = map(str.strip, traced_run(['make', '-V', 'DISTDIR',29'-V', 'MASTER_SITES:N*FreeBSD*',30'-V', 'FILESDIR',31'-V', 'DISTDIR'],32capture_output=True, **defargs).stdout.splitlines())33filename_tarball = traced_run('make -V DISTFILES'.split(), capture_output=True, **defargs).stdout.splitlines()[0].strip()34filename_signature = filename_tarball + '.asc'35uri_tarball = master_site + filename_tarball36uri_signature = master_site + filename_signature37traced_run(['fetch', uri_tarball, uri_signature], **defargs)38traced_run(['gpg', '--no-options', '--with-colons', '--status-fd', '1',39'--no-default-keyring', '--keyring', files_dir + '/simon-kelley-keyring.asc',40'--verify', filename_signature, filename_tarball], **defargs)41traced_run(['rsync', '-avHPW', '--chmod=0644', filename_tarball, filename_signature, 'freefall.freebsd.org:public_distfiles/'], **defargs)42shutil.move(filename_tarball, dist_dir + '/' + filename_tarball)43traced_run(['make', 'makesum', 'clean'], **defargs)44os.remove(filename_signature)45traced_run(['make', 'check-plist', 'package'], **defargs)46print("\nSUCCESS\n")47except Exception as cpe:48print("\nERROR\n")49print(repr(cpe))50print("\nERROR\n")51sys.exit(1)525354