- if this is an LTS release, edit the files under
repo-conf/
to add new LTS apt repositories - commit to master and push
- create a
HHVM-$x.$y
branch of this repository - edit
DEBIAN_REPOSITORIES
if changing from an LTS or to an LTS - commit and push the branch
- update
DEBIAN_REPOSITORIES
to remove the mainDISTRO
release from older versions - commit and push the branches
- create a
HHVM-$x.$y
branch of the hhvm-docker repository - update
DOCKER_TAGS
to includelatest
, and$x.$y-lts-latest
if appropriate - commit and push the branch
- update
DOCKER_TAGS
in any other supported branches to remove thelatest
tag - commit and push the branches
- everything needed for a
.z
release
- Remove "-dev" suffix from hphp/runtime/version.h, commit to branch as "Releasing $VERSION"
- tag it: git tag HHVM-$VERSION
- push the tag: git push staging HHVM-$VERSION
- re-add the "-dev" suffix, and bump HHVM_VERSION_PATCH. Commit to branch as "Targeting $NEXT_PATCH_VERSION"
- push the branch to staging
- run
bin/make-all-packages-on-aws $VERSION
from the hhvm-packaging repository - wait for the step function to build the source tarballs.
- start the mac builds
- wait for the step function and mac builds to complete
This is a good time convert the release notes from quip to markdown for publication. Pay attention to fixed-width text links
When the step function is finished, you have:
- published source tar balls
- published linux binaries
- published docker images
- public tags and branch
- publish the release announcement
- on every builder,
brew unlink hhvm
andbrew unlink hhvm-pmeview
to disable your existing installations - on every builder, make sure
Xcode-select -p
doesn't point at an FB bundle - usesudo Xcode-select -s /Applications/Xcode.app
if it does - Get the source:
If the source is public, get it from https://dl.hhvm.com/source/; if not,
aws s3 cp s3://hhvm-scratch/hhvm-$VERSION.tar.gz ~/
; get the .sig file too and verify it withgpg --verify hhvm-$VERSION.tar.gz.sig hhvm-$VERSION.tar.gz
- Compute the sha256:
openssl sha -sha256 hhvm-$VERSION.tar.gz
- In the homebrew-hhvm repository, update the url and sha256 for the new version in hhvm.rb, and incorporate any other changes from hhvm-preview.rb. If the source is not yet public, you can temporarily use a file:/// URL, but remember to change it back before pushing
- temporarily remove the
bottle
section - copy the source (if needed) and hhvm.rb to every builder
- on every builder, run
brew install --build-bottle ./hhvm.rb
- on every builder,
brew bottle '--root-url=https://dl.hhvm.com/homebrew-bottles' --force-core-tap ./hhvm.rb
; This will output some ruby code for the 'bottle' section - merge the one from each builder together (multiple 'sha256' lines, one per targeted MacOS release) into hhvm.rb. - upload the bottles:
aws s3 hhvm-$VERSION.$MACOS_VERSION.bottle.tar.gz s3://hhvm-downloads/homebrew-bottles/
- update the source URL in hhvm.rb back to the public download URL if you were using file://
- commit and push once the source is definitely uploaded and public
If you get bogus stuff like /bin/sh: /bin/sh: cannot execute binary file
, make sure you don't have any cronjobs killing activedirectoryd or parentcontrolsd