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 65 66 67 68 69 70 71 72 73
|
#!/usr/bin/env python3
#
# Copyright (C) 2023-2026 Tim-Philipp Müller <tim centricular net>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
# Boston, MA 02110-1301, USA.
import os
import subprocess
import shutil
import tempfile
import sys
if __name__ == "__main__":
dist_root = os.environ['MESON_DIST_ROOT']
build_root = os.environ['MESON_BUILD_ROOT']
source_root = os.environ['MESON_SOURCE_ROOT']
project_version = sys.argv[1]
pwd = os.environ['PWD']
tmpdir = tempfile.gettempdir()
ver_array = project_version.split('.')
major_minor = '{}.{}'.format(ver_array[0], ver_array[1])
module = os.path.basename(os.path.normpath(source_root))
print('Copying README.md into dist staging directory ..')
readme_src = os.path.join(source_root, '..', '..', 'README.md')
shutil.copy2(readme_src, dist_root)
# Release notes (instead of NEWS) - could also write it out as NEWS.md
print('Copying release notes into dist staging directory ..')
relnotes_src = os.path.join(source_root, '..', '..', 'release-notes', major_minor, f'release-notes-{major_minor}.md')
with open(relnotes_src, 'r') as f:
lines = f.readlines()
if not f'### {project_version}\n' in lines:
sys.exit(f'Update {relnotes_src} first, must contain a section for {project_version}')
if not project_version.endswith('.0'):
found = False
for line in lines:
if line.startswith('The latest') and project_version in line:
found = True
if not found:
sys.exit(f'Update {relnotes_src} first, header should say latest version is {project_version}.')
shutil.copy2(relnotes_src, dist_root)
# RELEASE
print('Copying RELEASE into dist staging directory ..')
rel_src = os.path.join(source_root, '..', '..', 'release-notes', major_minor, f'RELEASE-{major_minor}.template')
with open(rel_src, 'r') as f:
lines = f.readlines()
assert (lines[0].startswith('This is GStreamer'))
if module == 'gstreamer':
lines[0] = f'This is GStreamer core {project_version}\n'
else:
lines[0] = f'This is GStreamer {module} {project_version}\n'
with open(os.path.join(dist_root, 'RELEASE'), 'w') as f:
f.writelines(lines)
|