Note obtaining and building Timelapse

Brian Burg edited this page Mar 29, 2014 · 3 revisions

The mechanics of building, running, and debugging Timelapse are the same as for WebKit, and described on the WebKit project page. Below are some differences from the standard instructions.


Development of core replay infrastructure in WebKit trunk takes place on recent versions of OS X and Safari. Support for other operating systems and browsers is planned, but has not been actively explored. The stated versions below are what we know will work; other versions may work, but are untested.

  • OS X 10.8.x or 10.9.x
  • 4 GB of RAM (necessary to link Debug builds without paging)
  • XCode 5.x or later
  • git 1.7+

Getting the repository

Set up a repository location (here, at ~/repos/timelapse/) and configure remotes:

mkdir -p ~/repos/timelapse/ && cd ~/repos/timelapse/
git init
git remote add upstream git://
git remote add github

Next, fetch the upstream branch containing vanilla WebKit, and the timelapse branch containing Timelapse:

git fetch upstream master:upstream
git fetch github timelapse:timelapse
git checkout timelapse

This will take a long time because the repository is over 5GB in size. We recommend using an ethernet port on a fast network, such as at a university. If you have problems cloning the entire repository, contact us for details about CSE-internal mirrors from which you can clone instead.


Debug builds are started like so:

Tools/Scripts/build-webkit --debug --web-replay

And release builds are started like so:

Tools/Scripts/build-webkit --release --web-replay

To build changes to the Web Inspector UI (but nothing else), run the following commands with the appropriate build setting (from the repository root).

make -C Source/WebInspectorUI [release | debug] && Tools/Scripts/build-webkit --web-replay [--release | --debug]

Cleaning the build

All build artifacts are stored in the WebKitBuild/ directory. You can use commands like Tools/Scripts/webkit-build --clean --[debug|release] to clean the build. You can also nuke the WebKitBuild/Debug or WebKitBuild/Release directories; however, sometimes you will also need to nuke WebKitBuild/PrecompiledHeaders so that the build is in a consistent state.

When upgrading across OS X or Xcode versions, you need to completely delete the WebKitBuild directory so that both precompiled headers and compiled code are in sync with (new) system libraries.

Running Timelapse

To start Timelapse using Safari, run one of the following commands (for debug or release build):

    Tools/Scripts/run-safari [--debug | --release]

If you haven't used Web Inspector with Safari before, you must enable the Develop menu item by going to Safari > Preferences, Select the Advanced tab, and check the "Show develop menu in menu bar" checkbox at the bottom.

Creating Binary Releases

(Note: these instructions are for documentation only. Do not distribute your own nightly binary builds unless you have the requisite permissions. In particular, see APPLE_IMAGES_LICENSE.rtf.)

Using the timelapse branch, run the bin/build-nightly command from the top of the repository, passing in the output directory:

bin/build-nightly ~/Downloads

Adding a Second Repository Checkout

To add a second repository (and prevent the necessity of a fill rebuild):

cd ~/repos
git clone ./timelapse ./webkit

Then add the actual remotes:

cd ~/repos/webkit
git remote add upstream git://
git fetch upstream
git checkout -b master upstream/master