-
Notifications
You must be signed in to change notification settings - Fork 12
Closed
Description
Create release branch
- Pull latest
masterbranch, and runmake cleansrc - Check differences, manually clean up anything broken (useful to check
git diff -bas well asgit diffto see changes that affect things other than whitespace) - Do a full build with
DEBUG=1 TOOLS=1to ensure changes compile/validate - Check software lists against DTD:
for x in hash/*.xml ; do xmllint --noout --valid "$x" ; done - Check software hash files’ XML structure:
for x in hash/*.hsi ; do xmllint --noout "$x" ; done - Commit changes and push to
masterbranch - Create release branch and push to GitHub
- Push branch point to
masterbranch on GitLab and SourceForge - Create new version on MAME Testers with anticipated release date (last Wednesday of following month, 00:00:00Z), marked unreleased
Run build matrix
In addition to the basic coverage provided by GitHub Actions, MAME needs to be built and tested across a representative spectrum of configurations.
For the following configurations, ensure a build compiles, links and validates, -listxml output validates, and basic functionality works:
- x86-64, MinGW, GCC, debug, SDL OSD, with Qt debugger, without tools
- x86-64, MinGW, GCC, debug, SDL OSD, with Qt debugger, with tools,
tinysubtarget - x86-64, MinGW, GCC, debug, SDL OSD, with Qt debugger, with tools,
virtualsubtarget - x86-64, MinGW, GCC, debug, Win32 OSD, without tools
- x86-64, MinGW, GCC, debug, Win32 OSD, with tools,
tinysubtarget - x86-64, MinGW, GCC, debug, Win32 OSD, with tools,
virtualsubtarget - x86-64, MinGW, GCC, non-debug, SDL OSD, with Qt debugger, without tools
- x86-64, MinGW, GCC, non-debug, SDL OSD, with Qt debugger, with tools,
tinysubtarget - x86-64, MinGW, GCC, non-debug, SDL OSD, with Qt debugger, with tools,
virtualsubtarget - x86-64, MinGW, GCC, non-debug, Win32 OSD, without tools
- x86-64, MinGW, GCC, non-debug, Win32 OSD, with tools,
tinysubtarget - x86-64, MinGW, GCC, non-debug, Win32 OSD, with tools,
virtualsubtarget
For the following configurations, ensure a build compiles, links and validates, and basic functionality works:
- i686, MinGW, GCC, debug, SDL OSD, with Qt debugger, without tools
- i686, MinGW, GCC, debug, SDL OSD, with Qt debugger, with tools,
tinysubtarget - i686, MinGW, GCC, debug, SDL OSD, with Qt debugger, with tools,
virtualsubtarget - i686, MinGW, GCC, debug, Win32 OSD, without tools
- i686, MinGW, GCC, debug, Win32 OSD, with tools,
tinysubtarget - i686, MinGW, GCC, debug, Win32 OSD, with tools,
virtualsubtarget - i686, MinGW, GCC, non-debug, SDL OSD, with Qt debugger, without tools
- i686, MinGW, GCC, non-debug, SDL OSD, with Qt debugger, with tools,
tinysubtarget - i686, MinGW, GCC, non-debug, SDL OSD, with Qt debugger, with tools,
virtualsubtarget - i686, MinGW, GCC, non-debug, Win32 OSD, without tools
- i686, MinGW, GCC, non-debug, Win32 OSD, with tools,
tinysubtarget - i686, MinGW, GCC, non-debug, Win32 OSD, with tools,
virtualsubtarget
For the following configurations, ensure a build compiles, links and validates, -listxml output validates, minimaws ORM check passes, and basic functionality works:
- x86-64, Linux, clang, libc++, debug, without tools
- x86-64, Linux, clang, libc++, debug, with tools,
tinysubtarget - x86-64, Linux, clang, libc++, debug, with tools,
virtualsubtarget - x86-64, Linux, GCC, libstdc++, debug, with tools
- x86-64, Linux, GCC, libstdc++, debug, without tools,
tinysubtarget - x86-64, Linux, GCC, libstdc++, debug, without tools,
virtualsubtarget - x86-64, Linux, clang, libc++, non-debug, without tools
- x86-64, Linux, clang, libc++, non-debug, with tools,
tinysubtarget - x86-64, Linux, clang, libc++, non-debug, with tools,
virtualsubtarget - x86-64, Linux, GCC, libstdc++, non-debug, with tools
- x86-64, Linux, GCC, libstdc++, non-debug, without tools,
tinysubtarget - x86-64, Linux, GCC, libstdc++, non-debug, without tools,
virtualsubtarget
For the following configurations, ensure a build compiles, links and validates:
- i686, Linux, GCC, libstdc++, debug, with tools
- i686, Linux, GCC, libstdc++, non-debug, with tools
Generate preliminary release notes
- Pull latest release branch from
mamerepository and latestmasterbranch frombuildrepository - In
buildrepository, run script to scrape commits and pull requests, e.g.python3 makewn.py -C ../mame -u <user> -o whatsnew/whatsnew_0124.txt - Get
-listxmloutput from previous release from a download mirror - Generate
-listxmloutput with a preliminary build from the release branch - In
buildrepository, run script to identify added/promoted/renamed/removed machines, e.g.python3 newdrivers.py mame0123.xml new.xml | tee -a whatsnew/whatsnew_0124.txt - Copy resolved bugs from MAME Testers change log page to relevant section in release notes
- Before any editing, commit generated release notes for reference
Prepare release notes
- Reconcile added/promoted systems and software with credits in commit messages and pull request descriptions, moving entries to the relevant sections at the top, and sorting correctly
- Check commit log for
languagefolder and list updated translation in the relevant section at the top - Sort resolved bugs and edit descriptions
- Summarise merged pull requests, making verb tense consistent
- Standardise contributor names
- Strategically use non-breaking spaces to hopefully avoid line breaks at inopportune points
- Add anticipated release date to top line
- Commit changes, push to
masterbranch, and let people know it’s ready for proof-reading
Build release
- Pull latest release branch
- In
buildrepository, scrape latest commits, do a final check of release notes, commit changes, and push tomasterbranch - Ensure version is updated in
android-project/app/src/main/AndroidManifest.xml(two lines),docs/source/conf.py(two lines), andmakefile(two lines) - Ensure there are no uncommitted changes on release branch
- Create signed, annotated tag for release, e.g.
git tag -s -m"MAME 0.124" mame0124 - Clone
mamerepository into a clean directory and check out release tag, e.g.git clone -b mame0124 mame mame-release - In new clone, double-check that
git describeandgit log -1show what’s expected - Use commands from
build-release.batinbuildrepository to build 64-bit release binaries, e.g.(MINGW64=/mingw64 MINGW32= make TARGET=mame TOOLS=1 SEPARATE_BIN=1 PTR64=1 OPTIMIZE=3 SYMBOLS=1 SYMLEVEL=1 REGENIE=1 -j9 ARCHOPTS="-fomit-frame-pointer -fuse-ld=lld" OVERRIDE_AR=llvm-ar && make -f dist.mak PTR64=1 -j5) |& tee ../build64.log - Check build log for anything suspicious
- Double-check that
buildrepository is up-to-date - Use
release.shfrombuildrepository to package release, e.g.bash ../build/release.sh 0124
Prepare media
- Add previous release to
oldrel.php - Copy release notes to
releasesfolder - Create release announcement post in
posts - Add content from release notes above the “Source changes” heading to release announcement below the
<!--more-->tag, adding HTML markup for formatting - Ensure MAME Testers bug numbers, GitHub pull request and issue numbers, and anything else relevant are linked correctly
- Use
<tt>formatting for literal code, command-line options, etc. - Write executive summary above the
<!--more-->tag – aim for at least three paragraphs of content, call out a few interesting or notable changes - Put release announcement post in a simple HTML wrapper, preview it, and check for HTML syntax/nesting errors
- Commit changes to web site pages
- Convert executive summary to UBB flavours for forum.mamedev.org, forums.bannister.org, and mameworld.info, and markdown flavours for reddit and GitHub, and check previews
Upload assets for release
- Push release tag to GitHub, GitLab and SourceForge
- Push tagged release revision to
masterbranch on GitLab and SourceForge - Pull latest
masterbranch from GitHub, merge release tag, and push tomasterbranch on GitHub - Delete release branch on GitHub
- Create draft release on GitHub and upload assets
- From another browser instance, download assets from draft release
- Use
7za tto test integrity of downloaded archives - Verify SHA1 and SHA256 digests, e.g.
sha1sum -c < SHA1SUMSandsha256sum -c < SHA256SUMS - Set timestamp on assets to midnight UTC for release date, e.g.
TZ=utc touch -t 201909040000 0.213/* 0.213 - Upload assets, to SourceForge FRS, e.g.
rsync -avzhc --progress -e ssh 0.124 frs.sf.net:/home/frs/project/mame/mame/
Publish release
- Mark current version as released on MAME Testers, and update with actual release date
- Publish release on GitHub
- Push web site changes to
masterbranch and wait for static pages to be regenerated - Check HTML and RSS pages, ensure a few links work
- Create forum threads on forum.mamedev.org, forums.bannister.org, and mameworld.info
- Create reddit posts on r/MAME, r/emulation and r/cade
- Create a new, pinned GitHub Discussion in the Announcements category, and unpin the previous release announcement discussion
- Update version number in topic on #mame on Libera IRC
- Announce release in announcements channel on Discord
- Update system driver source file list on MAME Testers (use
scripts/xslt/list-system-sources.xsltto generate the list)
Metadata
Metadata
Assignees
Labels
No labels