Advance preparation for release

  • Update ./CHANGELOG.adoc.

    • Write entries for missing notable commits.

    • Write summary of changes from previous release.

    • Update with estimated release date.

  • Update ./README.adoc.

    • Check features and description.

  • Update man/{mlton,mlprof}.1.

    • Check compile-time and run-time options in man/mlton.1.

    • Check options in man/mlprof.1.

    • Update with estimated release date.

  • Update doc/guide.

    • Synchronize Features page with ./README.adoc.

    • Update Credits page with acknowledgements.

    • Create ReleaseYYYYMM?? page (i.e., forthcoming release) based on ReleaseXXXXLLCC (i.e., previous release).

      • Update summary from ./CHANGELOG.adoc.

      • Update links to estimated release date.

    • Create BugsYYYYMM?? page based on BugsXXXXLLCC.

      • Update links to estimated release date.

    • Spell check pages.

  • Ensure that all updates are pushed to master branch of mlton.

Prepare sources for tagging

  • Update ./CHANGELOG.adoc.

    • Update with proper release date.

  • Update man/{mlton,mlprof}.1.

    • Update with proper release date.

  • Update doc/guide.

    • Rename ReleaseYYYYMM?? to ReleaseYYYYMMDD with proper release date.

      • Update links with proper release date.

    • Rename BugsYYYYMM?? to BugsYYYYMMDD with proper release date.

      • Update links with proper release date.

    • Update ReleaseXXXXLLCC.

      • Change intro to "This is an archived public release of MLton, version XXXXLLCC."

    • Update Home with note of new release.

      • Change What's new? text to Please try out our new release, <:ReleaseYYYYMMDD:MLton YYYYMMDD>.

      • Update Download link with proper release date.

    • Update Releases with new release.

  • Ensure that all updates are pushed to master branch of mlton.

Tag sources

  • Shell commands:

    git clone http://github.com/MLton/mlton mlton.git
    cd mlton.git
    git checkout master
    git tag -a -m "Tagging ${YYYYMMDD} release" on-${YYYYMMDD}-release master
    git push origin on-${YYYYMMDD}-release

Packaging

SourceForge FRS

  • Create YYYYMMDD directory:

    sftp user@frs.sourceforge.net:/home/frs/project/mlton/mlton
    sftp> mkdir YYYYMMDD
    sftp> quit

Source release

  • Create mlton-YYYYMMDD.src.tgz:

    git clone http://github.com/MLton/mlton mlton
    cd mlton
    git checkout on-${YYYYMMDD}-release
    make MLTON_VERSION=${YYYYMMDD} source-release
    cd ..

    or

    wget https://github.com/MLton/mlton/archive/on-${YYYYMMDD}-release.tar.gz
    tar xzvf on-${YYYYMMDD}-release.tar.gz
    cd mlton-on-${YYYYMMDD}-release
    make MLTON_VERSION=${YYYYMMDD} source-release
    cd ..
  • Upload mlton-YYYYMMDD.src.tgz:

    scp mlton-${YYYYMMDD}.src.tgz user@frs.sourceforge.net:/home/frs/project/mlton/mlton/${YYYYMMDD}/
  • Update ReleaseYYYYMMDD with mlton-YYYYMMDD.src.tgz link.

Binary releases

  • Build and create mlton-YYYYMMDD-1.ARCH-OS.tgz:

    wget http://sourceforge.net/projects/mlton/files/mlton/${YYYYMMDD}/mlton-${YYYYMMDD}.src.tgz
    tar xzvf mlton-${YYYYMMDD}.src.tgz
    cd mlton-${YYYYMMDD}
    make binary-release
  • Upload mlton-YYYYMMDD-1.ARCH-OS.tgz:

    scp mlton-${YYYYMMDD}-1.ARCH-OS.tgz user@frs.sourceforge.net:/home/frs/project/mlton/mlton/${YYYYMMDD}/
  • Update ReleaseYYYYMMDD with mlton-YYYYMMDD-1.ARCH-OS.tgz link.

Website

  • guide/YYYYMMDD gets a copy of doc/guide/localhost.

  • Shell commands:

    wget http://sourceforge.net/projects/mlton/files/mlton/${YYYYMMDD}/mlton-${YYYYMMDD}.src.tgz
    tar xzvf mlton-${YYYYMMDD}.src.tgz
    cd mlton-${YYYYMMDD}
    cd doc/guide
    cp -prf localhost ${YYYYMMDD}
    tar czvf guide-${YYYYMMDD}.tgz ${YYYYMMDD}
    rsync -avzP --delete -e ssh ${YYYYMMDD} user@web.sourceforge.net:/home/project-web/mlton/htdocs/guide/
    rsync -avzP --delete -e ssh guide-${YYYYMMDD}.tgz user@web.sourceforge.net:/home/project-web/mlton/htdocs/guide/

Announce release

Misc.