build: Check NEWS for version

I don't think this ever happened to me, but it can't hurt enforcing
that every release has a corresponding NEWS entry.

(The script has been copied from Polari, thus the metainfo support)

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1980>
This commit is contained in:
Florian Müllner 2021-08-31 11:46:57 +02:00
parent 70f2eb7bfa
commit 36d908f220
2 changed files with 33 additions and 0 deletions

View File

@ -538,6 +538,7 @@ subdir('po')
subdir('doc/man') subdir('doc/man')
meson.add_install_script('meson/meson-postinstall.sh') meson.add_install_script('meson/meson-postinstall.sh')
meson.add_dist_script('meson/check-version.py', meson.project_version(), 'NEWS')
summary('prefix', prefix) summary('prefix', prefix)
summary('libexecdir', libexecdir) summary('libexecdir', libexecdir)

32
meson/check-version.py Executable file
View File

@ -0,0 +1,32 @@
#!/usr/bin/env python3
import os, sys
from pathlib import Path
import argparse, subprocess
def check_version(version, file, type='news'):
if type == 'news':
line = file.open().readline()
ok = line.startswith(version)
print("{}: {}".format(file, "OK" if ok else "FAILED"))
if not ok:
raise Exception("{} does not start with {}".format(file, version))
elif type == 'metainfo':
subprocess.run(['appstream-util', 'validate-version', file, version],
check=True)
else:
raise Exception('Not implemented')
parser = argparse.ArgumentParser(description='Check release version information.')
parser.add_argument('--type', choices=['metainfo','news'], default='news')
parser.add_argument('version', help='the version to check for')
parser.add_argument('files', nargs='+', help='files to check')
args = parser.parse_args()
distroot = os.environ.get('MESON_DIST_ROOT', './')
try:
for file in args.files:
check_version(args.version, Path(distroot, file), args.type)
except:
sys.exit(1)