build: one list of checks, run by the release build and by CI alike
tools/check.sh is what build-release.sh ran before building — every script's syntax, the manual, every tests/test-*.sh — moved, not copied, so a new test is run by both with nothing else to edit. It now runs every test even after one fails, keeps each one's output and a summary table for a CI run, and with --base checks the change's hygiene too. The manual's revision date honours SOURCE_DATE_EPOCH, so a release built from a commit a day later ships the manual that commit holds. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
4413114d2a
commit
5416112db5
+9
-2
@@ -37,9 +37,10 @@ import argparse
|
||||
import base64
|
||||
import html
|
||||
import mimetypes
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
from datetime import date
|
||||
from datetime import date, datetime
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parent.parent
|
||||
@@ -704,7 +705,13 @@ def main():
|
||||
if problems:
|
||||
return 1
|
||||
|
||||
revision = f"Revision {date.today():%d %B %Y}"
|
||||
# The day the source was committed, when the build says so, rather than
|
||||
# the day it was built: a release built from a commit a day later must
|
||||
# still ship the manual that commit holds, or the build changes the
|
||||
# tree it was built from. SOURCE_DATE_EPOCH is the usual name for it.
|
||||
epoch = os.environ.get("SOURCE_DATE_EPOCH")
|
||||
day = datetime.fromtimestamp(int(epoch)).date() if epoch else date.today()
|
||||
revision = f"Revision {day:%d %B %Y}"
|
||||
|
||||
if arguments.check:
|
||||
for name in ("classroom-manual.html", "classroom-manual.pdf"):
|
||||
|
||||
Reference in New Issue
Block a user