Release libv8¶
We will start with building Ubuntu PPA first as it used in further CI process to validate that php-v8 is not broken.
To track v8 changes you can use these links:
- https://github.com/v8/v8/commits/master/include/v8.h - to keep track on v8 upstream changes
- https://omahaproxy.appspot.com/ - to keep track v8 channel(version) heads and what version is used in chrome
Building libv8¶
- Skip this step if you are updating v8 patch release version. To bump minor v8 version (e.g. from 6.3 to 6.4),
create new
libv8-X.YPPA for new version. As V8 could be build fori386but only fromamd64, which is not how PPA works, it’s also make sense to keep new PPAamd64-only. Also we don’t usei386so we don’t want to worry about it. - Update libv8 Makefile (
packaging/libv8/Makefile) with new libv8 version by setting proper values inGIT_VERSION=X.Y.ZandNAME=libv8-X.Yvariables. - Commit changes with
build libv8commit message and wait until libv8 PPA build done. - Don’t forget to update
libv8 >= <new X.Y.Z version>dependency forphp-v8PPA inpackaging/php-v8/debian/controland also changephp-v8PPA repository dependency to include newlibv8-X.YPPA (https://launchpad.net/~pinepain/+archive/ubuntu/php-v8/+edit-dependencies), it’s done by looking for ppa by full name, e.g.pinepain/libv8-X.Y.
After libv8 PPA build done¶
- Copy fresh
libv8-X.Ybuild packages fromlibv8-experimental(default target for all libv8 builds we trigger) to itlibv8-X.YPPA. Do not rebuild, just copy binaries. - Wait for packages copied and published!
- Build pinepain/libv8 docker image, tag it with the relevant v8 full version and push to Docker Hub.
- You may want to set proper
V8version inphp-v8by updating it in.travis.yml. - Make sure you have proper
php-v8version set inpackaging/DockerfileunderV8constant.
After docker images rebuilt/published¶
- Update min required
libv8version in php-v8config.m4,V8_MIN_API_VERSION_STR=X.Y.Z. - If there was new docker images published, update reference to them in php-v8
.travis.ymland in php-v8Dockerfile, and set properV8andTAGvalue there. - Update reference to
v8@X.Yin php-v8 CMakeLists.txt on minor version bump. - Also, update references to v8 version in php-v8/scripts/provision/provision.sh,
it’s normally could be done by replacing old version with new, e.g.
6.3=>6.4. - On every version bump update php-v8
README.mdfile with proper min v8 version required/tested. - If you use vagrant, re-provision your local development environment at this step to fetch/add new
libv8version. It’s generally a good idea to remove oldlibv8versions as well and remove their PPA from apt sources list at this point. - Make sure you tested php-v8 locally first before pushing to remote, upgrading v8 could be tricky as it may break BC even in patch releases (that’s why we started to have separate PPAs for minor version to somehow couple with this issue in minor releases).
- Note, that doing all this in a separate branch and merging that later into master is a nice and safe idea (note, you may skip PR overhead and do fast-forward merge locally to master).
- Commit message should state that it is v8 version bump, e.g.
Require libv8 >= X.Y.Z - Push changes and make sure build is green. If not, fix code/update tests and repeat.
Building packages for macOS Homebrew¶
- Skip this step if you are updating v8 patch release version. If it is a minor version bump, create new
v8@X.Yformula. - Skip this step if you are updating v8 patch release version. Create new
v8:X.YPackage on bintray for it. - Remove/reset formula
revisionif it is version bump and not rebuild. - Build
v8@X.Y(locally or with TravisCI if it provides relevant macOS version) and publish.