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 traceback
import unittest import unittest
import random import random
from datetime import date, datetime, timedelta, timezone
from io import StringIO from io import StringIO
from functools import wraps 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 phase(message):
def deco(f): 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: # Helper code:
def commit(message): def commit(message):
logging.info('Committing: %r', message) logging.info('Committing: %r', message)
@ -388,6 +397,51 @@ def patch_gitian_linux_yml(release, releaseprev, path):
outf.write(inf.read()) 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): def _patch_build_defs(release, path, pattern):
rgx = re.compile(pattern) rgx = re.compile(pattern)
with PathPatcher(path) as (inf, outf): with PathPatcher(path) as (inf, outf):