Using a chroot

If you want to run web tests and you‘re not running Lucid, you’ll get errors due to version differences in libfreetype. To work around this, you can use a chroot.

Basic Instructions

  • Run build/install-chroot.sh. On the prompts, choose to install a 64-bit Lucid chroot and activate all your secondary mount points.
  • sudo edit /etc/schroot/mount-lucid64bit and uncomment /run and /run/shm. Verify that your mount points are correct and uncommented: for example, if you have a second hard drive at /src, you should have an entry like /src /src none rw,bind 0 0.
  • Enter your chroot as root with sudo schroot -c lucid64. Run build /install-build-deps.sh, then exit the rooted chroot.
  • Delete your out/ directory if you had a previous non-chrooted build.
  • To enter your chroot as normal user, run schroot -c lucid64.
  • Now compile and run DumpRenderTree within chroot.

Tips and Tricks

NFS home directories

The chroot install will be installed by default in /home/$USER/chroot. If your home directory is inaccessible by root (typically because it is mounted on NFS), then move this directory onto your local disk and change the corresponding entry in /etc/schroot/mount-lucid64bit.

Reclient builds

If you get mysterious compile errors (glibconfig.h or dbus header error), don't use reclient for builds inside the chroot.

Different color prompt

I use the following code in my .zshrc file to change the color of my prompt in the chroot.

# load colors
autoload colors zsh/terminfo
if [[ "$terminfo[colors]" -ge 8 ]]; then
  colors
fi
for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE; do
  eval PR_$color='%{$terminfo[bold]$fg[${(L)color}]%}'
  eval PR_LIGHT_$color='%{$fg[${(L)color}]%}'
done
PR_NO_COLOR="%{$terminfo[sgr0]%}"

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
  debian_chroot=$(cat /etc/debian_chroot)
fi

if [ "xlucid64" = "x$debian_chroot" ]; then
    PS1="%n@$PR_GREEN% lucid64$PR_NO_COLOR %~ %#"
else
    PS1="%n@$PR_RED%m$PR_NO_COLOR %~ %#"
fi

Running X apps

I also have DISPLAY=:0 in my $debian_chroot section so I can run test_shell or web tests without manually setting my display every time. Your display number may vary (echo $DISPLAY outside the chroot to see what your display number is).

You can also use Xvfb if you only want to run tests headless.

Having web test results open in a browser

After running web tests, you should get a new browser tab or window that opens results.html. If you get an error "Failed to open file:///path/to/results.html, check the following conditions.

  1. Make sure DISPLAY is set. See the Running X apps section above.
  2. Install xdg-utils, which includes xdg-open, a utility for finding the right application to open a file or URL with.
  3. Install Chrome.