Backed out changeset d15798b73b9e (bug 1302763) for taskcluster build issues a=backout CLOSED TREE
authorWes Kocher <wkocher@mozilla.com>
Thu, 20 Oct 2016 15:59:47 -0700
changeset 345500 861fa708652cac38390be4eac89758ba0286a4a0
parent 345499 59cfa86c6db4b0384159c4322dc9ceeb152ae856
child 345501 2ec35e0e63b5b34de6f90dec0f0cbfaed76a7680
push id10298
push userraliiev@mozilla.com
push dateMon, 14 Nov 2016 12:33:03 +0000
treeherdermozilla-aurora@7e29173b1641 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersbackout
bugs1302763
milestone52.0a1
backs outd15798b73b9e3f8226e7d4ac8adfca3a77b069f0
Backed out changeset d15798b73b9e (bug 1302763) for taskcluster build issues a=backout CLOSED TREE
AUTHORS
taskcluster/ci/android-stuff/kind.yml
taskcluster/ci/source-check/mozlint.yml
taskcluster/docker/README.md
taskcluster/docker/REGISTRY
taskcluster/docker/android-gradle-build/Dockerfile
taskcluster/docker/android-gradle-build/README.md
taskcluster/docker/android-gradle-build/REGISTRY
taskcluster/docker/android-gradle-build/VERSION
taskcluster/docker/android-gradle-build/bin/after.sh
taskcluster/docker/android-gradle-build/bin/before.sh
taskcluster/docker/android-gradle-build/bin/build.sh
taskcluster/docker/android-gradle-build/bin/checkout-script.sh
taskcluster/docker/android-gradle-build/bin/checkout-sources.sh
taskcluster/docker/android-gradle-build/buildprops.json
taskcluster/docker/android-gradle-build/dot-config/pip/pip.conf
taskcluster/docker/android-gradle-build/oauth.txt
taskcluster/docker/b2g-build/Dockerfile
taskcluster/docker/b2g-build/VERSION
taskcluster/docker/b2g-build/bin/repository-url.py
taskcluster/docker/b2g-build/releng.repo
taskcluster/docker/base-build/Dockerfile
taskcluster/docker/base-build/VERSION
taskcluster/docker/base-build/system-setup.sh
taskcluster/docker/base-test/Dockerfile
taskcluster/docker/base-test/REGISTRY
taskcluster/docker/base-test/VERSION
taskcluster/docker/base-test/sources.list
taskcluster/docker/builder/Dockerfile
taskcluster/docker/builder/REGISTRY
taskcluster/docker/builder/VERSION
taskcluster/docker/builder/bin/checkout-gecko
taskcluster/docker/builder/git.env
taskcluster/docker/builder/mulet.env
taskcluster/docker/centos6-build-upd/Dockerfile
taskcluster/docker/centos6-build-upd/REGISTRY
taskcluster/docker/centos6-build-upd/VERSION
taskcluster/docker/centos6-build/Dockerfile
taskcluster/docker/centos6-build/REGISTRY
taskcluster/docker/centos6-build/VERSION
taskcluster/docker/centos6-build/hgrc
taskcluster/docker/centos6-build/system-setup.sh
taskcluster/docker/decision/Dockerfile
taskcluster/docker/decision/README.md
taskcluster/docker/decision/REGISTRY
taskcluster/docker/decision/VERSION
taskcluster/docker/decision/system-setup.sh
taskcluster/docker/desktop-build/Dockerfile
taskcluster/docker/desktop-build/bin/build.sh
taskcluster/docker/desktop-build/bin/checkout-script.sh
taskcluster/docker/desktop-build/bin/checkout-sources.sh
taskcluster/docker/desktop-build/buildprops.json
taskcluster/docker/desktop-build/dot-config/pip/pip.conf
taskcluster/docker/desktop-build/oauth.txt
taskcluster/docker/desktop-test/Dockerfile
taskcluster/docker/desktop-test/apport
taskcluster/docker/desktop-test/buildprops.json
taskcluster/docker/desktop-test/deja-dup-monitor.desktop
taskcluster/docker/desktop-test/dot-files/config/pip/pip.conf
taskcluster/docker/desktop-test/dot-files/config/user-dirs.dirs
taskcluster/docker/desktop-test/dot-files/config/user-dirs.locale
taskcluster/docker/desktop-test/dot-files/pulse/default.pa
taskcluster/docker/desktop-test/fonts.conf
taskcluster/docker/desktop-test/jockey-gtk.desktop
taskcluster/docker/desktop-test/motd
taskcluster/docker/desktop-test/release-upgrades
taskcluster/docker/desktop-test/taskcluster-interactive-shell
taskcluster/docker/desktop-test/tc-vcs-config.yml
taskcluster/docker/desktop-test/tester.env
taskcluster/docker/desktop1604-test/Dockerfile
taskcluster/docker/desktop1604-test/apport
taskcluster/docker/desktop1604-test/bin/run-wizard
taskcluster/docker/desktop1604-test/buildprops.json
taskcluster/docker/desktop1604-test/deja-dup-monitor.desktop
taskcluster/docker/desktop1604-test/dot-files/config/pip/pip.conf
taskcluster/docker/desktop1604-test/dot-files/config/user-dirs.dirs
taskcluster/docker/desktop1604-test/dot-files/config/user-dirs.locale
taskcluster/docker/desktop1604-test/dot-files/pulse/default.pa
taskcluster/docker/desktop1604-test/fonts.conf
taskcluster/docker/desktop1604-test/jockey-gtk.desktop
taskcluster/docker/desktop1604-test/motd
taskcluster/docker/desktop1604-test/release-upgrades
taskcluster/docker/desktop1604-test/taskcluster-interactive-shell
taskcluster/docker/desktop1604-test/tc-vcs-config.yml
taskcluster/docker/desktop1604-test/tester.env
taskcluster/docker/image_builder/Dockerfile
taskcluster/docker/image_builder/REGISTRY
taskcluster/docker/image_builder/VERSION
taskcluster/docker/image_builder/bin/build_image.sh
taskcluster/docker/lint/Dockerfile
taskcluster/docker/lint/system-setup.sh
taskcluster/docker/phone-builder/Dockerfile
taskcluster/docker/phone-builder/bin/validate_task.py
taskcluster/docker/phone-builder/hgrc
taskcluster/docker/phone-builder/tc-vcs-config.yml
taskcluster/docker/phone-builder/tests/invalid_base_repo.yml
taskcluster/docker/phone-builder/tests/invalid_head_repo.yml
taskcluster/docker/phone-builder/tests/public.yml
taskcluster/docker/phone-builder/tests/test_validation.py
taskcluster/docker/phone-builder/tests/valid.yml
taskcluster/docker/recipes/centos6-build-system-setup.sh
taskcluster/docker/recipes/common.sh
taskcluster/docker/recipes/install-mercurial.sh
taskcluster/docker/recipes/run-task
taskcluster/docker/recipes/tooltool.py
taskcluster/docker/recipes/ubuntu1204-test-system-setup.sh
taskcluster/docker/recipes/ubuntu1604-test-system-setup.sh
taskcluster/docker/recipes/xvfb.sh
taskcluster/docker/rust-build/Dockerfile
taskcluster/docker/rust-build/README.md
taskcluster/docker/rust-build/REGISTRY
taskcluster/docker/rust-build/VERSION
taskcluster/docker/rust-build/build_cargo.sh
taskcluster/docker/rust-build/build_rust.sh
taskcluster/docker/rust-build/build_rust_mac.sh
taskcluster/docker/rust-build/fetch_cargo.sh
taskcluster/docker/rust-build/fetch_rust.sh
taskcluster/docker/rust-build/package_rust.sh
taskcluster/docker/rust-build/repack_rust.py
taskcluster/docker/rust-build/task.json
taskcluster/docker/rust-build/tcbuild.py
taskcluster/docker/rust-build/upload_rust.sh
taskcluster/docker/tester/Dockerfile
taskcluster/docker/tester/REGISTRY
taskcluster/docker/tester/VERSION
taskcluster/docker/tester/bin/test.sh
taskcluster/docker/tester/dot-config/pip/pip.conf
taskcluster/docker/tester/dot-config/user-dirs.dirs
taskcluster/docker/tester/dot-config/user-dirs.locale
taskcluster/docker/tester/dot-pulse/default.pa
taskcluster/docker/tester/tc-vcs-config.yml
taskcluster/docker/tester/tester.env
taskcluster/taskgraph/task/docker_image.py
taskcluster/taskgraph/transforms/task.py
taskcluster/taskgraph/transforms/tests/test_description.py
taskcluster/taskgraph/util/docker.py
testing/docker/README.md
testing/docker/REGISTRY
testing/docker/android-gradle-build/Dockerfile
testing/docker/android-gradle-build/README.md
testing/docker/android-gradle-build/REGISTRY
testing/docker/android-gradle-build/VERSION
testing/docker/android-gradle-build/bin/after.sh
testing/docker/android-gradle-build/bin/before.sh
testing/docker/android-gradle-build/bin/build.sh
testing/docker/android-gradle-build/bin/checkout-script.sh
testing/docker/android-gradle-build/bin/checkout-sources.sh
testing/docker/android-gradle-build/buildprops.json
testing/docker/android-gradle-build/oauth.txt
testing/docker/base-build/Dockerfile
testing/docker/base-build/VERSION
testing/docker/base-build/system-setup.sh
testing/docker/base-test/Dockerfile
testing/docker/base-test/REGISTRY
testing/docker/base-test/VERSION
testing/docker/base-test/sources.list
testing/docker/centos6-build-upd/Dockerfile
testing/docker/centos6-build-upd/REGISTRY
testing/docker/centos6-build-upd/VERSION
testing/docker/centos6-build/Dockerfile
testing/docker/centos6-build/REGISTRY
testing/docker/centos6-build/VERSION
testing/docker/centos6-build/hgrc
testing/docker/centos6-build/system-setup.sh
testing/docker/decision/README.md
testing/docker/decision/REGISTRY
testing/docker/decision/VERSION
testing/docker/decision/system-setup.sh
testing/docker/desktop-build/bin/build.sh
testing/docker/desktop-build/bin/checkout-script.sh
testing/docker/desktop-build/bin/checkout-sources.sh
testing/docker/desktop-build/buildprops.json
testing/docker/desktop-build/oauth.txt
testing/docker/desktop-test/apport
testing/docker/desktop-test/buildprops.json
testing/docker/desktop-test/deja-dup-monitor.desktop
testing/docker/desktop-test/dot-files/config/pip/pip.conf
testing/docker/desktop-test/dot-files/config/user-dirs.dirs
testing/docker/desktop-test/dot-files/config/user-dirs.locale
testing/docker/desktop-test/dot-files/pulse/default.pa
testing/docker/desktop-test/fonts.conf
testing/docker/desktop-test/jockey-gtk.desktop
testing/docker/desktop-test/motd
testing/docker/desktop-test/release-upgrades
testing/docker/desktop-test/taskcluster-interactive-shell
testing/docker/desktop-test/tc-vcs-config.yml
testing/docker/desktop-test/tester.env
testing/docker/desktop1604-test/apport
testing/docker/desktop1604-test/bin/run-wizard
testing/docker/desktop1604-test/buildprops.json
testing/docker/desktop1604-test/deja-dup-monitor.desktop
testing/docker/desktop1604-test/dot-files/config/user-dirs.dirs
testing/docker/desktop1604-test/dot-files/config/user-dirs.locale
testing/docker/desktop1604-test/dot-files/pulse/default.pa
testing/docker/desktop1604-test/fonts.conf
testing/docker/desktop1604-test/jockey-gtk.desktop
testing/docker/desktop1604-test/motd
testing/docker/desktop1604-test/release-upgrades
testing/docker/desktop1604-test/taskcluster-interactive-shell
testing/docker/desktop1604-test/tc-vcs-config.yml
testing/docker/desktop1604-test/tester.env
testing/docker/image_builder/Dockerfile
testing/docker/image_builder/REGISTRY
testing/docker/image_builder/VERSION
testing/docker/image_builder/bin/build_image.sh
testing/docker/lint/system-setup.sh
testing/docker/recipes/centos6-build-system-setup.sh
testing/docker/recipes/common.sh
testing/docker/recipes/install-mercurial.sh
testing/docker/recipes/run-task
testing/docker/recipes/tooltool.py
testing/docker/recipes/ubuntu1204-test-system-setup.sh
testing/docker/recipes/ubuntu1604-test-system-setup.sh
testing/docker/recipes/xvfb.sh
testing/docker/rust-build/Dockerfile
testing/docker/rust-build/README.md
testing/docker/rust-build/REGISTRY
testing/docker/rust-build/VERSION
testing/docker/rust-build/build_cargo.sh
testing/docker/rust-build/build_rust.sh
testing/docker/rust-build/build_rust_mac.sh
testing/docker/rust-build/fetch_cargo.sh
testing/docker/rust-build/fetch_rust.sh
testing/docker/rust-build/package_rust.sh
testing/docker/rust-build/repack_rust.py
testing/docker/rust-build/task.json
testing/docker/rust-build/tcbuild.py
testing/docker/rust-build/upload_rust.sh
testing/docker/tester/Dockerfile
testing/docker/tester/REGISTRY
testing/docker/tester/VERSION
testing/docker/tester/bin/test.sh
testing/docker/tester/dot-config/user-dirs.dirs
testing/docker/tester/dot-config/user-dirs.locale
testing/docker/tester/dot-pulse/default.pa
testing/docker/tester/tc-vcs-config.yml
testing/docker/tester/tester.env
--- a/AUTHORS
+++ b/AUTHORS
@@ -874,17 +874,16 @@ Roy Yokoyama <yokoyama@netscape.com>
 RSA Security, Inc
 Russell King <rmk@arm.linux.org.uk>
 Rusty Lynch <rusty.lynch@intel.com>
 Ryan Cassin <rcassin@supernova.org>
 Ryan Flint <rflint@dslr.net>
 Ryan Jones <sciguyryan@gmail.com>
 Ryan VanderMeulen <ryanvm@gmail.com>
 Ryoichi Furukawa <oliver@1000cp.com>
-Sanyam Khurana <Sanyam.Khurana01@gmail.com>
 sagdjb@softwareag.com
 Samir Gehani <sgehani@netscape.com>
 Sammy Ford
 Samphan Raruenrom
 Samuel Sieb <samuel@sieb.net>
 Sarlos Tamas
 scole@planetweb.com
 Scooter Morris <scootermorris@comcast.net>
--- a/taskcluster/ci/android-stuff/kind.yml
+++ b/taskcluster/ci/android-stuff/kind.yml
@@ -58,17 +58,17 @@ jobs:
               - "/home/worker/bin/before.sh && /home/worker/bin/build.sh && /home/worker/bin/after.sh && true\n"
             max-run-time: 36000
         scopes:
           - docker-worker:relengapi-proxy:tooltool.download.internal
           - docker-worker:relengapi-proxy:tooltool.download.public
         when:
             files-changed:
               - "mobile/android/config/**"
-              - "taskcluster/docker/android-gradle-build/**"
+              - "testing/docker/android-gradle-build/**"
               - "testing/mozharness/configs/builds/releng_sub_android_configs/*gradle_dependencies.py"
               - "**/*.gradle"
 
     android-test:
         description: "Android armv7 unit tests"
         attributes:
             build_platform: android-test
             build_type: opt
--- a/taskcluster/ci/source-check/mozlint.yml
+++ b/taskcluster/ci/source-check/mozlint.yml
@@ -35,17 +35,17 @@ mozlint-eslint/opt:
             # Run when eslint policies change.
             - '**/.eslintignore'
             - '**/*eslintrc*'
             # The plugin implementing custom checks.
             - 'tools/lint/eslint/eslint-plugin-mozilla/**'
             # Other misc lint related files.
             - 'python/mozlint/**'
             - 'tools/lint/**'
-            - 'taskcluster/docker/lint/**'
+            - 'testing/docker/lint/**'
 
 mozlint-flake8/opt:
     description: flake8 run over the gecko codebase
     treeherder:
         symbol: f8
         kind: test
         tier: 1
         platform: lint/opt
@@ -61,17 +61,17 @@ mozlint-flake8/opt:
         - integration
         - release
     when:
         files-changed:
             - '**/*.py'
             - '**/.flake8'
             - 'python/mozlint/**'
             - 'tools/lint/**'
-            - 'taskcluster/docker/lint/**'
+            - 'testing/docker/lint/**'
 
 wptlint-gecko/opt:
     description: web-platform-tests linter
     treeherder:
         symbol: W
         kind: test
         tier: 1
         platform: lint/opt
@@ -89,9 +89,9 @@ wptlint-gecko/opt:
     when:
         files-changed:
             - 'testing/web-platform/tests/**'
             - 'testing/web-platform/mozilla/tests/**'
             - 'testing/web-platform/meta/MANIFEST.json'
             - 'testing/web-platform/mozilla/meta/MANIFEST.json'
             - 'python/mozlint/**'
             - 'tools/lint/**'
-            - 'taskcluster/docker/lint/**'
+            - 'testing/docker/lint/**'
deleted file mode 100644
--- a/taskcluster/docker/android-gradle-build/Dockerfile
+++ /dev/null
@@ -1,97 +0,0 @@
-# TODO remove VOLUME below when the base image is updated next.
-FROM          taskcluster/centos6-build-upd:0.1.6.20160329195300
-MAINTAINER    Nick Alexander <nalexander@mozilla.com>
-
-# BEGIN ../desktop-build/Dockerfile
-
-# TODO remove when base image is updated
-VOLUME /home/worker/workspace
-VOLUME /home/worker/tooltool-cache
-
-# Add build scripts; these are the entry points from the taskcluster worker, and
-# operate on environment variables
-ADD             bin /home/worker/bin
-RUN             chmod +x /home/worker/bin/*
-
-# Add wrapper scripts for xvfb allowing tasks to easily retry starting up xvfb
-# %include taskcluster/docker/recipes/xvfb.sh
-ADD topsrcdir/taskcluster/docker/recipes/xvfb.sh /home/worker/scripts/xvfb.sh
-
-# Add configuration
-COPY            dot-config                    /home/worker/.config
-
-# Generate machine uuid file
-RUN dbus-uuidgen --ensure=/var/lib/dbus/machine-id
-
-# Stubbed out credentials; mozharness looks for this file an issues a WARNING
-# if it's not found, which causes the build to fail.  Note that this needs to
-# be in the parent of the workspace directory and in the directory where
-# mozharness is run (not its --work-dir).  See Bug 1169652.
-ADD           oauth.txt /home/worker/
-
-# stubbed out buildprops, which keeps mozharness from choking
-# Note that this needs to be in the parent of the workspace directory and in
-# the directory where mozharness is run (not its --work-dir)
-ADD           buildprops.json /home/worker/
-
-# install tooltool directly from github where tooltool_wrapper.sh et al. expect
-# to find it
-RUN wget -O /builds/tooltool.py https://raw.githubusercontent.com/mozilla/build-tooltool/master/tooltool.py
-RUN chmod +x /builds/tooltool.py
-
-# END ../desktop-build/Dockerfile
-
-# Reset user/workdir from parent image so we can install software.
-WORKDIR /
-USER root
-
-# Update base.
-RUN yum upgrade -y
-
-# Install JDK and Sonatype Nexus.  Cribbed directly from
-# https://github.com/sonatype/docker-nexus/blob/fffd2c61b2368292040910c055cf690c8e76a272/oss/Dockerfile.
-
-# Install the screen package here to use with xvfb.
-# Move installation to base centos6-build image once Bug 1272629 is fixed
-RUN yum install -y \
-  createrepo \
-  curl \
-  java-1.7.0-openjdk-devel \
-  java-1.7.0-openjdk \
-  screen \
-  sudo \
-  tar \
-  unzip \
-  wget \
-  zip \
-  && yum clean all
-
-ENV NEXUS_VERSION 2.12.0-01
-ENV NEXUS_SHA1SUM 1a9aaad8414baffe0a2fd46eed1f41b85f4049e6
-
-RUN mkdir -p /opt/sonatype/nexus
-
-WORKDIR /tmp
-RUN curl --fail --silent --location --retry 3 \
-    https://download.sonatype.com/nexus/oss/nexus-${NEXUS_VERSION}-bundle.tar.gz \
-    -o /tmp/nexus-${NEXUS_VERSION}-bundle.tar.gz
-
-# Observe the two spaces below.  Seriously.
-RUN echo "${NEXUS_SHA1SUM}  nexus-${NEXUS_VERSION}-bundle.tar.gz" > nexus-${NEXUS_VERSION}-bundle.tar.gz.sha1
-RUN sha1sum --check nexus-${NEXUS_VERSION}-bundle.tar.gz.sha1
-
-RUN tar zxf nexus-${NEXUS_VERSION}-bundle.tar.gz \
-  && mv /tmp/nexus-${NEXUS_VERSION}/* /opt/sonatype/nexus/ \
-  && rm -rf /tmp/nexus-${NEXUS_VERSION} \
-  && rm -rf /tmp/nexus-${NEXUS_VERSION}-bundle.tar.gz
-
-# Install tooltool directly from github.
-RUN mkdir /build
-ADD https://raw.githubusercontent.com/mozilla/build-tooltool/master/tooltool.py /build/tooltool.py
-RUN chmod +rx /build/tooltool.py
-
-# Back to the centos6-build workdir, matching desktop-build.
-WORKDIR /home/worker
-
-# Set a default command useful for debugging
-CMD ["/bin/bash", "--login"]
deleted file mode 100644
--- a/taskcluster/docker/android-gradle-build/REGISTRY
+++ /dev/null
@@ -1,1 +0,0 @@
-taskcluster
deleted file mode 100644
--- a/taskcluster/docker/android-gradle-build/bin/checkout-script.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash -vex
-
-set -x -e
-
-# Inputs, with defaults
-
-: GECKO_HEAD_REPOSITORY              ${GECKO_HEAD_REPOSITORY:=https://hg.mozilla.org/mozilla-central}
-: GECKO_HEAD_REV                ${GECKO_HEAD_REV:=default}
-
-: SCRIPT_DOWNLOAD_PATH          ${SCRIPT_DOWNLOAD_PATH:=$PWD}
-: SCRIPT_PATH                   ${SCRIPT_PATH:?"script path must be set"}
-set -v
-
-# download script from the gecko repository
-url=${GECKO_HEAD_REPOSITORY}/raw-file/${GECKO_HEAD_REV}/${SCRIPT_PATH}
-wget --directory-prefix=${SCRIPT_DOWNLOAD_PATH} $url
-chmod +x `basename ${SCRIPT_PATH}`
deleted file mode 100644
--- a/taskcluster/docker/android-gradle-build/buildprops.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-  "properties": {
-    "buildername": ""
-  },
-  "sourcestamp": {
-    "changes": []
-  },
-  "comments": "TaskCluster Job"
-}
deleted file mode 100644
--- a/taskcluster/docker/android-gradle-build/dot-config/pip/pip.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-[global]
-disable-pip-version-check = true
deleted file mode 100644
--- a/taskcluster/docker/android-gradle-build/oauth.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-taskcluster_clientId = None
-taskcluster_accessToken = None
deleted file mode 100644
--- a/taskcluster/docker/b2g-build/Dockerfile
+++ /dev/null
@@ -1,147 +0,0 @@
-FROM          centos:centos6
-MAINTAINER    Dustin J. Mitchell <dustin@mozilla.com>
-
-# Run majority of yum installs here so we cache them!
-COPY releng.repo /etc/yum.repos.d/releng.repo
-RUN yum install -y epel-release && \
-  yum update -y && \
-  yum makecache && \
-  yum install -y  wget
-
-# Install updated curl libraries
-RUN cd /tmp && \
-  wget https://s3-us-west-2.amazonaws.com/test-caching/libcurl-7.29.0-19.el6.x86_64.rpm && \
-  wget https://s3-us-west-2.amazonaws.com/test-caching/libcurl-devel-7.29.0-19.el6.x86_64.rpm && \
-  wget https://s3-us-west-2.amazonaws.com/test-caching/curl-7.29.0-19.el6.x86_64.rpm && \
-  yum install -y libcurl-7.29.0-19.el6.x86_64.rpm libcurl-devel-7.29.0-19.el6.x86_64.rpm curl-7.29.0-19.el6.x86_64.rpm && \
-  rm -f libcurl-7.29.0-19.el6.x86_64.rpm libcurl-devel-7.29.0-19.el6.x86_64.rpm curl-7.29.0-19.el6.x86_64.rpm && \
-  cd -
-
-RUN yum install -y \
-  # From Building B2G docs
-  # cmake \
-  # cmake: is disabled intentionally to work around: bug 1141417
-  GConf2-devel \
-  alsa-lib-devel \
-  autoconf213 \
-  bc \
-  bison \
-  bzip2 \
-  ccache \
-  dbus-devel \
-  dbus-glib-devel \
-  dbus-glib-devel \
-  dbus-python \
-  expat-devel \
-  file \
-  flex \
-  gawk \
-  gcc473_0moz1 \
-  gettext-devel \
-  glibc-devel \
-  glibc-devel.i686 \
-  glibc-static \
-  gstreamer-devel \
-  gstreamer-plugins-base-devel \
-  gtk2-devel \
-  install \
-  iw \
-  libX11-devel \
-  libX11-devel.i686 \
-  libXrandr.i686 \
-  libXt-devel \
-  libnotify-devel \
-  libstdc++-static \
-  libstdc++-static \
-  libstdc++.i686 \
-  make \
-  mesa-libGL-devel \
-  mesa-libGL-devel.i686 \
-  mozilla-python27 \
-  mpfr-devel.x86_64 \
-  ncurses-devel.i686 \
-  ncurses:-devel \
-  openssh-clients \
-  openssl-devel \
-  openssl-devel \
-  patch \
-  perl-DBI \
-  perl-Digest-SHA \
-  perl-ExtUtils-MakeMaker \
-  pulseaudio-libs-devel \
-  readline-devel.i686 \
-  rsync \
-  screen \
-  subversion-perl \
-  tar \
-  tcl \
-  tk \
-  unzip \
-  uuid \
-  vim \
-  wireless-tools-devel \
-  xorg-x11-server-Xvfb \
-  xorg-x11-server-utils \
-  xz \
-  yasm \
-  zip \
-  zlib-devel \
-  zlib-devel.i686 && \
-  # Remove cached packages. Cached package takes up a lot of space and
-  # distributing them to workers is wasteful.
-  yum clean all
-
-RUN mkdir -p /home/worker/bin
-COPY bin/repository-url.py /home/worker/bin/repository-url.py
-
-ENV GCC_PATH /home/worker/workspace/gecko/gcc
-
-# Default to mozilla specific python, etc...
-ENV PATH /tools/python27-mercurial/bin:/tools/python27/bin:$PATH
-ENV PATH /tools/tools/buildfarm/utils:$PATH:/home/worker/bin/
-ENV PATH $GCC_PATH/bin:/tools/gcc-4.7.3-0moz1/bin:$PATH
-
-# Use the libstd++ we installed over all others...
-env LD_LIBRARY_PATH=$GCC_PATH/lib64:$GCC_PATH/lib:/tools/gcc-4.7.3-0moz1/lib64:/tools/gcc-4.7.3-0moz1/lib
-
-RUN useradd -d /home/worker -s /bin/bash -m worker
-
-# Terrible symlink hacks so cc points to the gcc version we intend to use...
-RUN ls -lah /tools/gcc-4.7.3-0moz1/bin && ln -s /tools/gcc-4.7.3-0moz1/bin/gcc /tools/gcc-4.7.3-0moz1/bin/cc
-
-# Terrible Hack to correctly install git-2.4.1
-RUN mkdir -p /tmp/git && cd /tmp/git && \
-    curl -L https://s3-us-west-2.amazonaws.com/test-caching/git-2.4.1.tar.gz | tar -xz && \
-    cd git* && \
-    make prefix=/usr/local/ all -j10 && \
-    make prefix=/usr/local/ install && \
-    rm -Rf /tmp/git
-
-# Install node from node's own dist...
-ENV NODE_VERSION v0.10.36
-RUN cd /usr/local/ && \
-    curl https://nodejs.org/dist/$NODE_VERSION/node-$NODE_VERSION-linux-x64.tar.gz | tar -xz --strip-components 1 && \
-    node -v
-
-RUN wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz && \
-    tar -xvf setuptools-1.4.2.tar.gz && \
-    cd setuptools-1.4.2 && python setup.py install && \
-    cd - && rm -rf setuptools-1.4.2* && \
-    curl https://bootstrap.pypa.io/get-pip.py | python - && \
-    pip install virtualenv mercurial
-
-# Generate machine uuid file
-RUN dbus-uuidgen --ensure=/var/lib/dbus/machine-id
-
-# Set variable normally configured at login, by the shells parent process, these
-# are taken from GNU su manual
-ENV           HOME          /home/worker
-ENV           SHELL         /bin/bash
-ENV           USER          worker
-ENV           LOGNAME       worker
-
-# Declare default working folder
-WORKDIR       /home/worker
-
-# Set a default command useful for debugging
-CMD ["/bin/bash", "--login"]
deleted file mode 100644
--- a/taskcluster/docker/b2g-build/VERSION
+++ /dev/null
@@ -1,1 +0,0 @@
-0.2.11
deleted file mode 100755
--- a/taskcluster/docker/b2g-build/bin/repository-url.py
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /usr/bin/env python
-
-import argparse
-
-
-def repo_url(remote, revision, path):
-    '''
-    Construct a url pointing to the _raw_ file in the given remote this function
-    will handle url construction for both hg and github.
-    '''
-
-    # Ensure remote always ends in a slash...
-    if remote[-1] != '/':
-        remote = remote + '/'
-    if 'hg.mozilla.org' in remote:
-        return '{}raw-file/{}/{}'.format(remote, revision, path)
-    else:
-        return '{}raw/{}/{}'.format(remote, revision, path)
-
-
-parser = argparse.ArgumentParser(
-    description='Get url for raw file in remote repository'
-)
-
-parser.add_argument('remote', help='URL for remote repository')
-parser.add_argument('revision', help='Revision in remote repository')
-parser.add_argument('path', help='Path to file in remote repository')
-
-args = parser.parse_args()
-print(repo_url(args.remote, args.revision, args.path))
deleted file mode 100644
--- a/taskcluster/docker/b2g-build/releng.repo
+++ /dev/null
@@ -1,6 +0,0 @@
-[releng]
-name=releng
-descr=releng-specific packages from mockbuild-repos
-baseurl=http://mockbuild-repos.pub.build.mozilla.org/releng/public/CentOS/6/x86_64
-enabled=1
-gpgcheck=0
deleted file mode 100644
--- a/taskcluster/docker/base-test/REGISTRY
+++ /dev/null
@@ -1,1 +0,0 @@
-taskcluster
deleted file mode 100644
--- a/taskcluster/docker/builder/Dockerfile
+++ /dev/null
@@ -1,32 +0,0 @@
-FROM          quay.io/mozilla/b2g-build:0.2.11
-MAINTAINER    Dustin J. Mitchell <dustin@mozilla.com>
-
-ENV VERSION 1.2
-ENV PYTHONPATH /tools/tools/lib/python:$PYTHONPATH
-ENV TOOLTOOL_CACHE  /home/worker/tools/tooltool-cache
-
-ADD https://raw.githubusercontent.com/taskcluster/buildbot-step/19219c470bd95b390ed0b31d4bf455169bf12fca/buildbot_step.js /home/worker/bin/buildbot_step
-
-# Add utilities and configuration
-RUN mkdir -p /home/worker/bin /home/worker/tools
-# Add bin tools last as they are most likely to change
-RUN chown -R worker:worker /home/worker/* /home/worker/.*
-
-# Instal build tools
-RUN hg clone http://hg.mozilla.org/build/tools/ /tools/tools && \
-      cd /tools/tools && \
-      python setup.py install
-
-# Initialize git (makes repo happy)
-RUN git config --global user.email "mozilla@example.com" && \
-    git config --global user.name "mozilla"
-
-# VCS Tools
-RUN npm install -g taskcluster-vcs@2.3.17
-
-# TODO enable worker
-# TODO volume mount permissions will be an issue
-# USER worker
-
-COPY bin /home/worker/bin
-RUN chmod a+x /home/worker/bin/*
deleted file mode 100644
--- a/taskcluster/docker/builder/REGISTRY
+++ /dev/null
@@ -1,1 +0,0 @@
-taskcluster
deleted file mode 100644
--- a/taskcluster/docker/builder/VERSION
+++ /dev/null
@@ -1,1 +0,0 @@
-0.5.13
deleted file mode 100644
--- a/taskcluster/docker/builder/bin/checkout-gecko
+++ /dev/null
@@ -1,16 +0,0 @@
-#! /bin/bash -ex
-
-# Ensure we have at least enough to check gecko out...
-test $GECKO_BASE_REPOSITORY
-
-# Workspace to checkout gecko into...
-WORKSPACE=$1
-mkdir -p $WORKSPACE
-
-# Note that tc-vcs requires only the first two arguments so others are optional.
-# This is intended to make it easier to clone local directories.
-buildbot_step "Clone gecko" tc-vcs checkout $WORKSPACE/gecko \
-  $GECKO_BASE_REPOSITORY \
-  $GECKO_HEAD_REPOSITORY \
-  $GECKO_HEAD_REV \
-  $GECKO_HEAD_REF
deleted file mode 100644
--- a/taskcluster/docker/builder/git.env
+++ /dev/null
@@ -1,6 +0,0 @@
-GECKO_BASE_REPOSITORY=https://github.com/mozilla/gecko-dev
-GECKO_HEAD_REPOSITORY=https://github.com/mozilla/gecko-dev
-GECKO_HEAD_REF=master
-GECKO_HEAD_REV=master
-MOZHARNESS_REPOSITORY=http://hg.mozilla.org/build/mozharness
-MOZHARNESS_REV=tip
deleted file mode 100644
--- a/taskcluster/docker/builder/mulet.env
+++ /dev/null
@@ -1,7 +0,0 @@
-GECKO_BASE_REPOSITORY=https://github.com/mozilla/gecko-dev
-GECKO_HEAD_REPOSITORY=https://github.com/mozilla/gecko-dev
-GECKO_HEAD_REF=master
-GECKO_HEAD_REV=master
-MOZHARNESS_REPOSITORY=http://hg.mozilla.org/build/mozharness
-MOZHARNESS_REV=tip
-MOZCONFIG=b2g/dev/config/mozconfigs/linux64/mulet
deleted file mode 100644
--- a/taskcluster/docker/centos6-build-upd/REGISTRY
+++ /dev/null
@@ -1,1 +0,0 @@
-taskcluster
deleted file mode 100644
--- a/taskcluster/docker/centos6-build/REGISTRY
+++ /dev/null
@@ -1,1 +0,0 @@
-taskcluster
deleted file mode 100644
--- a/taskcluster/docker/centos6-build/VERSION
+++ /dev/null
@@ -1,1 +0,0 @@
-0.1.6
deleted file mode 100644
--- a/taskcluster/docker/decision/Dockerfile
+++ /dev/null
@@ -1,25 +0,0 @@
-FROM          ubuntu:16.04
-MAINTAINER    Greg Arndt <garndt@mozilla.com>
-
-# Add worker user
-RUN useradd -d /home/worker -s /bin/bash -m worker
-RUN mkdir /home/worker/artifacts && chown worker:worker /home/worker/artifacts
-
-# %include taskcluster/docker/recipes/tooltool.py
-ADD topsrcdir/taskcluster/docker/recipes/tooltool.py /tmp/tooltool.py
-
-# %include taskcluster/docker/recipes/install-mercurial.sh
-ADD topsrcdir/taskcluster/docker/recipes/install-mercurial.sh /tmp/install-mercurial.sh
-
-ADD system-setup.sh /tmp/system-setup.sh
-RUN bash /tmp/system-setup.sh
-
-# %include taskcluster/docker/recipes/run-task
-ADD topsrcdir/taskcluster/docker/recipes/run-task /home/worker/bin/run-task
-
-ENV PATH /home/worker/bin:$PATH
-ENV SHELL /bin/bash
-ENV HOME /home/worker
-
-# Set a default command useful for debugging
-CMD ["/bin/bash", "--login"]
deleted file mode 100644
--- a/taskcluster/docker/decision/REGISTRY
+++ /dev/null
@@ -1,1 +0,0 @@
-taskcluster
deleted file mode 100644
--- a/taskcluster/docker/desktop-build/Dockerfile
+++ /dev/null
@@ -1,46 +0,0 @@
-# TODO remove VOLUME below when the base image is updated next.
-FROM          taskcluster/centos6-build-upd:0.1.6.20160329195300
-MAINTAINER    Dustin J. Mitchell <dustin@mozilla.com>
-
-# TODO remove when base image is updated
-VOLUME /home/worker/workspace
-VOLUME /home/worker/tooltool-cache
-
-# Add build scripts; these are the entry points from the taskcluster worker, and
-# operate on environment variables
-ADD             bin /home/worker/bin
-RUN             chmod +x /home/worker/bin/*
-
-# Add wrapper scripts for xvfb allowing tasks to easily retry starting up xvfb
-# %include taskcluster/docker/recipes/xvfb.sh
-ADD topsrcdir/taskcluster/docker/recipes/xvfb.sh /home/worker/scripts/xvfb.sh
-
-# Add configuration
-COPY            dot-config                    /home/worker/.config
-
-# Generate machine uuid file
-RUN dbus-uuidgen --ensure=/var/lib/dbus/machine-id
-
-# Stubbed out credentials; mozharness looks for this file an issues a WARNING
-# if it's not found, which causes the build to fail.  Note that this needs to
-# be in the parent of the workspace directory and in the directory where
-# mozharness is run (not its --work-dir).  See Bug 1169652.
-ADD           oauth.txt /home/worker/
-
-# stubbed out buildprops, which keeps mozharness from choking
-# Note that this needs to be in the parent of the workspace directory and in
-# the directory where mozharness is run (not its --work-dir)
-ADD           buildprops.json /home/worker/
-
-# install tooltool directly from github where tooltool_wrapper.sh et al. expect
-# to find it
-RUN wget -O /builds/tooltool.py https://raw.githubusercontent.com/mozilla/build-tooltool/master/tooltool.py
-RUN chmod +x /builds/tooltool.py
-
-# Move installation to base centos6-build image once Bug 1272629 is fixed
-# Install the screen package here to use with xvfb.
-# Install bison to build binutils.
-RUN yum install -y bison screen
-
-# Set a default command useful for debugging
-CMD ["/bin/bash", "--login"]
deleted file mode 100644
--- a/taskcluster/docker/desktop-build/dot-config/pip/pip.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-[global]
-disable-pip-version-check = true
deleted file mode 100644
--- a/taskcluster/docker/desktop-test/Dockerfile
+++ /dev/null
@@ -1,106 +0,0 @@
-FROM          ubuntu:12.04
-MAINTAINER    Jonas Finnemann Jensen <jopsen@gmail.com>
-
-RUN useradd -d /home/worker -s /bin/bash -m worker
-WORKDIR /home/worker
-
-# %include taskcluster/docker/recipes/tooltool.py
-ADD topsrcdir/taskcluster/docker/recipes/tooltool.py /setup/tooltool.py
-
-# %include taskcluster/docker/recipes/install-mercurial.sh
-ADD topsrcdir/taskcluster/docker/recipes/install-mercurial.sh /tmp/install-mercurial.sh
-
-# Add wrapper scripts for xvfb allowing tasks to easily retry starting up xvfb
-# %include taskcluster/docker/recipes/xvfb.sh
-ADD topsrcdir/taskcluster/docker/recipes/xvfb.sh /home/worker/scripts/xvfb.sh
-
-# %include taskcluster/docker/recipes/ubuntu1204-test-system-setup.sh
-ADD topsrcdir/taskcluster/docker/recipes/ubuntu1204-test-system-setup.sh /setup/system-setup.sh
-RUN bash /setup/system-setup.sh
-
-# %include taskcluster/docker/recipes/run-task
-ADD topsrcdir/taskcluster/docker/recipes/run-task /home/worker/bin/run-task
-
-# %include taskcluster/scripts/tester/test-ubuntu.sh
-ADD topsrcdir/taskcluster/scripts/tester/test-ubuntu.sh /home/worker/bin/test-linux.sh
-
-# This will create a host mounted filesystem when the cache is stripped
-# on Try. This cancels out some of the performance losses of aufs. See
-# bug 1291940.
-VOLUME /home/worker/hg-shared
-VOLUME /home/worker/checkouts
-VOLUME /home/worker/workspace
-
-# Set variable normally configured at login, by the shells parent process, these
-# are taken from GNU su manual
-ENV           HOME          /home/worker
-ENV           SHELL         /bin/bash
-ENV           USER          worker
-ENV           LOGNAME       worker
-ENV           HOSTNAME      taskcluster-worker
-ENV           LANG          en_US.UTF-8
-ENV           LC_ALL        en_US.UTF-8
-
-# Add utilities and configuration
-COPY           dot-files/config              /home/worker/.config
-COPY           dot-files/pulse               /home/worker/.pulse
-RUN            chmod +x bin/*
-# TODO: remove this when buildbot is gone
-COPY           buildprops.json               /home/worker/buildprops.json
-COPY           tc-vcs-config.yml /etc/taskcluster-vcs.yml
-
-# TODO: remove
-ADD            https://raw.githubusercontent.com/taskcluster/buildbot-step/master/buildbot_step /home/worker/bin/buildbot_step
-RUN chmod u+x /home/worker/bin/buildbot_step
-
-# TODO: remove
-ADD            https://s3-us-west-2.amazonaws.com/test-caching/packages/linux64-stackwalk /usr/local/bin/linux64-minidump_stackwalk
-RUN chmod +x /usr/local/bin/linux64-minidump_stackwalk
-
-# allow the worker user to access video devices
-RUN usermod -a -G video worker
-
-RUN mkdir Documents; mkdir Pictures; mkdir Music; mkdir Videos; mkdir artifacts
-
-# install tc-vcs and tc-npm-cache
-RUN npm install -g taskcluster-vcs@2.3.12 \
- && npm install -g taskcluster-npm-cache@1.1.14 \
- && rm -rf ~/.npm
-ENV PATH $PATH:/home/worker/bin
-
-# TODO Re-enable worker when bug 1093833 lands
-#USER          worker
-
-# clean up
-RUN rm -Rf .cache && mkdir -p .cache
-
-# Disable Ubuntu update prompt
-# http://askubuntu.com/questions/515161/ubuntu-12-04-disable-release-notification-of-14-04-in-update-manager
-ADD release-upgrades /etc/update-manager/release-upgrades
-
-# Disable tools with on-login popups that interfere with tests; see bug 1240084 and bug 984944.
-ADD jockey-gtk.desktop deja-dup-monitor.desktop /etc/xdg/autostart/
-
-# In test.sh we accept START_VNC to start a vnc daemon.
-# Exposing this port allows it to work.
-EXPOSE 5900
-
-# This helps not forgetting setting DISPLAY=:0 when running
-# tests outside of test.sh
-ENV DISPLAY :0
-
-# Disable apport (Ubuntu app crash reporter) to avoid stealing focus from test runs
-ADD apport /etc/default/apport
-
-# Disable font antialiasing for now to match releng's setup
-ADD fonts.conf /home/worker/.fonts.conf
-
-# Set up first-run experience for interactive mode
-ADD motd /etc/taskcluster-motd
-ADD taskcluster-interactive-shell /bin/taskcluster-interactive-shell
-RUN chmod +x /bin/taskcluster-interactive-shell
-
-RUN chown -R worker:worker /home/worker
-
-# Set a default command useful for debugging
-CMD ["/bin/bash", "--login"]
deleted file mode 100644
--- a/taskcluster/docker/desktop-test/apport
+++ /dev/null
@@ -1,1 +0,0 @@
-enabled=0
deleted file mode 100644
--- a/taskcluster/docker/desktop-test/buildprops.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-  "properties": {
-    "buildername": ""
-  },
-  "sourcestamp": {
-    "changes": []
-  }
-}
deleted file mode 100644
--- a/taskcluster/docker/desktop-test/deja-dup-monitor.desktop
+++ /dev/null
@@ -1,19 +0,0 @@
-[Desktop Entry]
-Version=1.0
-X-Ubuntu-Gettext-Domain=deja-dup
-
-Name=Backup Monitor
-Comment=Schedules backups at regular intervals
-
-Icon=deja-dup
-TryExec=/usr/lib/deja-dup/deja-dup/deja-dup-monitor
-Exec=/usr/lib/deja-dup/deja-dup/deja-dup-monitor
-
-# Bug 984944/1240084 - It prevents taking screenshots
-X-GNOME-Autostart-Delay=false
-
-StartupNotify=false
-NoDisplay=true
-
-Type=Application
-Categories=System;Utility;Archiving;
deleted file mode 100644
--- a/taskcluster/docker/desktop-test/dot-files/config/pip/pip.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-[global]
-disable-pip-version-check = true
deleted file mode 100644
--- a/taskcluster/docker/desktop-test/dot-files/config/user-dirs.dirs
+++ /dev/null
@@ -1,15 +0,0 @@
-# This file is written by xdg-user-dirs-update
-# If you want to change or add directories, just edit the line you're
-# interested in. All local changes will be retained on the next run
-# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
-# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
-# absolute path. No other format is supported.
-
-XDG_DESKTOP_DIR="$HOME/Desktop"
-XDG_DOWNLOAD_DIR="$HOME/Downloads"
-XDG_TEMPLATES_DIR="$HOME/Templates"
-XDG_PUBLICSHARE_DIR="$HOME/Public"
-XDG_DOCUMENTS_DIR="$HOME/Documents"
-XDG_MUSIC_DIR="$HOME/Music"
-XDG_PICTURES_DIR="$HOME/Pictures"
-XDG_VIDEOS_DIR="$HOME/Videos"
deleted file mode 100644
--- a/taskcluster/docker/desktop-test/dot-files/config/user-dirs.locale
+++ /dev/null
@@ -1,1 +0,0 @@
-en_US
deleted file mode 100644
--- a/taskcluster/docker/desktop-test/dot-files/pulse/default.pa
+++ /dev/null
@@ -1,164 +0,0 @@
-#!/usr/bin/pulseaudio -nF
-#
-# This file is part of PulseAudio.
-#
-# PulseAudio is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# PulseAudio is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with PulseAudio; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
-
-# This startup script is used only if PulseAudio is started per-user
-# (i.e. not in system mode)
-
-.nofail
-
-### Load something into the sample cache
-#load-sample-lazy x11-bell /usr/share/sounds/gtk-events/activate.wav
-#load-sample-lazy pulse-hotplug /usr/share/sounds/startup3.wav
-#load-sample-lazy pulse-coldplug /usr/share/sounds/startup3.wav
-#load-sample-lazy pulse-access /usr/share/sounds/generic.wav
-
-.fail
-
-### Automatically restore the volume of streams and devices
-load-module module-device-restore
-load-module module-stream-restore
-load-module module-card-restore
-
-### Automatically augment property information from .desktop files
-### stored in /usr/share/application
-load-module module-augment-properties
-
-### Load audio drivers statically
-### (it's probably better to not load these drivers manually, but instead
-### use module-udev-detect -- see below -- for doing this automatically)
-#load-module module-alsa-sink
-#load-module module-alsa-source device=hw:1,0
-#load-module module-oss device="/dev/dsp" sink_name=output source_name=input
-#load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
-#load-module module-null-sink
-#load-module module-pipe-sink
-
-### Automatically load driver modules depending on the hardware available
-.ifexists module-udev-detect.so
-load-module module-udev-detect
-.else
-### Use the static hardware detection module (for systems that lack udev/hal support)
-load-module module-detect
-.endif
-
-### Automatically connect sink and source if JACK server is present
-.ifexists module-jackdbus-detect.so
-.nofail
-load-module module-jackdbus-detect
-.fail
-.endif
-
-### Automatically load driver modules for Bluetooth hardware
-# This module causes a pulseaudio startup failure on "gecko-tester"
-#.ifexists module-bluetooth-discover.so
-#load-module module-bluetooth-discover
-#.endif
-
-### Load several protocols
-.ifexists module-esound-protocol-unix.so
-load-module module-esound-protocol-unix
-.endif
-load-module module-native-protocol-unix
-
-### Network access (may be configured with paprefs, so leave this commented
-### here if you plan to use paprefs)
-#load-module module-esound-protocol-tcp
-#load-module module-native-protocol-tcp
-#load-module module-zeroconf-publish
-
-### Load the RTP receiver module (also configured via paprefs, see above)
-#load-module module-rtp-recv
-
-### Load the RTP sender module (also configured via paprefs, see above)
-#load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 sink_properties="device.description='RTP Multicast Sink'"
-#load-module module-rtp-send source=rtp.monitor
-
-### Load additional modules from GConf settings. This can be configured with the paprefs tool.
-### Please keep in mind that the modules configured by paprefs might conflict with manually
-### loaded modules.
-.ifexists module-gconf.so
-.nofail
-load-module module-gconf
-.fail
-.endif
-
-### Automatically restore the default sink/source when changed by the user
-### during runtime
-### NOTE: This should be loaded as early as possible so that subsequent modules
-### that look up the default sink/source get the right value
-load-module module-default-device-restore
-
-### Automatically move streams to the default sink if the sink they are
-### connected to dies, similar for sources
-load-module module-rescue-streams
-
-### Make sure we always have a sink around, even if it is a null sink.
-load-module module-always-sink
-
-### Honour intended role device property
-load-module module-intended-roles
-
-### Automatically suspend sinks/sources that become idle for too long
-load-module module-suspend-on-idle
-
-### If autoexit on idle is enabled we want to make sure we only quit
-### when no local session needs us anymore.
-# This module causes a pulseaudio startup failure on "gecko-tester"
-#.ifexists module-console-kit.so
-#load-module module-console-kit
-#.endif
-
-### Enable positioned event sounds
-load-module module-position-event-sounds
-
-### Cork music streams when a phone stream is active
-#load-module module-cork-music-on-phone
-
-### Modules to allow autoloading of filters (such as echo cancellation)
-### on demand. module-filter-heuristics tries to determine what filters
-### make sense, and module-filter-apply does the heavy-lifting of
-### loading modules and rerouting streams.
-load-module module-filter-heuristics
-load-module module-filter-apply
-
-### Load DBus protocol
-#.ifexists module-dbus-protocol.so
-#load-module module-dbus-protocol
-#.endif
-
-# X11 modules should not be started from default.pa so that one daemon
-# can be shared by multiple sessions.
-
-### Load X11 bell module
-#load-module module-x11-bell sample=bell-windowing-system
-
-### Register ourselves in the X11 session manager
-#load-module module-x11-xsmp
-
-### Publish connection data in the X11 root window
-#.ifexists module-x11-publish.so
-#.nofail
-#load-module module-x11-publish
-#.fail
-#.endif
-
-load-module module-switch-on-port-available
-
-### Make some devices default
-#set-default-sink output
-#set-default-source input
deleted file mode 100644
--- a/taskcluster/docker/desktop-test/fonts.conf
+++ /dev/null
@@ -1,5 +0,0 @@
-<match target="font">
-  <edit name="antialias" mode="assign">
-   <bool>false</bool>
-  </edit>
-</match>
deleted file mode 100644
--- a/taskcluster/docker/desktop-test/jockey-gtk.desktop
+++ /dev/null
@@ -1,15 +0,0 @@
-[Desktop Entry]
-Name=Check for new hardware drivers
-Comment=Notify about new hardware drivers available for the system
-Icon=jockey
-Exec=sh -c "test -e /var/cache/jockey/check || exec jockey-gtk --check"
-Terminal=false
-Type=Application
-Categories=System;Settings;GTK;HardwareSettings;
-NotShowIn=KDE;
-X-Ubuntu-Gettext-Domain=jockey
-
-# Bug 984944/1240084 - It prevents taking screenshots
-X-GNOME-Autostart-Delay=false
-
-NoDisplay=true
deleted file mode 100644
--- a/taskcluster/docker/desktop-test/motd
+++ /dev/null
@@ -1,6 +0,0 @@
-Welcome to your taskcluster interactive shell! The regularly scheduled task
-has been paused to give you a chance to set up your debugging environment.
-
-For your convenience, the exact mozharness command needed for this task can
-be invoked using the 'run-mozharness' command.
-
deleted file mode 100644
--- a/taskcluster/docker/desktop-test/release-upgrades
+++ /dev/null
@@ -1,17 +0,0 @@
-# Default behavior for the release upgrader.
-
-[DEFAULT]
-# Default prompting behavior, valid options:
-#
-#  never  - Never check for a new release.
-#  normal - Check to see if a new release is available.  If more than one new
-#           release is found, the release upgrader will attempt to upgrade to
-#           the release that immediately succeeds the currently-running
-#           release.
-#  lts    - Check to see if a new LTS release is available.  The upgrader
-#           will attempt to upgrade to the first LTS release available after
-#           the currently-running one.  Note that this option should not be
-#           used if the currently-running release is not itself an LTS
-#           release, since in that case the upgrader won't be able to
-#           determine if a newer release is available.
-Prompt=never
deleted file mode 100644
--- a/taskcluster/docker/desktop-test/tc-vcs-config.yml
+++ /dev/null
@@ -1,40 +0,0 @@
-# Default configuration used by the tc-vs tools these can be overridden by
-# passing the config you wish to use over the command line...
-git: git
-hg: hg
-
-repoCache:
-  # Repo url to clone when running repo init..
-  repoUrl: https://gerrit.googlesource.com/git-repo.git
-  # Version of repo to utilize...
-  repoRevision: master
-  # The root where all downloaded cache files are stored on the local machine...
-  cacheDir: '{{env.HOME}}/.tc-vcs-repo/'
-  # Name/prefixed used as part of the base url.
-  cacheName: sources/{{name}}.tar.gz
-  # Command used to upload the tarball
-  uploadTar: "curl --header 'Content-Type: application/x-tar' --header 'Content-Encoding: gzip' -X PUT --data-binary @'{{source}}' '{{url}}'"
-  # Large http get requests are often slower using nodes built in http layer so
-  # we utilize a subprocess which is responsible for fetching...
-  get: curl --connect-timeout 30 --speed-limit 500000 -L -o {{dest}} {{url}}
-  # Used to create clone tarball
-  compress: tar -czf {{dest}} {{source}}
-  # All cache urls use tar + gz this is the command used to extract those files
-  # downloaded by the "get" command.
-  extract: tar -x -z -C {{dest}} -f {{source}}
-
-cloneCache:
-  # The root where all downloaded cache files are stored on the local machine...
-  cacheDir: '{{env.HOME}}/.tc-vcs/'
-  # Command used to upload the tarball
-  uploadTar: "curl --header 'Content-Type: application/x-tar' --header 'Content-Encoding: gzip' -X PUT --data-binary @'{{source}}' '{{url}}'"
-  # Large http get requests are often slower using nodes built in http layer so
-  # we utilize a subprocess which is responsible for fetching...
-  get: curl --connect-timeout 30 --speed-limit 500000 -L -o {{dest}} {{url}}
-  # Used to create clone tarball
-  compress: tar -czf {{dest}} {{source}}
-  # All cache urls use tar + gz this is the command used to extract those files
-  # downloaded by the "get" command.
-  extract: tar -x -z --strip-components 1 -C {{dest}} -f {{source}}
-  # Name/prefixed used as part of the base url.
-  cacheName: clones/{{name}}.tar.gz
deleted file mode 100644
--- a/taskcluster/docker/desktop-test/tester.env
+++ /dev/null
@@ -1,4 +0,0 @@
-GAIA_REV=tip
-GAIA_REF=tip
-GAIA_BASE_REPOSITORY=https://hg.mozilla.org/integration/gaia-central
-GAIA_HEAD_REPOSITORY=https://hg.mozilla.org/integration/gaia-central
deleted file mode 100644
--- a/taskcluster/docker/desktop1604-test/Dockerfile
+++ /dev/null
@@ -1,108 +0,0 @@
-FROM          ubuntu:16.04
-MAINTAINER    Joel Maher <joel.maher@gmail.com>
-
-RUN useradd -d /home/worker -s /bin/bash -m worker
-WORKDIR /home/worker
-
-# %include taskcluster/docker/recipes/tooltool.py
-ADD topsrcdir/taskcluster/docker/recipes/tooltool.py /setup/tooltool.py
-
-# %include taskcluster/docker/recipes/install-mercurial.sh
-ADD topsrcdir/taskcluster/docker/recipes/install-mercurial.sh /setup/install-mercurial.sh
-
-# %include taskcluster/docker/recipes/ubuntu1604-test-system-setup.sh
-ADD topsrcdir/taskcluster/docker/recipes/ubuntu1604-test-system-setup.sh /setup/system-setup.sh
-RUN           bash /setup/system-setup.sh
-
-# Add wrapper scripts for xvfb allowing tasks to easily retry starting up xvfb
-# %include taskcluster/docker/recipes/xvfb.sh
-ADD topsrcdir/taskcluster/docker/recipes/xvfb.sh /home/worker/scripts/xvfb.sh
-
-# %include taskcluster/docker/recipes/run-task
-ADD topsrcdir/taskcluster/docker/recipes/run-task /home/worker/bin/run-task
-
-# %include taskcluster/scripts/tester/test-ubuntu.sh
-ADD topsrcdir/taskcluster/scripts/tester/test-ubuntu.sh /home/worker/bin/test-linux.sh
-
-# This will create a host mounted filesystem when the cache is stripped
-# on Try. This cancels out some of the performance losses of aufs. See
-# bug 1291940.
-VOLUME /home/worker/hg-shared
-VOLUME /home/worker/checkouts
-VOLUME /home/worker/workspace
-
-# Set variable normally configured at login, by the shells parent process, these
-# are taken from GNU su manual
-ENV           HOME          /home/worker
-ENV           SHELL         /bin/bash
-ENV           USER          worker
-ENV           LOGNAME       worker
-ENV           HOSTNAME      taskcluster-worker
-ENV           LANG          en_US.UTF-8
-ENV           LC_ALL        en_US.UTF-8
-
-# Add utilities and configuration
-COPY           dot-files/config              /home/worker/.config
-COPY           dot-files/pulse               /home/worker/.pulse
-COPY           bin                           /home/worker/bin
-RUN            chmod +x bin/*
-# TODO: remove this when buildbot is gone
-COPY           buildprops.json               /home/worker/buildprops.json
-COPY           tc-vcs-config.yml /etc/taskcluster-vcs.yml
-
-# TODO: remove
-ADD            https://raw.githubusercontent.com/taskcluster/buildbot-step/master/buildbot_step /home/worker/bin/buildbot_step
-RUN chmod u+x /home/worker/bin/buildbot_step
-
-# TODO: remove
-ADD            https://s3-us-west-2.amazonaws.com/test-caching/packages/linux64-stackwalk /usr/local/bin/linux64-minidump_stackwalk
-RUN chmod +x /usr/local/bin/linux64-minidump_stackwalk
-
-# allow the worker user to access video devices
-RUN usermod -a -G video worker
-
-RUN mkdir Documents; mkdir Pictures; mkdir Music; mkdir Videos; mkdir artifacts
-
-# install a new enough npm, plus tc-vcs and tc-npm-cache
-RUN npm install -g npm@^2.0.0 \
- && npm install -g taskcluster-vcs@2.3.12 \
- && npm install -g taskcluster-npm-cache@1.1.14 \
- && rm -rf ~/.npm
-ENV PATH $PATH:/home/worker/bin
-
-# TODO Re-enable worker when bug 1093833 lands
-#USER          worker
-
-# clean up
-RUN rm -Rf .cache && mkdir -p .cache
-
-# Disable Ubuntu update prompt
-# http://askubuntu.com/questions/515161/ubuntu-12-04-disable-release-notification-of-14-04-in-update-manager
-ADD release-upgrades /etc/update-manager/release-upgrades
-
-# Disable tools with on-login popups that interfere with tests; see bug 1240084 and bug 984944.
-ADD jockey-gtk.desktop deja-dup-monitor.desktop /etc/xdg/autostart/
-
-# In test.sh we accept START_VNC to start a vnc daemon.
-# Exposing this port allows it to work.
-EXPOSE 5900
-
-# This helps not forgetting setting DISPLAY=:0 when running
-# tests outside of test.sh
-ENV DISPLAY :0
-
-# Disable apport (Ubuntu app crash reporter) to avoid stealing focus from test runs
-ADD apport /etc/default/apport
-
-# Disable font antialiasing for now to match releng's setup
-ADD fonts.conf /home/worker/.fonts.conf
-
-# Set up first-run experience for interactive mode
-ADD motd /etc/taskcluster-motd
-ADD taskcluster-interactive-shell /bin/taskcluster-interactive-shell
-RUN chmod +x /bin/taskcluster-interactive-shell
-
-RUN chown -R worker:worker /home/worker
-
-# Set a default command useful for debugging
-CMD ["/bin/bash", "--login"]
deleted file mode 100644
--- a/taskcluster/docker/desktop1604-test/dot-files/config/pip/pip.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-[global]
-disable-pip-version-check = true
deleted file mode 100644
--- a/taskcluster/docker/desktop1604-test/dot-files/config/user-dirs.locale
+++ /dev/null
@@ -1,1 +0,0 @@
-en_US
deleted file mode 100644
--- a/taskcluster/docker/desktop1604-test/dot-files/pulse/default.pa
+++ /dev/null
@@ -1,164 +0,0 @@
-#!/usr/bin/pulseaudio -nF
-#
-# This file is part of PulseAudio.
-#
-# PulseAudio is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# PulseAudio is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with PulseAudio; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
-
-# This startup script is used only if PulseAudio is started per-user
-# (i.e. not in system mode)
-
-.nofail
-
-### Load something into the sample cache
-#load-sample-lazy x11-bell /usr/share/sounds/gtk-events/activate.wav
-#load-sample-lazy pulse-hotplug /usr/share/sounds/startup3.wav
-#load-sample-lazy pulse-coldplug /usr/share/sounds/startup3.wav
-#load-sample-lazy pulse-access /usr/share/sounds/generic.wav
-
-.fail
-
-### Automatically restore the volume of streams and devices
-load-module module-device-restore
-load-module module-stream-restore
-load-module module-card-restore
-
-### Automatically augment property information from .desktop files
-### stored in /usr/share/application
-load-module module-augment-properties
-
-### Load audio drivers statically
-### (it's probably better to not load these drivers manually, but instead
-### use module-udev-detect -- see below -- for doing this automatically)
-#load-module module-alsa-sink
-#load-module module-alsa-source device=hw:1,0
-#load-module module-oss device="/dev/dsp" sink_name=output source_name=input
-#load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
-#load-module module-null-sink
-#load-module module-pipe-sink
-
-### Automatically load driver modules depending on the hardware available
-.ifexists module-udev-detect.so
-load-module module-udev-detect
-.else
-### Use the static hardware detection module (for systems that lack udev/hal support)
-load-module module-detect
-.endif
-
-### Automatically connect sink and source if JACK server is present
-.ifexists module-jackdbus-detect.so
-.nofail
-load-module module-jackdbus-detect
-.fail
-.endif
-
-### Automatically load driver modules for Bluetooth hardware
-# This module causes a pulseaudio startup failure on "gecko-tester"
-#.ifexists module-bluetooth-discover.so
-#load-module module-bluetooth-discover
-#.endif
-
-### Load several protocols
-.ifexists module-esound-protocol-unix.so
-load-module module-esound-protocol-unix
-.endif
-load-module module-native-protocol-unix
-
-### Network access (may be configured with paprefs, so leave this commented
-### here if you plan to use paprefs)
-#load-module module-esound-protocol-tcp
-#load-module module-native-protocol-tcp
-#load-module module-zeroconf-publish
-
-### Load the RTP receiver module (also configured via paprefs, see above)
-#load-module module-rtp-recv
-
-### Load the RTP sender module (also configured via paprefs, see above)
-#load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 sink_properties="device.description='RTP Multicast Sink'"
-#load-module module-rtp-send source=rtp.monitor
-
-### Load additional modules from GConf settings. This can be configured with the paprefs tool.
-### Please keep in mind that the modules configured by paprefs might conflict with manually
-### loaded modules.
-.ifexists module-gconf.so
-.nofail
-load-module module-gconf
-.fail
-.endif
-
-### Automatically restore the default sink/source when changed by the user
-### during runtime
-### NOTE: This should be loaded as early as possible so that subsequent modules
-### that look up the default sink/source get the right value
-load-module module-default-device-restore
-
-### Automatically move streams to the default sink if the sink they are
-### connected to dies, similar for sources
-load-module module-rescue-streams
-
-### Make sure we always have a sink around, even if it is a null sink.
-load-module module-always-sink
-
-### Honour intended role device property
-load-module module-intended-roles
-
-### Automatically suspend sinks/sources that become idle for too long
-load-module module-suspend-on-idle
-
-### If autoexit on idle is enabled we want to make sure we only quit
-### when no local session needs us anymore.
-# This module causes a pulseaudio startup failure on "gecko-tester"
-#.ifexists module-console-kit.so
-#load-module module-console-kit
-#.endif
-
-### Enable positioned event sounds
-load-module module-position-event-sounds
-
-### Cork music streams when a phone stream is active
-#load-module module-cork-music-on-phone
-
-### Modules to allow autoloading of filters (such as echo cancellation)
-### on demand. module-filter-heuristics tries to determine what filters
-### make sense, and module-filter-apply does the heavy-lifting of
-### loading modules and rerouting streams.
-load-module module-filter-heuristics
-load-module module-filter-apply
-
-### Load DBus protocol
-#.ifexists module-dbus-protocol.so
-#load-module module-dbus-protocol
-#.endif
-
-# X11 modules should not be started from default.pa so that one daemon
-# can be shared by multiple sessions.
-
-### Load X11 bell module
-#load-module module-x11-bell sample=bell-windowing-system
-
-### Register ourselves in the X11 session manager
-#load-module module-x11-xsmp
-
-### Publish connection data in the X11 root window
-#.ifexists module-x11-publish.so
-#.nofail
-#load-module module-x11-publish
-#.fail
-#.endif
-
-load-module module-switch-on-port-available
-
-### Make some devices default
-#set-default-sink output
-#set-default-source input
deleted file mode 100644
--- a/taskcluster/docker/desktop1604-test/tc-vcs-config.yml
+++ /dev/null
@@ -1,40 +0,0 @@
-# Default configuration used by the tc-vs tools these can be overridden by
-# passing the config you wish to use over the command line...
-git: git
-hg: hg
-
-repoCache:
-  # Repo url to clone when running repo init..
-  repoUrl: https://gerrit.googlesource.com/git-repo.git
-  # Version of repo to utilize...
-  repoRevision: master
-  # The root where all downloaded cache files are stored on the local machine...
-  cacheDir: '{{env.HOME}}/.tc-vcs-repo/'
-  # Name/prefixed used as part of the base url.
-  cacheName: sources/{{name}}.tar.gz
-  # Command used to upload the tarball
-  uploadTar: "curl --header 'Content-Type: application/x-tar' --header 'Content-Encoding: gzip' -X PUT --data-binary @'{{source}}' '{{url}}'"
-  # Large http get requests are often slower using nodes built in http layer so
-  # we utilize a subprocess which is responsible for fetching...
-  get: curl --connect-timeout 30 --speed-limit 500000 -L -o {{dest}} {{url}}
-  # Used to create clone tarball
-  compress: tar -czf {{dest}} {{source}}
-  # All cache urls use tar + gz this is the command used to extract those files
-  # downloaded by the "get" command.
-  extract: tar -x -z -C {{dest}} -f {{source}}
-
-cloneCache:
-  # The root where all downloaded cache files are stored on the local machine...
-  cacheDir: '{{env.HOME}}/.tc-vcs/'
-  # Command used to upload the tarball
-  uploadTar: "curl --header 'Content-Type: application/x-tar' --header 'Content-Encoding: gzip' -X PUT --data-binary @'{{source}}' '{{url}}'"
-  # Large http get requests are often slower using nodes built in http layer so
-  # we utilize a subprocess which is responsible for fetching...
-  get: curl --connect-timeout 30 --speed-limit 500000 -L -o {{dest}} {{url}}
-  # Used to create clone tarball
-  compress: tar -czf {{dest}} {{source}}
-  # All cache urls use tar + gz this is the command used to extract those files
-  # downloaded by the "get" command.
-  extract: tar -x -z --strip-components 1 -C {{dest}} -f {{source}}
-  # Name/prefixed used as part of the base url.
-  cacheName: clones/{{name}}.tar.gz
deleted file mode 100644
--- a/taskcluster/docker/desktop1604-test/tester.env
+++ /dev/null
@@ -1,4 +0,0 @@
-GAIA_REV=tip
-GAIA_REF=tip
-GAIA_BASE_REPOSITORY=https://hg.mozilla.org/integration/gaia-central
-GAIA_HEAD_REPOSITORY=https://hg.mozilla.org/integration/gaia-central
deleted file mode 100644
--- a/taskcluster/docker/image_builder/REGISTRY
+++ /dev/null
@@ -1,1 +0,0 @@
-taskcluster
deleted file mode 100644
--- a/taskcluster/docker/lint/Dockerfile
+++ /dev/null
@@ -1,31 +0,0 @@
-FROM          ubuntu:16.04
-MAINTAINER    Andrew Halberstadt <ahalberstadt@mozilla.com>
-
-RUN useradd -d /home/worker -s /bin/bash -m worker
-WORKDIR /home/worker
-
-RUN mkdir /build
-# %include taskcluster/docker/recipes/tooltool.py
-ADD topsrcdir/taskcluster/docker/recipes/tooltool.py /build/tooltool.py
-
-# %include taskcluster/docker/recipes/install-mercurial.sh
-ADD topsrcdir/taskcluster/docker/recipes/install-mercurial.sh /build/install-mercurial.sh
-ADD system-setup.sh /tmp/system-setup.sh
-RUN bash /tmp/system-setup.sh
-
-# %include taskcluster/docker/recipes/run-task
-ADD topsrcdir/taskcluster/docker/recipes/run-task /home/worker/bin/run-task
-RUN chown -R worker:worker /home/worker/bin && chmod 755 /home/worker/bin/*
-
-# Set variable normally configured at login, by the shells parent process, these
-# are taken from GNU su manual
-ENV           HOME          /home/worker
-ENV           SHELL         /bin/bash
-ENV           USER          worker
-ENV           LOGNAME       worker
-ENV           HOSTNAME      taskcluster-worker
-ENV           LANG          en_US.UTF-8
-ENV           LC_ALL        en_US.UTF-8
-
-# Set a default command useful for debugging
-CMD ["/bin/bash", "--login"]
deleted file mode 100644
--- a/taskcluster/docker/phone-builder/Dockerfile
+++ /dev/null
@@ -1,17 +0,0 @@
-FROM          taskcluster/builder:0.5.13
-MAINTAINER    Wander Lairson Costa <wcosta@mozilla.com>
-
-# Add utilities and configuration
-ADD           bin                   /home/worker/bin
-
-# Builds need the share module enabled
-ADD           hgrc /home/worker/.hgrc
-RUN chown -R worker:worker /home/worker/.hgrc
-
-# Make sure we use our own config
-COPY          tc-vcs-config.yml /etc/taskcluster-vcs.yml
-
-RUN           yum install -y bc lzop java-1.7.0-openjdk
-RUN           pip install awscli
-RUN           npm install -g bower gulp apm grunt-cli
-
deleted file mode 100755
--- a/taskcluster/docker/phone-builder/bin/validate_task.py
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/usr/bin/env python
-
-from __future__ import print_function
-import os
-import os.path
-import json
-import urllib2
-import sys
-import re
-import subprocess
-
-repo_matcher = re.compile(r'[a-z]+://(hg|git)\.mozilla\.org')
-
-
-def get_task(taskid):
-    return json.load(
-        urllib2.urlopen('https://queue.taskcluster.net/v1/task/' + taskid))
-
-
-def check_task(task):
-    payload = task['payload']
-
-    if 'GECKO_HEAD_REPOSITORY' not in payload['env']:
-        print('Task has no head gecko repository', file=sys.stderr)
-        return -1
-
-    repo = payload['env']['GECKO_HEAD_REPOSITORY']
-    # if it is not a mozilla repository, fail
-    if not repo_matcher.match(repo):
-        print('Invalid head repository', repo, file=sys.stderr)
-        return -1
-
-    if 'GECKO_BASE_REPOSITORY' not in payload['env']:
-        print('Task has no base gecko repository', file=sys.stderr)
-        return -1
-
-    repo = payload['env']['GECKO_BASE_REPOSITORY']
-    if not repo_matcher.match(repo):
-        print('Invalid base repository', repo, file=sys.stderr)
-        return -1
-
-    locations = task["extra"]["locations"]
-    if "img" in locations:
-        img = locations["img"]
-        if img.startswith("public"):
-            print('Cannot upload images to public', file=sys.stderr)
-            return -1
-
-    return 0
-
-
-def main():
-    taskid = os.getenv('TASK_ID')
-
-    # If the task id is None, we assume we are running docker locally
-    if taskid is not None:
-        task = get_task(taskid)
-        ret = check_task(task)
-        if ret != 0:
-            return ret
-
-    if len(sys.argv) > 1:
-        try:
-            return subprocess.call(sys.argv[1:], shell=True)
-        except subprocess.CalledProcessError as e:
-            return e.returncode
-
-    return 0
-
-
-if __name__ == '__main__':
-    sys.exit(main())
deleted file mode 100644
--- a/taskcluster/docker/phone-builder/hgrc
+++ /dev/null
@@ -1,4 +0,0 @@
-[extensions]
-share =
-[ui]
-username = TaskCluster <nobody@mozilla.org>
deleted file mode 100644
--- a/taskcluster/docker/phone-builder/tc-vcs-config.yml
+++ /dev/null
@@ -1,40 +0,0 @@
-# Default configuration used by the tc-vs tools these can be overridden by
-# passing the config you wish to use over the command line...
-git: git
-hg: hg
-
-repoCache:
-  # Repo url to clone when running repo init..
-  repoUrl: https://gerrit.googlesource.com/git-repo.git
-  # Version of repo to utilize...
-  repoRevision: master
-  # The root where all downloaded cache files are stored on the local machine...
-  cacheDir: '{{env.HOME}}/.tc-vcs-repo/'
-  # Name/prefixed used as part of the base url.
-  cacheName: sources/{{name}}.tar.gz
-  # Command used to upload the tarball
-  uploadTar: "curl --retry 5 --fail --header 'Content-Type: application/x-tar' --header 'Content-Encoding: gzip' -X PUT --data-binary @'{{source}}' '{{url}}'"
-  # Large http get requests are often slower using nodes built in http layer so
-  # we utilize a subprocess which is responsible for fetching...
-  get: curl --retry 5 --fail -L -o {{dest}} {{url}}
-  # Used to create clone tarball
-  compress: tar -czf {{dest}} {{source}}
-  # All cache urls use tar + gz this is the command used to extract those files
-  # downloaded by the "get" command.
-  extract: tar -x -z -C {{dest}} -f {{source}}
-
-cloneCache:
-  # The root where all downloaded cache files are stored on the local machine...
-  cacheDir: '{{env.HOME}}/.tc-vcs/'
-  # Command used to upload the tarball
-  uploadTar: "curl --retry 5 --fail --header 'Content-Type: application/x-tar' --header 'Content-Encoding: gzip' -X PUT --data-binary @'{{source}}' '{{url}}'"
-  # Large http get requests are often slower using nodes built in http layer so
-  # we utilize a subprocess which is responsible for fetching...
-  get: curl --retry 5 --fail -L -o {{dest}} {{url}}
-  # Used to create clone tarball
-  compress: tar -czf {{dest}} {{source}}
-  # All cache urls use tar + gz this is the command used to extract those files
-  # downloaded by the "get" command.
-  extract: tar -x -z --strip-components 1 -C {{dest}} -f {{source}}
-  # Name/prefixed used as part of the base url.
-  cacheName: clones/{{name}}.tar.gz
deleted file mode 100644
--- a/taskcluster/docker/phone-builder/tests/invalid_base_repo.yml
+++ /dev/null
@@ -1,50 +0,0 @@
-taskId: 1
-task:
-  metadata:
-    source: http://todo.com/soon
-    owner: user@domain.com
-    name: B2G Emulator
-    description: B2G Emulator
-
-  workerType: b2gbuild
-  provisionerId: aws-provisioner
-
-  scopes:
-    - 'docker-worker:cache:build-emulator-objects'
-    - 'docker-worker:image:quay.io/mozilla/phone-builder:0.0.1'
-
-  payload:
-    cache:
-      build-emulator-objects: '/home/worker/object-folder-flame-kk-1'
-
-    env:
-      TARGET: 'flame-kk'
-      B2G_DEBUG: '1'
-      # revision/project params defined originally here https://github.com/taskcluster/taskcluster-try/blob/master/try/instantiate.js
-      REVISION: 'tip'
-      GECKO_HEAD_REPOSITORY: 'http://hg.mozilla.org/mozilla-central'
-      GECKO_BASE_REPOSITORY: 'git@github.com:mozilla/gecko-dev.git'
-
-    image: 'quay.io/mozilla/phone-builder:0.0.1'
-    maxRunTime: 14400
-
-    command:
-      - build-phone.sh
-
-    artifacts:
-      'private/build':
-        type: directory
-        path: '/home/worker/artifacts/'
-
-  extra:
-    # Rather then enforcing particular conventions we require that all build
-    # tasks provide the "build" extra field to specify where the build and tests
-    # files are located.
-    locations:
-      build: 'private/build/emulator.tar.gz'
-      tests: 'private/build/b2g-tests.zip'
-      symbols: 'private/build/b2g-crashreporter-symbols.zip'
-      sources: 'private/build/sources.xml'
-
-    treeherder:
-      symbol: B
deleted file mode 100644
--- a/taskcluster/docker/phone-builder/tests/invalid_head_repo.yml
+++ /dev/null
@@ -1,50 +0,0 @@
-taskId: 1
-task:
-  metadata:
-    source: http://todo.com/soon
-    owner: user@domain.com
-    name: B2G Emulator
-    description: B2G Emulator
-
-  workerType: b2gbuild
-  provisionerId: aws-provisioner
-
-  scopes:
-    - 'docker-worker:cache:build-emulator-objects'
-    - 'docker-worker:image:quay.io/mozilla/phone-builder:0.0.1'
-
-  payload:
-    cache:
-      build-emulator-objects: '/home/worker/object-folder-flame-kk-1'
-
-    env:
-      TARGET: 'flame-kk'
-      B2G_DEBUG: '1'
-      # revision/project params defined originally here https://github.com/taskcluster/taskcluster-try/blob/master/try/instantiate.js
-      REVISION: 'tip'
-      GECKO_HEAD_REPOSITORY: 'git@github.com:mozilla/gecko-dev.git'
-      GECKO_BASE_REPOSITORY: 'http://hg.mozilla.org/mozilla-central'
-
-    image: 'quay.io/mozilla/phone-builder:0.0.1'
-    maxRunTime: 14400
-
-    command:
-      - build-phone.sh
-
-    artifacts:
-      'private/build':
-        type: directory
-        path: '/home/worker/artifacts/'
-
-  extra:
-    # Rather then enforcing particular conventions we require that all build
-    # tasks provide the "build" extra field to specify where the build and tests
-    # files are located.
-    locations:
-      build: 'private/build/emulator.tar.gz'
-      tests: 'private/build/b2g-tests.zip'
-      symbols: 'private/build/b2g-crashreporter-symbols.zip'
-      sources: 'private/build/sources.xml'
-
-    treeherder:
-      symbol: B
deleted file mode 100644
--- a/taskcluster/docker/phone-builder/tests/public.yml
+++ /dev/null
@@ -1,50 +0,0 @@
-taskId: 1
-task:
-  metadata:
-    source: http://todo.com/soon
-    owner: user@domain.com
-    name: B2G Emulator
-    description: B2G Emulator
-
-  workerType: b2gbuild
-  provisionerId: aws-provisioner
-
-  scopes:
-    - 'docker-worker:cache:build-emulator-objects'
-    - 'docker-worker:image:quay.io/mozilla/phone-builder:0.0.1'
-
-  payload:
-    cache:
-      build-emulator-objects: '/home/worker/object-folder-flame-kk-1'
-
-    env:
-      TARGET: 'flame-kk'
-      B2G_DEBUG: '1'
-      # revision/project params defined originally here https://github.com/taskcluster/taskcluster-try/blob/master/try/instantiate.js
-      REVISION: 'tip'
-      GECKO_HEAD_REPOSITORY: 'http://hg.mozilla.org/mozilla-central'
-      GECKO_BASE_REPOSITORY: 'http://hg.mozilla.org/mozilla-central'
-
-    image: 'quay.io/mozilla/phone-builder:0.0.1'
-    maxRunTime: 14400
-
-    command:
-      - build-phone.sh
-
-    artifacts:
-      'public/build':
-        type: directory
-        path: '/home/worker/artifacts/'
-
-  extra:
-    # Rather then enforcing particular conventions we require that all build
-    # tasks provide the "build" extra field to specify where the build and tests
-    # files are located.
-    locations:
-      build: 'public/build/emulator.tar.gz'
-      tests: 'public/build/b2g-tests.zip'
-      symbols: 'public/build/b2g-crashreporter-symbols.zip'
-      sources: 'public/build/sources.xml'
-
-    treeherder:
-      symbol: B
deleted file mode 100755
--- a/taskcluster/docker/phone-builder/tests/test_validation.py
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/env python
-
-import unittest
-import sys
-import yaml
-
-from validate_task import check_task
-sys.path.append('../bin')
-
-
-def load_task(task_file):
-    content = open(task_file, 'r')
-    return yaml.load(content)['task']
-
-
-class TaskValidationTest(unittest.TestCase):
-    def test_valid_task(self):
-        task = load_task('valid.yml')
-        self.assertEquals(check_task(task), 0)
-
-    def test_invalid_base_repo(self):
-        task = load_task('invalid_base_repo.yml')
-        self.assertEquals(check_task(task), -1)
-
-    def test_invalid_head_repo(self):
-        task = load_task('invalid_head_repo.yml')
-        self.assertEquals(check_task(task), -1)
-
-    def test_public_artifact(self):
-        task = load_task('public.yml')
-        self.assertEquals(check_task(task), -1)
-
-
-if __name__ == '__main__':
-    unittest.main()
deleted file mode 100644
--- a/taskcluster/docker/phone-builder/tests/valid.yml
+++ /dev/null
@@ -1,53 +0,0 @@
-taskId: 1
-task:
-  metadata:
-    source: http://todo.com/soon
-    owner: user@domain.com
-    name: B2G flame-kk opt
-    description: B2G flame-kk opt
-
-  workerType: b2gbuild
-  provisionerId: aws-provisioner
-
-  scopes:
-    - 'docker-worker:cache:build-phone-objects'
-    - 'docker-worker:image:{{#docker_image}}phone-builder{{/docker_image}}'
-
-  payload:
-    cache:
-      build-phone-objects: '/home/worker/object-folder-flame-kk-1'
-
-    env:
-      TARGET: 'flame-kk'
-      B2G_DEBUG: '1'
-      # revision/project params defined originally here https://github.com/taskcluster/taskcluster-try/blob/master/try/instantiate.js
-      REVISION: 'tip'
-      GECKO_HEAD_REPOSITORY: 'http://hg.mozilla.org/mozilla-central'
-      GECKO_BASE_REPOSITORY: 'http://hg.mozilla.org/mozilla-central'
-
-    image: '{{#docker_image}}phone-builder{{/docker_image}}'
-    maxRunTime: 14400
-
-    command:
-      - build-phone.sh
-
-    artifacts:
-      'private/build':
-        type: directory
-        path: '/home/worker/artifacts/'
-        expires:
-          relative-datestamp: '1 year'
-
-  extra:
-    # Rather then enforcing particular conventions we require that all build
-    # tasks provide the "build" extra field to specify where the build and tests
-    # files are located.
-    locations:
-      build: 'private/build/b2g-android-arm.tar.gz'
-      img: 'private/build/flame-kk.zip'
-      tests: 'private/build/gaia.zip'
-      symbols: 'private/build/b2g-crashreporter-symbols.zip'
-      sources: 'private/build/sources.xml'
-
-    treeherder:
-      symbol: B
--- a/taskcluster/taskgraph/task/docker_image.py
+++ b/taskcluster/taskgraph/task/docker_image.py
@@ -57,17 +57,17 @@ class DockerImageTask(base.Task):
             'level': params['level'],
             'source': '{repo}file/{rev}/taskcluster/ci/docker-image/image.yml'
                       .format(repo=params['head_repository'], rev=params['head_rev']),
         }
 
         tasks = []
         templates = Templates(path)
         for image_name in config['images']:
-            context_path = os.path.join('taskcluster', 'docker', image_name)
+            context_path = os.path.join('testing', 'docker', image_name)
 
             image_parameters = dict(parameters)
             image_parameters['context_path'] = context_path
             image_parameters['artifact_path'] = 'public/image.tar'
             image_parameters['image_name'] = image_name
 
             image_artifact_path = \
                 "public/docker_image_contexts/{}/context.tar.gz".format(image_name)
--- a/taskcluster/taskgraph/transforms/task.py
+++ b/taskcluster/taskgraph/transforms/task.py
@@ -146,17 +146,17 @@ task_description_schema = Schema({
 
         # For tasks that will run in docker-worker or docker-engine, this is the
         # name of the docker image or in-tree docker image to run the task in.  If
         # in-tree, then a dependency will be created automatically.  This is
         # generally `desktop-test`, or an image that acts an awful lot like it.
         Required('docker-image'): Any(
             # a raw Docker image path (repo/image:tag)
             basestring,
-            # an in-tree generated docker image (from `taskcluster/docker/<name>`)
+            # an in-tree generated docker image (from `testing/docker/<name>`)
             {'in-tree': basestring}
         ),
 
         # worker features that should be enabled
         Required('relengapi-proxy', default=False): bool,
         Required('chainOfTrust', default=False): bool,
         Required('taskcluster-proxy', default=False): bool,
         Required('allow-ptrace', default=False): bool,
--- a/taskcluster/taskgraph/transforms/tests/test_description.py
+++ b/taskcluster/taskgraph/transforms/tests/test_description.py
@@ -114,17 +114,17 @@ test_description_schema = Schema({
 
     # For tasks that will run in docker-worker or docker-engine, this is the
     # name of the docker image or in-tree docker image to run the task in.  If
     # in-tree, then a dependency will be created automatically.  This is
     # generally `desktop-test`, or an image that acts an awful lot like it.
     Required('docker-image', default={'in-tree': 'desktop-test'}): Any(
         # a raw Docker image path (repo/image:tag)
         basestring,
-        # an in-tree generated docker image (from `taskcluster/docker/<name>`)
+        # an in-tree generated docker image (from `testing/docker/<name>`)
         {'in-tree': basestring}
     ),
 
     # seconds of runtime after which the task will be killed.  Like 'chunks',
     # this can be keyed by test pltaform.
     Required('max-run-time', default=3600): Any(
         int,
         {'by-test-platform': {basestring: int}},
--- a/taskcluster/taskgraph/util/docker.py
+++ b/taskcluster/taskgraph/util/docker.py
@@ -12,17 +12,17 @@ import tarfile
 import tempfile
 
 from mozpack.archive import (
     create_tar_gz_from_files,
 )
 
 
 GECKO = os.path.realpath(os.path.join(__file__, '..', '..', '..', '..'))
-DOCKER_ROOT = os.path.join(GECKO, 'taskcluster', 'docker')
+DOCKER_ROOT = os.path.join(GECKO, 'testing', 'docker')
 ARTIFACT_URL = 'https://queue.taskcluster.net/v1/task/{}/artifacts/{}'
 
 
 def docker_image(name, default_version=None):
     '''Determine the docker image name, including repository and tag, from an
     in-tree docker file.'''
     try:
         with open(os.path.join(DOCKER_ROOT, name, 'REGISTRY')) as f:
rename from taskcluster/docker/README.md
rename to testing/docker/README.md
rename from taskcluster/docker/REGISTRY
rename to testing/docker/REGISTRY
new file mode 100644
--- /dev/null
+++ b/testing/docker/android-gradle-build/Dockerfile
@@ -0,0 +1,97 @@
+# TODO remove VOLUME below when the base image is updated next.
+FROM          taskcluster/centos6-build-upd:0.1.6.20160329195300
+MAINTAINER    Nick Alexander <nalexander@mozilla.com>
+
+# BEGIN ../desktop-build/Dockerfile
+
+# TODO remove when base image is updated
+VOLUME /home/worker/workspace
+VOLUME /home/worker/tooltool-cache
+
+# Add build scripts; these are the entry points from the taskcluster worker, and
+# operate on environment variables
+ADD             bin /home/worker/bin
+RUN             chmod +x /home/worker/bin/*
+
+# Add wrapper scripts for xvfb allowing tasks to easily retry starting up xvfb
+# %include testing/docker/recipes/xvfb.sh
+ADD topsrcdir/testing/docker/recipes/xvfb.sh /home/worker/scripts/xvfb.sh
+
+# Add configuration
+COPY            dot-config                    /home/worker/.config
+
+# Generate machine uuid file
+RUN dbus-uuidgen --ensure=/var/lib/dbus/machine-id
+
+# Stubbed out credentials; mozharness looks for this file an issues a WARNING
+# if it's not found, which causes the build to fail.  Note that this needs to
+# be in the parent of the workspace directory and in the directory where
+# mozharness is run (not its --work-dir).  See Bug 1169652.
+ADD           oauth.txt /home/worker/
+
+# stubbed out buildprops, which keeps mozharness from choking
+# Note that this needs to be in the parent of the workspace directory and in
+# the directory where mozharness is run (not its --work-dir)
+ADD           buildprops.json /home/worker/
+
+# install tooltool directly from github where tooltool_wrapper.sh et al. expect
+# to find it
+RUN wget -O /builds/tooltool.py https://raw.githubusercontent.com/mozilla/build-tooltool/master/tooltool.py
+RUN chmod +x /builds/tooltool.py
+
+# END ../desktop-build/Dockerfile
+
+# Reset user/workdir from parent image so we can install software.
+WORKDIR /
+USER root
+
+# Update base.
+RUN yum upgrade -y
+
+# Install JDK and Sonatype Nexus.  Cribbed directly from
+# https://github.com/sonatype/docker-nexus/blob/fffd2c61b2368292040910c055cf690c8e76a272/oss/Dockerfile.
+
+# Install the screen package here to use with xvfb.
+# Move installation to base centos6-build image once Bug 1272629 is fixed
+RUN yum install -y \
+  createrepo \
+  curl \
+  java-1.7.0-openjdk-devel \
+  java-1.7.0-openjdk \
+  screen \
+  sudo \
+  tar \
+  unzip \
+  wget \
+  zip \
+  && yum clean all
+
+ENV NEXUS_VERSION 2.12.0-01
+ENV NEXUS_SHA1SUM 1a9aaad8414baffe0a2fd46eed1f41b85f4049e6
+
+RUN mkdir -p /opt/sonatype/nexus
+
+WORKDIR /tmp
+RUN curl --fail --silent --location --retry 3 \
+    https://download.sonatype.com/nexus/oss/nexus-${NEXUS_VERSION}-bundle.tar.gz \
+    -o /tmp/nexus-${NEXUS_VERSION}-bundle.tar.gz
+
+# Observe the two spaces below.  Seriously.
+RUN echo "${NEXUS_SHA1SUM}  nexus-${NEXUS_VERSION}-bundle.tar.gz" > nexus-${NEXUS_VERSION}-bundle.tar.gz.sha1
+RUN sha1sum --check nexus-${NEXUS_VERSION}-bundle.tar.gz.sha1
+
+RUN tar zxf nexus-${NEXUS_VERSION}-bundle.tar.gz \
+  && mv /tmp/nexus-${NEXUS_VERSION}/* /opt/sonatype/nexus/ \
+  && rm -rf /tmp/nexus-${NEXUS_VERSION} \
+  && rm -rf /tmp/nexus-${NEXUS_VERSION}-bundle.tar.gz
+
+# Install tooltool directly from github.
+RUN mkdir /build
+ADD https://raw.githubusercontent.com/mozilla/build-tooltool/master/tooltool.py /build/tooltool.py
+RUN chmod +rx /build/tooltool.py
+
+# Back to the centos6-build workdir, matching desktop-build.
+WORKDIR /home/worker
+
+# Set a default command useful for debugging
+CMD ["/bin/bash", "--login"]
rename from taskcluster/docker/android-gradle-build/README.md
rename to testing/docker/android-gradle-build/README.md
new file mode 100644
--- /dev/null
+++ b/testing/docker/android-gradle-build/REGISTRY
@@ -0,0 +1,1 @@
+taskcluster
rename from taskcluster/docker/android-gradle-build/VERSION
rename to testing/docker/android-gradle-build/VERSION
rename from taskcluster/docker/android-gradle-build/bin/after.sh
rename to testing/docker/android-gradle-build/bin/after.sh
rename from taskcluster/docker/android-gradle-build/bin/before.sh
rename to testing/docker/android-gradle-build/bin/before.sh
rename from taskcluster/docker/android-gradle-build/bin/build.sh
rename to testing/docker/android-gradle-build/bin/build.sh
new file mode 100644
--- /dev/null
+++ b/testing/docker/android-gradle-build/bin/checkout-script.sh
@@ -0,0 +1,17 @@
+#! /bin/bash -vex
+
+set -x -e
+
+# Inputs, with defaults
+
+: GECKO_HEAD_REPOSITORY              ${GECKO_HEAD_REPOSITORY:=https://hg.mozilla.org/mozilla-central}
+: GECKO_HEAD_REV                ${GECKO_HEAD_REV:=default}
+
+: SCRIPT_DOWNLOAD_PATH          ${SCRIPT_DOWNLOAD_PATH:=$PWD}
+: SCRIPT_PATH                   ${SCRIPT_PATH:?"script path must be set"}
+set -v
+
+# download script from the gecko repository
+url=${GECKO_HEAD_REPOSITORY}/raw-file/${GECKO_HEAD_REV}/${SCRIPT_PATH}
+wget --directory-prefix=${SCRIPT_DOWNLOAD_PATH} $url
+chmod +x `basename ${SCRIPT_PATH}`
rename from taskcluster/docker/android-gradle-build/bin/checkout-sources.sh
rename to testing/docker/android-gradle-build/bin/checkout-sources.sh
new file mode 100644
--- /dev/null
+++ b/testing/docker/android-gradle-build/buildprops.json
@@ -0,0 +1,9 @@
+{
+  "properties": {
+    "buildername": ""
+  },
+  "sourcestamp": {
+    "changes": []
+  },
+  "comments": "TaskCluster Job"
+}
new file mode 100644
--- /dev/null
+++ b/testing/docker/android-gradle-build/oauth.txt
@@ -0,0 +1,2 @@
+taskcluster_clientId = None
+taskcluster_accessToken = None
rename from taskcluster/docker/base-build/Dockerfile
rename to testing/docker/base-build/Dockerfile
rename from taskcluster/docker/base-build/VERSION
rename to testing/docker/base-build/VERSION
rename from taskcluster/docker/base-build/system-setup.sh
rename to testing/docker/base-build/system-setup.sh
rename from taskcluster/docker/base-test/Dockerfile
rename to testing/docker/base-test/Dockerfile
new file mode 100644
--- /dev/null
+++ b/testing/docker/base-test/REGISTRY
@@ -0,0 +1,1 @@
+taskcluster
rename from taskcluster/docker/base-test/VERSION
rename to testing/docker/base-test/VERSION
rename from taskcluster/docker/base-test/sources.list
rename to testing/docker/base-test/sources.list
rename from taskcluster/docker/centos6-build-upd/Dockerfile
rename to testing/docker/centos6-build-upd/Dockerfile
new file mode 100644
--- /dev/null
+++ b/testing/docker/centos6-build-upd/REGISTRY
@@ -0,0 +1,1 @@
+taskcluster
rename from taskcluster/docker/centos6-build-upd/VERSION
rename to testing/docker/centos6-build-upd/VERSION
rename from taskcluster/docker/centos6-build/Dockerfile
rename to testing/docker/centos6-build/Dockerfile
new file mode 100644
--- /dev/null
+++ b/testing/docker/centos6-build/REGISTRY
@@ -0,0 +1,1 @@
+taskcluster
new file mode 100644
--- /dev/null
+++ b/testing/docker/centos6-build/VERSION
@@ -0,0 +1,1 @@
+0.1.6
rename from taskcluster/docker/centos6-build/hgrc
rename to testing/docker/centos6-build/hgrc
rename from taskcluster/docker/centos6-build/system-setup.sh
rename to testing/docker/centos6-build/system-setup.sh
rename from taskcluster/docker/decision/README.md
rename to testing/docker/decision/README.md
new file mode 100644
--- /dev/null
+++ b/testing/docker/decision/REGISTRY
@@ -0,0 +1,1 @@
+taskcluster
rename from taskcluster/docker/decision/VERSION
rename to testing/docker/decision/VERSION
rename from taskcluster/docker/decision/system-setup.sh
rename to testing/docker/decision/system-setup.sh
rename from taskcluster/docker/desktop-build/bin/build.sh
rename to testing/docker/desktop-build/bin/build.sh
rename from taskcluster/docker/desktop-build/bin/checkout-script.sh
rename to testing/docker/desktop-build/bin/checkout-script.sh
rename from taskcluster/docker/desktop-build/bin/checkout-sources.sh
rename to testing/docker/desktop-build/bin/checkout-sources.sh
rename from taskcluster/docker/desktop-build/buildprops.json
rename to testing/docker/desktop-build/buildprops.json
rename from taskcluster/docker/desktop-build/oauth.txt
rename to testing/docker/desktop-build/oauth.txt
rename from taskcluster/docker/desktop1604-test/apport
rename to testing/docker/desktop-test/apport
rename from taskcluster/docker/desktop1604-test/buildprops.json
rename to testing/docker/desktop-test/buildprops.json
new file mode 100644
--- /dev/null
+++ b/testing/docker/desktop-test/deja-dup-monitor.desktop
@@ -0,0 +1,19 @@
+[Desktop Entry]
+Version=1.0
+X-Ubuntu-Gettext-Domain=deja-dup
+
+Name=Backup Monitor
+Comment=Schedules backups at regular intervals
+
+Icon=deja-dup
+TryExec=/usr/lib/deja-dup/deja-dup/deja-dup-monitor
+Exec=/usr/lib/deja-dup/deja-dup/deja-dup-monitor
+
+# Bug 984944/1240084 - It prevents taking screenshots
+X-GNOME-Autostart-Delay=false
+
+StartupNotify=false
+NoDisplay=true
+
+Type=Application
+Categories=System;Utility;Archiving;
rename from taskcluster/docker/tester/dot-config/pip/pip.conf
rename to testing/docker/desktop-test/dot-files/config/pip/pip.conf
rename from taskcluster/docker/desktop1604-test/dot-files/config/user-dirs.dirs
rename to testing/docker/desktop-test/dot-files/config/user-dirs.dirs
new file mode 100644
--- /dev/null
+++ b/testing/docker/desktop-test/dot-files/config/user-dirs.locale
@@ -0,0 +1,1 @@
+en_US
new file mode 100644
--- /dev/null
+++ b/testing/docker/desktop-test/dot-files/pulse/default.pa
@@ -0,0 +1,164 @@
+#!/usr/bin/pulseaudio -nF
+#
+# This file is part of PulseAudio.
+#
+# PulseAudio is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# PulseAudio is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with PulseAudio; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+# This startup script is used only if PulseAudio is started per-user
+# (i.e. not in system mode)
+
+.nofail
+
+### Load something into the sample cache
+#load-sample-lazy x11-bell /usr/share/sounds/gtk-events/activate.wav
+#load-sample-lazy pulse-hotplug /usr/share/sounds/startup3.wav
+#load-sample-lazy pulse-coldplug /usr/share/sounds/startup3.wav
+#load-sample-lazy pulse-access /usr/share/sounds/generic.wav
+
+.fail
+
+### Automatically restore the volume of streams and devices
+load-module module-device-restore
+load-module module-stream-restore
+load-module module-card-restore
+
+### Automatically augment property information from .desktop files
+### stored in /usr/share/application
+load-module module-augment-properties
+
+### Load audio drivers statically
+### (it's probably better to not load these drivers manually, but instead
+### use module-udev-detect -- see below -- for doing this automatically)
+#load-module module-alsa-sink
+#load-module module-alsa-source device=hw:1,0
+#load-module module-oss device="/dev/dsp" sink_name=output source_name=input
+#load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
+#load-module module-null-sink
+#load-module module-pipe-sink
+
+### Automatically load driver modules depending on the hardware available
+.ifexists module-udev-detect.so
+load-module module-udev-detect
+.else
+### Use the static hardware detection module (for systems that lack udev/hal support)
+load-module module-detect
+.endif
+
+### Automatically connect sink and source if JACK server is present
+.ifexists module-jackdbus-detect.so
+.nofail
+load-module module-jackdbus-detect
+.fail
+.endif
+
+### Automatically load driver modules for Bluetooth hardware
+# This module causes a pulseaudio startup failure on "gecko-tester"
+#.ifexists module-bluetooth-discover.so
+#load-module module-bluetooth-discover
+#.endif
+
+### Load several protocols
+.ifexists module-esound-protocol-unix.so
+load-module module-esound-protocol-unix
+.endif
+load-module module-native-protocol-unix
+
+### Network access (may be configured with paprefs, so leave this commented
+### here if you plan to use paprefs)
+#load-module module-esound-protocol-tcp
+#load-module module-native-protocol-tcp
+#load-module module-zeroconf-publish
+
+### Load the RTP receiver module (also configured via paprefs, see above)
+#load-module module-rtp-recv
+
+### Load the RTP sender module (also configured via paprefs, see above)
+#load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 sink_properties="device.description='RTP Multicast Sink'"
+#load-module module-rtp-send source=rtp.monitor
+
+### Load additional modules from GConf settings. This can be configured with the paprefs tool.
+### Please keep in mind that the modules configured by paprefs might conflict with manually
+### loaded modules.
+.ifexists module-gconf.so
+.nofail
+load-module module-gconf
+.fail
+.endif
+
+### Automatically restore the default sink/source when changed by the user
+### during runtime
+### NOTE: This should be loaded as early as possible so that subsequent modules
+### that look up the default sink/source get the right value
+load-module module-default-device-restore
+
+### Automatically move streams to the default sink if the sink they are
+### connected to dies, similar for sources
+load-module module-rescue-streams
+
+### Make sure we always have a sink around, even if it is a null sink.
+load-module module-always-sink
+
+### Honour intended role device property
+load-module module-intended-roles
+
+### Automatically suspend sinks/sources that become idle for too long
+load-module module-suspend-on-idle
+
+### If autoexit on idle is enabled we want to make sure we only quit
+### when no local session needs us anymore.
+# This module causes a pulseaudio startup failure on "gecko-tester"
+#.ifexists module-console-kit.so
+#load-module module-console-kit
+#.endif
+
+### Enable positioned event sounds
+load-module module-position-event-sounds
+
+### Cork music streams when a phone stream is active
+#load-module module-cork-music-on-phone
+
+### Modules to allow autoloading of filters (such as echo cancellation)
+### on demand. module-filter-heuristics tries to determine what filters
+### make sense, and module-filter-apply does the heavy-lifting of
+### loading modules and rerouting streams.
+load-module module-filter-heuristics
+load-module module-filter-apply
+
+### Load DBus protocol
+#.ifexists module-dbus-protocol.so
+#load-module module-dbus-protocol
+#.endif
+
+# X11 modules should not be started from default.pa so that one daemon
+# can be shared by multiple sessions.
+
+### Load X11 bell module
+#load-module module-x11-bell sample=bell-windowing-system
+
+### Register ourselves in the X11 session manager
+#load-module module-x11-xsmp
+
+### Publish connection data in the X11 root window
+#.ifexists module-x11-publish.so
+#.nofail
+#load-module module-x11-publish
+#.fail
+#.endif
+
+load-module module-switch-on-port-available
+
+### Make some devices default
+#set-default-sink output
+#set-default-source input
new file mode 100644
--- /dev/null
+++ b/testing/docker/desktop-test/fonts.conf
@@ -0,0 +1,5 @@
+<match target="font">
+  <edit name="antialias" mode="assign">
+   <bool>false</bool>
+  </edit>
+</match>
rename from taskcluster/docker/desktop1604-test/jockey-gtk.desktop
rename to testing/docker/desktop-test/jockey-gtk.desktop
rename from taskcluster/docker/desktop1604-test/motd
rename to testing/docker/desktop-test/motd
rename from taskcluster/docker/desktop1604-test/release-upgrades
rename to testing/docker/desktop-test/release-upgrades
rename from taskcluster/docker/desktop-test/taskcluster-interactive-shell
rename to testing/docker/desktop-test/taskcluster-interactive-shell
new file mode 100644
--- /dev/null
+++ b/testing/docker/desktop-test/tc-vcs-config.yml
@@ -0,0 +1,40 @@
+# Default configuration used by the tc-vs tools these can be overridden by
+# passing the config you wish to use over the command line...
+git: git
+hg: hg
+
+repoCache:
+  # Repo url to clone when running repo init..
+  repoUrl: https://gerrit.googlesource.com/git-repo.git
+  # Version of repo to utilize...
+  repoRevision: master
+  # The root where all downloaded cache files are stored on the local machine...
+  cacheDir: '{{env.HOME}}/.tc-vcs-repo/'
+  # Name/prefixed used as part of the base url.
+  cacheName: sources/{{name}}.tar.gz
+  # Command used to upload the tarball
+  uploadTar: "curl --header 'Content-Type: application/x-tar' --header 'Content-Encoding: gzip' -X PUT --data-binary @'{{source}}' '{{url}}'"
+  # Large http get requests are often slower using nodes built in http layer so
+  # we utilize a subprocess which is responsible for fetching...
+  get: curl --connect-timeout 30 --speed-limit 500000 -L -o {{dest}} {{url}}
+  # Used to create clone tarball
+  compress: tar -czf {{dest}} {{source}}
+  # All cache urls use tar + gz this is the command used to extract those files
+  # downloaded by the "get" command.
+  extract: tar -x -z -C {{dest}} -f {{source}}
+
+cloneCache:
+  # The root where all downloaded cache files are stored on the local machine...
+  cacheDir: '{{env.HOME}}/.tc-vcs/'
+  # Command used to upload the tarball
+  uploadTar: "curl --header 'Content-Type: application/x-tar' --header 'Content-Encoding: gzip' -X PUT --data-binary @'{{source}}' '{{url}}'"
+  # Large http get requests are often slower using nodes built in http layer so
+  # we utilize a subprocess which is responsible for fetching...
+  get: curl --connect-timeout 30 --speed-limit 500000 -L -o {{dest}} {{url}}
+  # Used to create clone tarball
+  compress: tar -czf {{dest}} {{source}}
+  # All cache urls use tar + gz this is the command used to extract those files
+  # downloaded by the "get" command.
+  extract: tar -x -z --strip-components 1 -C {{dest}} -f {{source}}
+  # Name/prefixed used as part of the base url.
+  cacheName: clones/{{name}}.tar.gz
new file mode 100644
--- /dev/null
+++ b/testing/docker/desktop-test/tester.env
@@ -0,0 +1,4 @@
+GAIA_REV=tip
+GAIA_REF=tip
+GAIA_BASE_REPOSITORY=https://hg.mozilla.org/integration/gaia-central
+GAIA_HEAD_REPOSITORY=https://hg.mozilla.org/integration/gaia-central
new file mode 100644
--- /dev/null
+++ b/testing/docker/desktop1604-test/apport
@@ -0,0 +1,1 @@
+enabled=0
rename from taskcluster/docker/desktop1604-test/bin/run-wizard
rename to testing/docker/desktop1604-test/bin/run-wizard
new file mode 100644
--- /dev/null
+++ b/testing/docker/desktop1604-test/buildprops.json
@@ -0,0 +1,8 @@
+{
+  "properties": {
+    "buildername": ""
+  },
+  "sourcestamp": {
+    "changes": []
+  }
+}
rename from taskcluster/docker/desktop1604-test/deja-dup-monitor.desktop
rename to testing/docker/desktop1604-test/deja-dup-monitor.desktop
new file mode 100644
--- /dev/null
+++ b/testing/docker/desktop1604-test/dot-files/config/user-dirs.dirs
@@ -0,0 +1,15 @@
+# This file is written by xdg-user-dirs-update
+# If you want to change or add directories, just edit the line you're
+# interested in. All local changes will be retained on the next run
+# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
+# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
+# absolute path. No other format is supported.
+
+XDG_DESKTOP_DIR="$HOME/Desktop"
+XDG_DOWNLOAD_DIR="$HOME/Downloads"
+XDG_TEMPLATES_DIR="$HOME/Templates"
+XDG_PUBLICSHARE_DIR="$HOME/Public"
+XDG_DOCUMENTS_DIR="$HOME/Documents"
+XDG_MUSIC_DIR="$HOME/Music"
+XDG_PICTURES_DIR="$HOME/Pictures"
+XDG_VIDEOS_DIR="$HOME/Videos"
new file mode 100644
--- /dev/null
+++ b/testing/docker/desktop1604-test/dot-files/config/user-dirs.locale
@@ -0,0 +1,1 @@
+en_US
new file mode 100644
--- /dev/null
+++ b/testing/docker/desktop1604-test/dot-files/pulse/default.pa
@@ -0,0 +1,164 @@
+#!/usr/bin/pulseaudio -nF
+#
+# This file is part of PulseAudio.
+#
+# PulseAudio is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# PulseAudio is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with PulseAudio; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+# This startup script is used only if PulseAudio is started per-user
+# (i.e. not in system mode)
+
+.nofail
+
+### Load something into the sample cache
+#load-sample-lazy x11-bell /usr/share/sounds/gtk-events/activate.wav
+#load-sample-lazy pulse-hotplug /usr/share/sounds/startup3.wav
+#load-sample-lazy pulse-coldplug /usr/share/sounds/startup3.wav
+#load-sample-lazy pulse-access /usr/share/sounds/generic.wav
+
+.fail
+
+### Automatically restore the volume of streams and devices
+load-module module-device-restore
+load-module module-stream-restore
+load-module module-card-restore
+
+### Automatically augment property information from .desktop files
+### stored in /usr/share/application
+load-module module-augment-properties
+
+### Load audio drivers statically
+### (it's probably better to not load these drivers manually, but instead
+### use module-udev-detect -- see below -- for doing this automatically)
+#load-module module-alsa-sink
+#load-module module-alsa-source device=hw:1,0
+#load-module module-oss device="/dev/dsp" sink_name=output source_name=input
+#load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
+#load-module module-null-sink
+#load-module module-pipe-sink
+
+### Automatically load driver modules depending on the hardware available
+.ifexists module-udev-detect.so
+load-module module-udev-detect
+.else
+### Use the static hardware detection module (for systems that lack udev/hal support)
+load-module module-detect
+.endif
+
+### Automatically connect sink and source if JACK server is present
+.ifexists module-jackdbus-detect.so
+.nofail
+load-module module-jackdbus-detect
+.fail
+.endif
+
+### Automatically load driver modules for Bluetooth hardware
+# This module causes a pulseaudio startup failure on "gecko-tester"
+#.ifexists module-bluetooth-discover.so
+#load-module module-bluetooth-discover
+#.endif
+
+### Load several protocols
+.ifexists module-esound-protocol-unix.so
+load-module module-esound-protocol-unix
+.endif
+load-module module-native-protocol-unix
+
+### Network access (may be configured with paprefs, so leave this commented
+### here if you plan to use paprefs)
+#load-module module-esound-protocol-tcp
+#load-module module-native-protocol-tcp
+#load-module module-zeroconf-publish
+
+### Load the RTP receiver module (also configured via paprefs, see above)
+#load-module module-rtp-recv
+
+### Load the RTP sender module (also configured via paprefs, see above)
+#load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 sink_properties="device.description='RTP Multicast Sink'"
+#load-module module-rtp-send source=rtp.monitor
+
+### Load additional modules from GConf settings. This can be configured with the paprefs tool.
+### Please keep in mind that the modules configured by paprefs might conflict with manually
+### loaded modules.
+.ifexists module-gconf.so
+.nofail
+load-module module-gconf
+.fail
+.endif
+
+### Automatically restore the default sink/source when changed by the user
+### during runtime
+### NOTE: This should be loaded as early as possible so that subsequent modules
+### that look up the default sink/source get the right value
+load-module module-default-device-restore
+
+### Automatically move streams to the default sink if the sink they are
+### connected to dies, similar for sources
+load-module module-rescue-streams
+
+### Make sure we always have a sink around, even if it is a null sink.
+load-module module-always-sink
+
+### Honour intended role device property
+load-module module-intended-roles
+
+### Automatically suspend sinks/sources that become idle for too long
+load-module module-suspend-on-idle
+
+### If autoexit on idle is enabled we want to make sure we only quit
+### when no local session needs us anymore.
+# This module causes a pulseaudio startup failure on "gecko-tester"
+#.ifexists module-console-kit.so
+#load-module module-console-kit
+#.endif
+
+### Enable positioned event sounds
+load-module module-position-event-sounds
+
+### Cork music streams when a phone stream is active
+#load-module module-cork-music-on-phone
+
+### Modules to allow autoloading of filters (such as echo cancellation)
+### on demand. module-filter-heuristics tries to determine what filters
+### make sense, and module-filter-apply does the heavy-lifting of
+### loading modules and rerouting streams.
+load-module module-filter-heuristics
+load-module module-filter-apply
+
+### Load DBus protocol
+#.ifexists module-dbus-protocol.so
+#load-module module-dbus-protocol
+#.endif
+
+# X11 modules should not be started from default.pa so that one daemon
+# can be shared by multiple sessions.
+
+### Load X11 bell module
+#load-module module-x11-bell sample=bell-windowing-system
+
+### Register ourselves in the X11 session manager
+#load-module module-x11-xsmp
+
+### Publish connection data in the X11 root window
+#.ifexists module-x11-publish.so
+#.nofail
+#load-module module-x11-publish
+#.fail
+#.endif
+
+load-module module-switch-on-port-available
+
+### Make some devices default
+#set-default-sink output
+#set-default-source input
rename from taskcluster/docker/desktop1604-test/fonts.conf
rename to testing/docker/desktop1604-test/fonts.conf
new file mode 100644
--- /dev/null
+++ b/testing/docker/desktop1604-test/jockey-gtk.desktop
@@ -0,0 +1,15 @@
+[Desktop Entry]
+Name=Check for new hardware drivers
+Comment=Notify about new hardware drivers available for the system
+Icon=jockey
+Exec=sh -c "test -e /var/cache/jockey/check || exec jockey-gtk --check"
+Terminal=false
+Type=Application
+Categories=System;Settings;GTK;HardwareSettings;
+NotShowIn=KDE;
+X-Ubuntu-Gettext-Domain=jockey
+
+# Bug 984944/1240084 - It prevents taking screenshots
+X-GNOME-Autostart-Delay=false
+
+NoDisplay=true
new file mode 100644
--- /dev/null
+++ b/testing/docker/desktop1604-test/motd
@@ -0,0 +1,6 @@
+Welcome to your taskcluster interactive shell! The regularly scheduled task
+has been paused to give you a chance to set up your debugging environment.
+
+For your convenience, the exact mozharness command needed for this task can
+be invoked using the 'run-mozharness' command.
+
new file mode 100644
--- /dev/null
+++ b/testing/docker/desktop1604-test/release-upgrades
@@ -0,0 +1,17 @@
+# Default behavior for the release upgrader.
+
+[DEFAULT]
+# Default prompting behavior, valid options:
+#
+#  never  - Never check for a new release.
+#  normal - Check to see if a new release is available.  If more than one new
+#           release is found, the release upgrader will attempt to upgrade to
+#           the release that immediately succeeds the currently-running
+#           release.
+#  lts    - Check to see if a new LTS release is available.  The upgrader
+#           will attempt to upgrade to the first LTS release available after
+#           the currently-running one.  Note that this option should not be
+#           used if the currently-running release is not itself an LTS
+#           release, since in that case the upgrader won't be able to
+#           determine if a newer release is available.
+Prompt=never
rename from taskcluster/docker/desktop1604-test/taskcluster-interactive-shell
rename to testing/docker/desktop1604-test/taskcluster-interactive-shell
rename from taskcluster/docker/tester/tc-vcs-config.yml
rename to testing/docker/desktop1604-test/tc-vcs-config.yml
new file mode 100644
--- /dev/null
+++ b/testing/docker/desktop1604-test/tester.env
@@ -0,0 +1,4 @@
+GAIA_REV=tip
+GAIA_REF=tip
+GAIA_BASE_REPOSITORY=https://hg.mozilla.org/integration/gaia-central
+GAIA_HEAD_REPOSITORY=https://hg.mozilla.org/integration/gaia-central
rename from taskcluster/docker/image_builder/Dockerfile
rename to testing/docker/image_builder/Dockerfile
rename from taskcluster/docker/tester/REGISTRY
rename to testing/docker/image_builder/REGISTRY
rename from taskcluster/docker/image_builder/VERSION
rename to testing/docker/image_builder/VERSION
rename from taskcluster/docker/image_builder/bin/build_image.sh
rename to testing/docker/image_builder/bin/build_image.sh
rename from taskcluster/docker/lint/system-setup.sh
rename to testing/docker/lint/system-setup.sh
rename from taskcluster/docker/recipes/centos6-build-system-setup.sh
rename to testing/docker/recipes/centos6-build-system-setup.sh
rename from taskcluster/docker/recipes/common.sh
rename to testing/docker/recipes/common.sh
rename from taskcluster/docker/recipes/install-mercurial.sh
rename to testing/docker/recipes/install-mercurial.sh
rename from taskcluster/docker/recipes/run-task
rename to testing/docker/recipes/run-task
rename from taskcluster/docker/recipes/tooltool.py
rename to testing/docker/recipes/tooltool.py
rename from taskcluster/docker/recipes/ubuntu1204-test-system-setup.sh
rename to testing/docker/recipes/ubuntu1204-test-system-setup.sh
rename from taskcluster/docker/recipes/ubuntu1604-test-system-setup.sh
rename to testing/docker/recipes/ubuntu1604-test-system-setup.sh
rename from taskcluster/docker/recipes/xvfb.sh
rename to testing/docker/recipes/xvfb.sh
rename from taskcluster/docker/rust-build/Dockerfile
rename to testing/docker/rust-build/Dockerfile
rename from taskcluster/docker/rust-build/README.md
rename to testing/docker/rust-build/README.md
rename from taskcluster/docker/rust-build/REGISTRY
rename to testing/docker/rust-build/REGISTRY
rename from taskcluster/docker/rust-build/VERSION
rename to testing/docker/rust-build/VERSION
rename from taskcluster/docker/rust-build/build_cargo.sh
rename to testing/docker/rust-build/build_cargo.sh
rename from taskcluster/docker/rust-build/build_rust.sh
rename to testing/docker/rust-build/build_rust.sh
rename from taskcluster/docker/rust-build/build_rust_mac.sh
rename to testing/docker/rust-build/build_rust_mac.sh
rename from taskcluster/docker/rust-build/fetch_cargo.sh
rename to testing/docker/rust-build/fetch_cargo.sh
rename from taskcluster/docker/rust-build/fetch_rust.sh
rename to testing/docker/rust-build/fetch_rust.sh
rename from taskcluster/docker/rust-build/package_rust.sh
rename to testing/docker/rust-build/package_rust.sh
rename from taskcluster/docker/rust-build/repack_rust.py
rename to testing/docker/rust-build/repack_rust.py
--- a/taskcluster/docker/rust-build/repack_rust.py
+++ b/testing/docker/rust-build/repack_rust.py
@@ -5,186 +5,173 @@ with the necessary tool and target suppo
 build environment.
 '''
 
 import os.path
 import requests
 import subprocess
 import toml
 
-
 def fetch_file(url):
-    '''Download a file from the given url if it's not already present.'''
-    filename = os.path.basename(url)
-    if os.path.exists(filename):
-        return
-    r = requests.get(url, stream=True)
-    r.raise_for_status()
-    with open(filename, 'wb') as fd:
-        for chunk in r.iter_content(4096):
-            fd.write(chunk)
-
+  '''Download a file from the given url if it's not already present.'''
+  filename = os.path.basename(url)
+  if os.path.exists(filename):
+    return
+  r = requests.get(url, stream=True)
+  r.raise_for_status()
+  with open(filename, 'wb') as fd:
+    for chunk in r.iter_content(4096):
+      fd.write(chunk)
 
 def fetch(url):
-    '''Download and verify a package url.'''
-    base = os.path.basename(url)
-    print('Fetching %s...' % base)
-    fetch_file(url + '.asc')
-    fetch_file(url)
-    fetch_file(url + '.sha256')
-    fetch_file(url + '.asc.sha256')
-    print('Verifying %s...' % base)
-    subprocess.check_call(['shasum', '-c', base + '.sha256'])
-    subprocess.check_call(['shasum', '-c', base + '.asc.sha256'])
-    subprocess.check_call(['gpg', '--verify', base + '.asc', base])
-    subprocess.check_call(['keybase', 'pgp', 'verify',
-                           '-d', base + '.asc',
-                           '-i', base,
-                           ])
-
+  '''Download and verify a package url.'''
+  base = os.path.basename(url)
+  print('Fetching %s...' % base)
+  fetch_file(url + '.asc')
+  fetch_file(url)
+  fetch_file(url + '.sha256')
+  fetch_file(url + '.asc.sha256')
+  print('Verifying %s...' % base)
+  subprocess.check_call(['shasum', '-c', base + '.sha256'])
+  subprocess.check_call(['shasum', '-c', base + '.asc.sha256'])
+  subprocess.check_call(['gpg', '--verify', base + '.asc', base])
+  subprocess.check_call(['keybase', 'pgp', 'verify',
+      '-d', base + '.asc',
+      '-i', base,
+  ])
 
 def install(filename, target):
-    '''Run a package's installer script against the given target directory.'''
-    print(' Unpacking %s...' % filename)
-    subprocess.check_call(['tar', 'xf', filename])
-    basename = filename.split('.tar')[0]
-    print(' Installing %s...' % basename)
-    install_cmd = [os.path.join(basename, 'install.sh')]
-    install_cmd += ['--prefix=' + os.path.abspath(target)]
-    install_cmd += ['--disable-ldconfig']
-    subprocess.check_call(install_cmd)
-    print(' Cleaning %s...' % basename)
-    subprocess.check_call(['rm', '-rf', basename])
-
+  '''Run a package's installer script against the given target directory.'''
+  print(' Unpacking %s...' % filename)
+  subprocess.check_call(['tar', 'xf', filename])
+  basename = filename.split('.tar')[0]
+  print(' Installing %s...' % basename)
+  install_cmd = [os.path.join(basename, 'install.sh')]
+  install_cmd += ['--prefix=' + os.path.abspath(target)]
+  install_cmd += ['--disable-ldconfig']
+  subprocess.check_call(install_cmd)
+  print(' Cleaning %s...' % basename)
+  subprocess.check_call(['rm', '-rf', basename])
 
 def package(manifest, pkg, target):
-    '''Pull out the package dict for a particular package and target
-    from the given manifest.'''
-    version = manifest['pkg'][pkg]['version']
-    info = manifest['pkg'][pkg]['target'][target]
-    return (version, info)
-
+  '''Pull out the package dict for a particular package and target
+  from the given manifest.'''
+  version = manifest['pkg'][pkg]['version']
+  info = manifest['pkg'][pkg]['target'][target]
+  return (version, info)
 
 def fetch_package(manifest, pkg, host):
-    version, info = package(manifest, pkg, host)
-    print('%s %s\n  %s\n  %s' % (pkg, version, info['url'], info['hash']))
-    if not info['available']:
-        print('%s marked unavailable for %s' % (pkg, host))
-        raise AssertionError
-    fetch(info['url'])
-    return info
-
+  version, info = package(manifest, pkg, host)
+  print('%s %s\n  %s\n  %s' % (pkg, version, info['url'], info['hash']))
+  if not info['available']:
+    print('%s marked unavailable for %s' % (pkg, host))
+    raise AssertionError
+  fetch(info['url'])
+  return info
 
 def fetch_std(manifest, targets):
-    stds = []
-    for target in targets:
-        info = fetch_package(manifest, 'rust-std', target)
-        stds.append(info)
-    return stds
-
+  stds = []
+  for target in targets:
+      info = fetch_package(manifest, 'rust-std', target)
+      stds.append(info)
+  return stds
 
 def tar_for_host(host):
-    if 'linux' in host:
-        tar_options = 'cJf'
-        tar_ext = '.tar.xz'
-    else:
-        tar_options = 'cjf'
-        tar_ext = '.tar.bz2'
-    return tar_options, tar_ext
-
+  if 'linux' in host:
+      tar_options = 'cJf'
+      tar_ext = '.tar.xz'
+  else:
+      tar_options = 'cjf'
+      tar_ext = '.tar.bz2'
+  return tar_options, tar_ext
 
 def repack(host, targets, channel='stable', suffix=''):
-    print("Repacking rust for %s..." % host)
-    url = 'https://static.rust-lang.org/dist/channel-rust-' + channel + '.toml'
-    req = requests.get(url)
-    req.raise_for_status()
-    manifest = toml.loads(req.content)
-    if manifest['manifest-version'] != '2':
-        print('ERROR: unrecognized manifest version %s.' % manifest[
-            'manifest-version'])
-        return
-    print('Using manifest for rust %s as of %s.' % (channel, manifest['date']))
-    print('Fetching packages...')
-    rustc = fetch_package(manifest, 'rustc', host)
-    cargo = fetch_package(manifest, 'cargo', host)
-    stds = fetch_std(manifest, targets)
-    print('Installing packages...')
-    tar_basename = 'rustc-' + host
-    if suffix:
-        tar_basename += '-' + suffix
-    tar_basename += '-repack'
-    install_dir = 'rustc'
-    subprocess.check_call(['rm', '-rf', install_dir])
-    install(os.path.basename(rustc['url']), install_dir)
-    install(os.path.basename(cargo['url']), install_dir)
-    for std in stds:
-        install(os.path.basename(std['url']), install_dir)
-        pass
-    print('Tarring %s...' % tar_basename)
-    tar_options, tar_ext = tar_for_host(host)
-    subprocess.check_call(
-        ['tar', tar_options, tar_basename + tar_ext, install_dir])
-    subprocess.check_call(['rm', '-rf', install_dir])
-
+  print("Repacking rust for %s..." % host)
+  url = 'https://static.rust-lang.org/dist/channel-rust-' + channel + '.toml'
+  req = requests.get(url)
+  req.raise_for_status()
+  manifest = toml.loads(req.content)
+  if manifest['manifest-version'] != '2':
+    print('ERROR: unrecognized manifest version %s.' % manifest['manifest-version'])
+    return
+  print('Using manifest for rust %s as of %s.' % (channel, manifest['date']))
+  print('Fetching packages...')
+  rustc = fetch_package(manifest, 'rustc', host)
+  cargo = fetch_package(manifest, 'cargo', host)
+  stds = fetch_std(manifest, targets)
+  print('Installing packages...')
+  tar_basename = 'rustc-' + host
+  if suffix:
+      tar_basename += '-' + suffix
+  tar_basename += '-repack'
+  install_dir = 'rustc'
+  subprocess.check_call(['rm', '-rf', install_dir])
+  install(os.path.basename(rustc['url']), install_dir)
+  install(os.path.basename(cargo['url']), install_dir)
+  for std in stds:
+    install(os.path.basename(std['url']), install_dir)
+    pass
+  print('Tarring %s...' % tar_basename)
+  tar_options, tar_ext = tar_for_host(host)
+  subprocess.check_call(['tar', tar_options, tar_basename + tar_ext, install_dir])
+  subprocess.check_call(['rm', '-rf', install_dir])
 
 def repack_cargo(host, channel='nightly'):
-    print("Repacking cargo for %s..." % host)
-    # Cargo doesn't seem to have a .toml manifest.
-    base_url = 'https://static.rust-lang.org/cargo-dist/'
-    req = requests.get(os.path.join(base_url, 'channel-cargo-' + channel))
-    req.raise_for_status()
-    file = ''
-    for line in req.iter_lines():
-        if line.find(host) != -1:
-            file = line.strip()
-    if not file:
-        print('No manifest entry for %s!' % host)
-        return
-    manifest = {
-        'date': req.headers['Last-Modified'],
-        'pkg': {
-            'cargo': {
-                'version': channel,
-                'target': {
-                    host: {
-                        'url': os.path.join(base_url, file),
-                        'hash': None,
-                        'available': True,
-                    },
-                },
-            },
-        },
-    }
-    print('Using manifest for cargo %s.' % channel)
-    print('Fetching packages...')
-    cargo = fetch_package(manifest, 'cargo', host)
-    print('Installing packages...')
-    install_dir = 'cargo'
-    subprocess.check_call(['rm', '-rf', install_dir])
-    install(os.path.basename(cargo['url']), install_dir)
-    tar_basename = 'cargo-%s-repack' % host
-    print('Tarring %s...' % tar_basename)
-    tar_options, tar_ext = tar_for_host(host)
-    subprocess.check_call(
-        ['tar', tar_options, tar_basename + tar_ext, install_dir])
-    subprocess.check_call(['rm', '-rf', install_dir])
-
+  print("Repacking cargo for %s..." % host)
+  # Cargo doesn't seem to have a .toml manifest.
+  base_url = 'https://static.rust-lang.org/cargo-dist/'
+  req = requests.get(os.path.join(base_url, 'channel-cargo-' + channel))
+  req.raise_for_status()
+  file = ''
+  for line in req.iter_lines():
+      if line.find(host) != -1:
+          file = line.strip()
+  if not file:
+      print('No manifest entry for %s!' % host)
+      return
+  manifest = {
+          'date': req.headers['Last-Modified'],
+          'pkg': {
+              'cargo': {
+                  'version': channel,
+                  'target': {
+                      host: {
+                          'url': os.path.join(base_url, file),
+                          'hash': None,
+                          'available': True,
+                      },
+                  },
+              },
+          },
+  }
+  print('Using manifest for cargo %s.' % channel)
+  print('Fetching packages...')
+  cargo = fetch_package(manifest, 'cargo', host)
+  print('Installing packages...')
+  install_dir = 'cargo'
+  subprocess.check_call(['rm', '-rf', install_dir])
+  install(os.path.basename(cargo['url']), install_dir)
+  tar_basename = 'cargo-%s-repack' % host
+  print('Tarring %s...' % tar_basename)
+  tar_options, tar_ext = tar_for_host(host)
+  subprocess.check_call(['tar', tar_options, tar_basename + tar_ext, install_dir])
+  subprocess.check_call(['rm', '-rf', install_dir])
 
 # rust platform triples
-android = "armv7-linux-androideabi"
-linux64 = "x86_64-unknown-linux-gnu"
-linux32 = "i686-unknown-linux-gnu"
-mac64 = "x86_64-apple-darwin"
-mac32 = "i686-apple-darwin"
-win64 = "x86_64-pc-windows-msvc"
-win32 = "i686-pc-windows-msvc"
+android="armv7-linux-androideabi"
+linux64="x86_64-unknown-linux-gnu"
+linux32="i686-unknown-linux-gnu"
+mac64="x86_64-apple-darwin"
+mac32="i686-apple-darwin"
+win64="x86_64-pc-windows-msvc"
+win32="i686-pc-windows-msvc"
 
 if __name__ == '__main__':
-    repack(mac64, [mac64, mac32])
-    repack(win32, [win32])
-    repack(win64, [win64])
-    repack(linux64, [linux64, linux32])
-    repack(linux64, [linux64, mac64, mac32], suffix='mac-cross')
-    repack(linux64, [linux64, android], suffix='android-cross')
-    repack_cargo(mac64)
-    repack_cargo(win32)
-    repack_cargo(win64)
-    repack_cargo(linux64)
+  repack(mac64, [mac64, mac32])
+  repack(win32, [win32])
+  repack(win64, [win64])
+  repack(linux64, [linux64, linux32])
+  repack(linux64, [linux64, mac64, mac32], suffix='mac-cross')
+  repack(linux64, [linux64, android], suffix='android-cross')
+  repack_cargo(mac64)
+  repack_cargo(win32)
+  repack_cargo(win64)
+  repack_cargo(linux64)
rename from taskcluster/docker/rust-build/task.json
rename to testing/docker/rust-build/task.json
rename from taskcluster/docker/rust-build/tcbuild.py
rename to testing/docker/rust-build/tcbuild.py
--- a/taskcluster/docker/rust-build/tcbuild.py
+++ b/testing/docker/rust-build/tcbuild.py
@@ -3,82 +3,73 @@
 This script triggers a taskcluster task, waits for it to finish,
 fetches the artifacts, uploads them to tooltool, and updates
 the in-tree tooltool manifests.
 '''
 
 from __future__ import print_function
 
 import requests.packages.urllib3
+requests.packages.urllib3.disable_warnings()
 
 import argparse
 import datetime
 import json
 import os
 import shutil
 import sys
 import taskcluster
 import tempfile
 import time
 import tooltool
 
-requests.packages.urllib3.disable_warnings()
-
-
 def local_file(filename):
     '''
     Return a path to a file next to this script.
     '''
     return os.path.join(os.path.dirname(__file__), filename)
 
-
 def read_tc_auth(tc_auth_file):
     '''
     Read taskcluster credentials from tc_auth_file and return them as a dict.
     '''
     return json.load(open(tc_auth_file, 'rb'))
 
-
 def fill_template_dict(d, keys):
     for key, val in d.items():
         if isinstance(val, basestring) and '{' in val:
             d[key] = val.format(**keys)
         elif isinstance(val, dict):
             fill_template_dict(val, keys)
 
-
 def fill_template(template_file, keys):
     '''
     Take the file object template_file, parse it as JSON, and
     interpolate (using str.template) its keys using keys.
     '''
     template = json.load(template_file)
     fill_template_dict(template, keys)
     return template
 
-
 def spawn_task(queue, args):
     '''
     Spawn a Taskcluster task in queue using args.
     '''
     task_id = taskcluster.utils.slugId()
     with open(local_file('task.json'), 'rb') as template:
         keys = vars(args)
         now = datetime.datetime.utcnow()
         keys['task_created'] = now.isoformat() + 'Z'
-        keys['task_deadline'] = (now + datetime.timedelta(
-            hours=2)).isoformat() + 'Z'
-        keys['artifacts_expires'] = (now + datetime.timedelta(
-            days=1)).isoformat() + 'Z'
+        keys['task_deadline'] = (now + datetime.timedelta(hours=2)).isoformat() + 'Z'
+        keys['artifacts_expires'] = (now + datetime.timedelta(days=1)).isoformat() + 'Z'
         payload = fill_template(template, keys)
     queue.createTask(task_id, payload)
     print('--- %s task %s submitted ---' % (now, task_id))
     return task_id
 
-
 def wait_for_task(queue, task_id, initial_wait=5):
     '''
     Wait until queue reports that task task_id is completed, and return
     its run id.
 
     Sleep for initial_wait seconds before checking status the first time.
     Then poll periodically and print a running log of the task status.
     '''
@@ -86,30 +77,29 @@ def wait_for_task(queue, task_id, initia
     previous_state = None
     have_ticks = False
     while True:
         res = queue.status(task_id)
         state = res['status']['state']
         if state != previous_state:
             now = datetime.datetime.utcnow()
             if have_ticks:
-                sys.stdout.write('\n')
-                have_ticks = False
+              sys.stdout.write('\n')
+              have_ticks = False
             print('--- %s task %s %s ---' % (now, task_id, state))
             previous_state = state
         if state == 'completed':
             return len(res['status']['runs']) - 1
         if state in ('failed', 'exception'):
             raise Exception('Task failed')
         sys.stdout.write('.')
         sys.stdout.flush()
         have_ticks = True
         time.sleep(10)
 
-
 def fetch_artifact(queue, task_id, run_id, name, dest_dir):
     '''
     Fetch the artifact with name from task_id and run_id in queue,
     write it to a file in dest_dir, and return the path to the written
     file.
     '''
     url = queue.buildUrl('getArtifact', task_id, run_id, name)
     fn = os.path.join(dest_dir, os.path.basename(name))
@@ -120,23 +110,21 @@ def fetch_artifact(queue, task_id, run_i
         with open(fn, 'wb') as f:
             for chunk in r.iter_content(1024):
                 f.write(chunk)
     except requests.exceptions.HTTPError:
         print('HTTP Error %d fetching %s' % (r.status_code, name))
         return None
     return fn
 
-
 def make_artifact_dir(task_id, run_id):
     prefix = 'tc-artifacts.%s.%d.' % (task_id, run_id)
     print('making artifact dir %s' % prefix)
     return tempfile.mkdtemp(prefix=prefix)
 
-
 def fetch_artifacts(queue, task_id, run_id):
     '''
     Fetch all artifacts from task_id and run_id in queue, write them to
     temporary files, and yield the path to each.
     '''
     try:
         tempdir = make_artifact_dir(task_id, run_id)
         res = queue.listArtifacts(task_id, run_id)
@@ -145,21 +133,20 @@ def fetch_artifacts(queue, task_id, run_
             if a['name'].startswith('public/logs'):
                 continue
             # Skip interfaces
             if a['name'].startswith('private/docker-worker'):
                 continue
             yield fetch_artifact(queue, task_id, run_id, a['name'], tempdir)
     finally:
         if os.path.isdir(tempdir):
-            # shutil.rmtree(tempdir)
+            #shutil.rmtree(tempdir)
             print('Artifacts downloaded to %s' % tempdir)
             pass
 
-
 def upload_to_tooltool(tooltool_auth, task_id, artifact):
     '''
     Upload artifact to tooltool using tooltool_auth as the authentication token.
     Return the path to the generated tooltool manifest.
     '''
     try:
         oldcwd = os.getcwd()
         os.chdir(os.path.dirname(artifact))
@@ -177,54 +164,43 @@ def upload_to_tooltool(tooltool_auth, ta
             '-m', manifest,
             '--authentication-file', tooltool_auth,
             '--message', 'Built from taskcluster task {}'.format(task_id),
         ])
         return manifest
     finally:
         os.chdir(oldcwd)
 
-
 def update_manifest(artifact, manifest, local_gecko_clone):
-    platform = 'linux'
+    platform = linux
     manifest_dir = os.path.join(local_gecko_clone,
                                 'testing', 'config', 'tooltool-manifests')
     platform_dir = [p for p in os.listdir(manifest_dir)
                     if p.startswith(platform)][0]
     tree_manifest = os.path.join(manifest_dir, platform_dir, 'releng.manifest')
     print('%s -> %s' % (manifest, tree_manifest))
     shutil.copyfile(manifest, tree_manifest)
 
-
 def main():
     parser = argparse.ArgumentParser(description='Build and upload binaries')
-    parser.add_argument('taskcluster_auth',
-                        help='Path to a file containing Taskcluster client '
-                             'ID and authentication token as a JSON file in '
-                             'the form {"clientId": "...", "accessToken": "..."}')
-    parser.add_argument('--tooltool-auth',
-                        help='Path to a file containing a tooltool '
-                             'authentication token valid for uploading files')
-    parser.add_argument('--local-gecko-clone',
-                        help='Path to a local Gecko clone whose tooltool '
-                             'manifests will be updated with the newly-built binaries')
+    parser.add_argument('taskcluster_auth', help='Path to a file containing Taskcluster client ID and authentication token as a JSON file in the form {"clientId": "...", "accessToken": "..."}')
+    parser.add_argument('--tooltool-auth', help='Path to a file containing a tooltool authentication token valid for uploading files')
+    parser.add_argument('--local-gecko-clone', help='Path to a local Gecko clone whose tooltool manifests will be updated with the newly-built binaries')
     parser.add_argument('--rust-branch', default='stable',
                         help='Revision of the rust repository to use')
     parser.add_argument('--task', help='Use an existing task')
 
     args = parser.parse_args()
     tc_auth = read_tc_auth(args.taskcluster_auth)
     queue = taskcluster.Queue({'credentials': tc_auth})
     if args.task:
         task_id, initial_wait = args.task, 0
     else:
         task_id, initial_wait = spawn_task(queue, args), 25
     run_id = wait_for_task(queue, task_id, initial_wait)
     for artifact in fetch_artifacts(queue, task_id, run_id):
         if args.tooltool_auth:
-            manifest = upload_to_tooltool(args.tooltool_auth, task_id,
-                                          artifact)
+            manifest = upload_to_tooltool(args.tooltool_auth, task_id, artifact)
         if args.local_gecko_clone:
             update_manifest(artifact, manifest, args.local_gecko_clone)
 
-
 if __name__ == '__main__':
     main()
rename from taskcluster/docker/rust-build/upload_rust.sh
rename to testing/docker/rust-build/upload_rust.sh
rename from taskcluster/docker/tester/Dockerfile
rename to testing/docker/tester/Dockerfile
new file mode 100644
--- /dev/null
+++ b/testing/docker/tester/REGISTRY
@@ -0,0 +1,1 @@
+taskcluster
rename from taskcluster/docker/tester/VERSION
rename to testing/docker/tester/VERSION
rename from taskcluster/docker/tester/bin/test.sh
rename to testing/docker/tester/bin/test.sh
rename from taskcluster/docker/tester/dot-config/user-dirs.dirs
rename to testing/docker/tester/dot-config/user-dirs.dirs
rename from taskcluster/docker/tester/dot-config/user-dirs.locale
rename to testing/docker/tester/dot-config/user-dirs.locale
rename from taskcluster/docker/tester/dot-pulse/default.pa
rename to testing/docker/tester/dot-pulse/default.pa
new file mode 100644
--- /dev/null
+++ b/testing/docker/tester/tc-vcs-config.yml
@@ -0,0 +1,40 @@
+# Default configuration used by the tc-vs tools these can be overridden by
+# passing the config you wish to use over the command line...
+git: git
+hg: hg
+
+repoCache:
+  # Repo url to clone when running repo init..
+  repoUrl: https://gerrit.googlesource.com/git-repo.git
+  # Version of repo to utilize...
+  repoRevision: master
+  # The root where all downloaded cache files are stored on the local machine...
+  cacheDir: '{{env.HOME}}/.tc-vcs-repo/'
+  # Name/prefixed used as part of the base url.
+  cacheName: sources/{{name}}.tar.gz
+  # Command used to upload the tarball
+  uploadTar: "curl --header 'Content-Type: application/x-tar' --header 'Content-Encoding: gzip' -X PUT --data-binary @'{{source}}' '{{url}}'"
+  # Large http get requests are often slower using nodes built in http layer so
+  # we utilize a subprocess which is responsible for fetching...
+  get: curl --connect-timeout 30 --speed-limit 500000 -L -o {{dest}} {{url}}
+  # Used to create clone tarball
+  compress: tar -czf {{dest}} {{source}}
+  # All cache urls use tar + gz this is the command used to extract those files
+  # downloaded by the "get" command.
+  extract: tar -x -z -C {{dest}} -f {{source}}
+
+cloneCache:
+  # The root where all downloaded cache files are stored on the local machine...
+  cacheDir: '{{env.HOME}}/.tc-vcs/'
+  # Command used to upload the tarball
+  uploadTar: "curl --header 'Content-Type: application/x-tar' --header 'Content-Encoding: gzip' -X PUT --data-binary @'{{source}}' '{{url}}'"
+  # Large http get requests are often slower using nodes built in http layer so
+  # we utilize a subprocess which is responsible for fetching...
+  get: curl --connect-timeout 30 --speed-limit 500000 -L -o {{dest}} {{url}}
+  # Used to create clone tarball
+  compress: tar -czf {{dest}} {{source}}
+  # All cache urls use tar + gz this is the command used to extract those files
+  # downloaded by the "get" command.
+  extract: tar -x -z --strip-components 1 -C {{dest}} -f {{source}}
+  # Name/prefixed used as part of the base url.
+  cacheName: clones/{{name}}.tar.gz
rename from taskcluster/docker/tester/tester.env
rename to testing/docker/tester/tester.env