Update release support book page in release process

This commit is contained in:
Jack Grigg 2023-03-09 02:35:54 +00:00
parent 23d73df62b
commit 681e1a4d64
1 changed files with 54 additions and 0 deletions

View File

@ -9,6 +9,7 @@ import subprocess
import traceback
import unittest
import random
from datetime import date, datetime, timedelta, timezone
from io import StringIO
from functools import wraps
@ -108,6 +109,9 @@ def main_logged(revision, release, releaseprev, releasefrom, releaseheight, hotf
),
)
update_book(release, releaseheight)
commit('Updated book for {}.'.format(release.novtext))
def phase(message):
def deco(f):
@ -333,6 +337,11 @@ def update_debian_changelog(release):
)
@phase('Updating book.')
def update_book(release, releaseheight):
patch_book_release_support(release, releaseheight)
# Helper code:
def commit(message):
logging.info('Committing: %r', message)
@ -388,6 +397,51 @@ def patch_gitian_linux_yml(release, releaseprev, path):
outf.write(inf.read())
def patch_book_release_support(release, releaseheight):
with PathPatcher('doc/book/src/user/release-support.md') as (inf, outf):
# Find the start marker.
cur_line = inf.readline()
while not 'RELEASE_SCRIPT_START_MARKER' in cur_line:
outf.write(cur_line)
cur_line = inf.readline()
outf.write(cur_line)
# The next two lines are the table heading.
for _ in range(2):
outf.write(inf.readline())
# The remaining lines before the end marker are table rows.
table_rows = []
cur_line = inf.readline()
while not 'RELEASE_SCRIPT_END_MARKER' in cur_line:
[row_ver, row_released, row_halt, row_eos] = cur_line.strip('| \n').split(' | ')
row_released = date.fromisoformat(row_released)
row_eos = date.fromisoformat(row_eos)
table_rows.append((row_ver, row_released, int(row_halt), row_eos))
cur_line = inf.readline()
# Prune rows for releases that have reached EoS.
today = datetime.now(timezone.utc).date()
table_rows = [row for row in table_rows if row[3] >= today]
# Add a row for this release.
with open('src/deprecation.h', 'r', encoding='utf8') as f:
prefix = 'RELEASE_TO_DEPRECATION_WEEKS = '
for line in f:
if prefix in line:
weeks_to_eos = int(line.split(prefix)[1].split(';')[0])
eos = today + timedelta(weeks=weeks_to_eos)
table_rows.append((release.novtext, today, releaseheight, eos))
# Write out the updated table rows.
for row in table_rows:
outf.write('| %s | %s | %s | %s |\n' % row)
# Write out the end marker and the rest of the page.
outf.write(cur_line)
outf.write(inf.read())
def _patch_build_defs(release, path, pattern):
rgx = re.compile(pattern)
with PathPatcher(path) as (inf, outf):