diff --git a/.bazelci/presubmit.yml b/.bazelci/presubmit.yml
index 38ec123..3d7b701 100644
--- a/.bazelci/presubmit.yml
+++ b/.bazelci/presubmit.yml
@@ -18,7 +18,6 @@
     - "//configs/ubuntu16_04_clang:msan-ubuntu16_04-clang-1.1-bazel_0.18.0-autoconfig_test"
     - "//container/debian8/builders/rbe-debian8:toolchain-test"
     - "//container/ubuntu16_04/builders/rbe-ubuntu16_04:toolchain-test"
-    - "//container/experimental/rbe-debian9:toolchain-test"
     - "//container/ubuntu16_04/builders/bazel:bazel_0.18.0-test"
     - "//container/ubuntu16_04/builders/bazel_docker_gcloud:bazel_0.18.0_docker_gcloud-test"
     - "//container/debian8/builders/bazel:bazel_0.18.0-test"
diff --git a/WORKSPACE b/WORKSPACE
index 8f5c685..9837304 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -15,10 +15,6 @@
 
 load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file")
 load(
-    "//rules/skylib:package_names.bzl",
-    "jessie_package_names",
-)
-load(
     "//repositories:repositories.bzl",
     bazel_toolchains_repositories = "repositories",
 )
@@ -46,16 +42,6 @@
 
 go_register_toolchains()
 
-load(
-    "@distroless//package_manager:package_manager.bzl",
-    "dpkg_list",
-    "dpkg_src",
-    "package_manager_repositories",
-)
-
-# This is only needed by the old package manager.
-package_manager_repositories()
-
 container_pull(
     name = "official_jessie",
     registry = "index.docker.io",
@@ -79,54 +65,6 @@
     repository = "google/clang-debian8",
 )
 
-# The Debian snapshot datetime to use.
-# This is kept up-to-date with https://github.com/GoogleCloudPlatform/base-images-docker/blob/master/WORKSPACE.
-DEB_SNAPSHOT = "20180312T052343Z"
-
-dpkg_src(
-    name = "debian_jessie",
-    arch = "amd64",
-    distro = "jessie",
-    sha256 = "20720c9367e9454dee3d173e4d3fd85ab5530292f4ec6654feb5a810b6bb37ce",
-    snapshot = DEB_SNAPSHOT,
-    url = "http://snapshot.debian.org/archive",
-)
-
-dpkg_src(
-    name = "debian_jessie_backports",
-    arch = "amd64",
-    distro = "jessie-backports",
-    sha256 = "28afadff87f53bcb754d571df4174f0b8cbabd1600be82a062932df6eb4b7b70",
-    snapshot = DEB_SNAPSHOT,
-    url = "http://snapshot.debian.org/archive",
-)
-
-dpkg_src(
-    name = "debian_jessie_ca_certs",
-    arch = "amd64",
-    distro = "jessie",
-    sha256 = "26e8275be588d35313eac65a1a88b17a1052eb323255048b13bdf0653421a9f2",
-    snapshot = "20161107T033615Z",
-    url = "http://snapshot.debian.org/archive",
-)
-
-dpkg_list(
-    name = "jessie_package_bundle",
-    packages = jessie_package_names(),
-    sources = [
-        "@debian_jessie//file:Packages.json",
-        "@debian_jessie_backports//file:Packages.json",
-    ],
-)
-
-dpkg_list(
-    name = "jessie_ca_certs_package_bundle",
-    packages = ["ca-certificates-java"],
-    sources = [
-        "@debian_jessie_ca_certs//file:Packages.json",
-    ],
-)
-
 # Test purpose only. bazel-toolchains repo at release for Bazel 0.10.0.
 # https://github.com/bazelbuild/bazel-toolchains/releases/tag/acffd62
 http_file(
diff --git a/container/build.py b/container/build.py
index b841445..662b62b 100644
--- a/container/build.py
+++ b/container/build.py
@@ -83,7 +83,7 @@
 LATEST_BAZEL_VERSION = "0.19.2"
 
 SUPPORTED_TYPES = [
-    "rbe-debian8", "rbe-debian9", "rbe-ubuntu16_04", "ubuntu16_04-bazel",
+    "rbe-debian8", "rbe-ubuntu16_04", "ubuntu16_04-bazel",
     "ubuntu16_04-bazel-docker-gcloud", "debian8-bazel", "ubuntu14_04-bazel"
 ]
 
@@ -95,7 +95,6 @@
 # the package of target to build it.
 TYPE_PACKAGE_MAP = {
     "rbe-debian8": "container/debian8/builders/rbe-debian8",
-    "rbe-debian9": "container/experimental/rbe-debian9",
     "rbe-ubuntu16_04": "container/ubuntu16_04/builders/rbe-ubuntu16_04",
     "ubuntu16_04-bazel": "container/ubuntu16_04/builders/bazel",
     "ubuntu16_04-bazel-docker-gcloud":
@@ -107,7 +106,6 @@
 # Map to store all supported container type and the name of target to build it.
 TYPE_TARGET_MAP = {
     "rbe-debian8": "toolchain",
-    "rbe-debian9": "toolchain",
     "rbe-ubuntu16_04": "toolchain",
     "ubuntu16_04-bazel": "bazel_{}".format(LATEST_BAZEL_VERSION),
     "ubuntu16_04-bazel-docker-gcloud":
@@ -120,8 +118,6 @@
 TYPE_TARBALL_MAP = {
     "rbe-debian8":
         "toolchain-packages.tar",
-    "rbe-debian9":
-        "toolchain-packages.tar",
     "rbe-ubuntu16_04":
         "toolchain-packages.tar",
     "ubuntu16_04-bazel":
diff --git a/container/common/rbe-base.yaml b/container/common/rbe-base.yaml
index 722c4c0..e63d44b 100644
--- a/container/common/rbe-base.yaml
+++ b/container/common/rbe-base.yaml
@@ -6,6 +6,10 @@
   command: 'ar'
   args: ['--version']
   expectedOutput: ['GNU ar .*']
+- name: 'check-curl'
+  command: 'curl'
+  args: ['--version']
+  expectedOutput: ['curl .* \(x86_64-pc-linux-gnu\).*']
 - name: 'check-ed'
   command: 'ed'
   args: ['--version']
diff --git a/container/debian8/builders/rbe-debian8/rbe-debian8.yaml b/container/debian8/builders/rbe-debian8/rbe-debian8.yaml
index 2cbc113..9e9547c 100644
--- a/container/debian8/builders/rbe-debian8/rbe-debian8.yaml
+++ b/container/debian8/builders/rbe-debian8/rbe-debian8.yaml
@@ -1,13 +1,5 @@
 schemaVersion: "2.0.0"
 
-# This is failing in Debian9 base. Once resolved, move this test to
-# container/common/rbe-base.yaml.
-commandTests:
-- name: 'check-curl'
-  command: 'curl'
-  args: ['--version']
-  expectedOutput: ['curl .* \(x86_64-pc-linux-gnu\).*']
-
 metadataTest:
   env:
     - key: 'PATH'
diff --git a/container/experimental/rbe-debian8/BUILD b/container/experimental/rbe-debian8/BUILD
deleted file mode 100644
index e1c9414..0000000
--- a/container/experimental/rbe-debian8/BUILD
+++ /dev/null
@@ -1,137 +0,0 @@
-# Copyright 2017 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-licenses(["notice"])  # Apache 2.0
-
-package(default_visibility = ["//visibility:public"])
-
-load("@distroless//cacerts:cacerts.bzl", "cacerts")
-load("@jessie_package_bundle//file:packages.bzl", "packages")
-load(
-    "//skylib:packages.bzl",
-    "base_layer_packages",
-    "clang_layer_packages",
-    "java_layer_packages",
-    "python_layer_packages",
-)
-load("@io_bazel_rules_docker//contrib:test.bzl", "container_test")
-load(
-    "@io_bazel_rules_docker//container:container.bzl",
-    "container_image",
-    "container_layer",
-)
-load("//container/common/clang:clang.bzl", "clang_env")
-
-cacerts(
-    name = "cacerts",
-    deb = packages["ca-certificates"],
-)
-
-container_image(
-    name = "toolchain",
-    base = "@debian8//image",
-    cmd = [
-        "/bin/sh",
-        "-c",
-        "/bin/bash",
-    ],
-    env = {
-        "LANG": "C.UTF-8",
-        "LANGUAGE": "C.UTF-8",
-        "LC_ALL": "C.UTF-8",
-    },
-    layers = [
-        "base-ltl",
-        "clang-ltl",
-        "python-ltl",
-        "go-ltl",
-        "java-ltl",
-    ],
-    tags = ["manual"],
-)
-
-container_layer(
-    name = "base-ltl",
-    debs = base_layer_packages(),
-    tags = ["manual"],
-    tars = [
-        ":cacerts.tar",
-    ],
-)
-
-container_layer(
-    name = "clang-ltl",
-    debs = clang_layer_packages(),
-    env = clang_env,
-    tags = ["manual"],
-    tars = [
-        "//third_party/clang:debian8_tar",
-        "//third_party/libcxx:debian8_tar",
-    ],
-)
-
-container_layer(
-    name = "go-ltl",
-    env = {
-        "GOPATH": "/go",
-        "PATH": "$PATH:/usr/local/go/bin",
-    },
-    tags = ["manual"],
-    tars = ["//third_party/golang:tar"],
-)
-
-container_layer(
-    name = "java-ltl",
-    debs = java_layer_packages(),
-    env = {
-        "JAVA_HOME": "/usr/lib/jvm/java-8-openjdk-amd64",
-    },
-    symlinks = {
-        "/usr/bin/java": "/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java",
-    },
-    tags = ["manual"],
-)
-
-container_layer(
-    name = "python-ltl",
-    debs = python_layer_packages(),
-    env = {
-        "PATH": "$PATH:/opt/python3.6/bin",
-    },
-    symlinks = {
-        "/usr/bin/python": "/usr/bin/python2.7",
-        "/usr/bin/python3": "/opt/python3.6/bin/python3.6",
-        "/opt/python3.6/bin/python3": "/opt/python3.6/bin/python3.6",
-        "/opt/python3.6/bin/pip3": "/opt/python3.6/bin/pip3.6",
-        "/opt/python3.6/bin/easy_install3": "/opt/python3.6/bin/easy_install-3.6",
-    },
-    tags = ["manual"],
-    tars = ["//third_party/python:debian8_tar"],
-)
-
-container_test(
-    name = "toolchain-test",
-    configs = [
-        "//container/common:go.yaml",
-        "//container/common:java.yaml",
-        "//container/common:python2.yaml",
-        "//container/common:python3.yaml",
-        "//container/common:rbe-base.yaml",
-        "//container/common/clang:clang.yaml",
-        "//container/debian8:debian8.yaml",
-        "//container/debian8/builders/rbe-debian8:rbe-debian8.yaml",
-    ],
-    image = ":toolchain",
-    verbose = True,
-)
diff --git a/container/experimental/rbe-debian9/BUILD b/container/experimental/rbe-debian9/BUILD
deleted file mode 100644
index 13f5ccc..0000000
--- a/container/experimental/rbe-debian9/BUILD
+++ /dev/null
@@ -1,171 +0,0 @@
-# Copyright 2017 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-licenses(["notice"])  # Apache 2.0
-
-package(default_visibility = ["//visibility:public"])
-
-load(
-    "//rules/container:docker_toolchains.bzl",
-    "language_tool_layer",
-    "toolchain_container",
-)
-load("@io_bazel_rules_docker//contrib:test.bzl", "container_test")
-load("//container/common/clang:clang.bzl", "clang_env")
-
-JAVA_CLEANUP_COMMANDS = (
-    "rm -rf " +
-    "/etc/ssl/certs/java/cacerts " +
-    "/tmp/hsperfdata_root/* " +
-    "/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/classes.jsa"
-)
-
-PYTHON_CLEANUP_COMMANDS = (
-    "find /usr/lib/python* -name __pycache__ -exec rm -rf {} +"
-)
-
-toolchain_container(
-    name = "toolchain",
-    base = "@debian9//image",
-    cmd = [
-        "/bin/sh",
-        "-c",
-        "/bin/bash",
-    ],
-    env = {
-        # PATH envvar is a special case, and currently only the one in the
-        # topmost layer is set. So that we override it here to include all.
-        "PATH": "$PATH:/usr/local/go/bin",
-        "LANG": "C.UTF-8",
-        "LANGUAGE": "C.UTF-8",
-        "LC_ALL": "C.UTF-8",
-    },
-    language_layers = [
-        "base-ltl",
-        "clang-ltl",
-        "go-ltl",
-        "java-ltl",
-        "java10-ltl",
-        "python-ltl",
-    ],
-)
-
-language_tool_layer(
-    name = "base-ltl",
-    base = "@debian9//image",
-    packages = [
-        "binutils",
-        "ca-certificates",
-        "curl",
-        "ed",
-        "file",
-        "git",
-        "less",
-        "netcat",
-        "openssh-client",
-        "patch",
-        "unzip",
-        "wget",
-        "zip",
-    ],
-)
-
-language_tool_layer(
-    name = "clang-ltl",
-    base = "@debian9//image",
-    env = clang_env,
-    packages = [
-        "libstdc++-6-dev",
-    ],
-    tars = [
-        "//third_party/clang:debian9_tar",
-        "//third_party/libcxx:debian9_tar",
-    ],
-)
-
-language_tool_layer(
-    name = "go-ltl",
-    base = "@debian9//image",
-    env = {
-        "GOPATH": "/go",
-        "PATH": "$PATH:/usr/local/go/bin",
-    },
-    tars = ["//third_party/golang:tar"],
-)
-
-language_tool_layer(
-    name = "java-ltl",
-    additional_repos = [
-        "deb http://deb.debian.org/debian stretch-backports main",
-    ],
-    base = "@debian9//image",
-    env = {
-        "JAVA_HOME": "/usr/lib/jvm/java-8-openjdk-amd64",
-    },
-    installation_cleanup_commands = JAVA_CLEANUP_COMMANDS,
-    packages = [
-        "ca-certificates-java",
-        "openjdk-8-jdk-headless",
-        "openjdk-8-jre-headless",
-    ],
-    symlinks = {
-        "/usr/bin/java": "/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java",
-    },
-)
-
-language_tool_layer(
-    name = "java10-ltl",
-    base = "@debian9//image",
-    tars = [
-        "//third_party/openjdk:open_jdk_tar",
-        "//third_party/openjdk:open_jdk_src_tar",
-    ],
-)
-
-language_tool_layer(
-    name = "python-ltl",
-    additional_repos = [
-        "deb http://httpredir.debian.org/debian testing main",
-    ],
-    base = "@debian9//image",
-    installation_cleanup_commands = PYTHON_CLEANUP_COMMANDS,
-    packages = [
-        "python-dev",
-        "python-numpy",
-        "python-pip",
-        "python-setuptools",
-        "python3.6",
-        "python3.6-dev",
-        "python3-numpy",
-        "python3-pip",
-        "python3-setuptools",
-    ],
-    symlinks = {
-        "/usr/bin/python": "/usr/bin/python2.7",
-    },
-)
-
-container_test(
-    name = "toolchain-test",
-    configs = [
-        ":rbe-debian9.yaml",
-        "//container/common:go.yaml",
-        "//container/common:java.yaml",
-        "//container/common:python2.yaml",
-        "//container/common:rbe-base.yaml",
-        "//container/common/clang:clang.yaml",
-    ],
-    image = ":toolchain",
-    verbose = True,
-)
diff --git a/container/experimental/rbe-debian9/rbe-debian9.yaml b/container/experimental/rbe-debian9/rbe-debian9.yaml
deleted file mode 100644
index 228ff5f..0000000
--- a/container/experimental/rbe-debian9/rbe-debian9.yaml
+++ /dev/null
@@ -1,23 +0,0 @@
-schemaVersion: "2.0.0"
-
-# Distro-specific tests
-fileContentTests:
-- name: 'os-version'
-  expectedContents: ['Debian GNU/Linux 9']
-  path: '/etc/issue.net'
-
-fileExistenceTests:
-- name: 'Python3'
-  path: '/usr/bin/python3'
-  shouldExist: true
-
-commandTests:
-- name: 'python3-version'
-  command: 'python3'
-  args: ['-V']
-  expectedOutput: ['Python 3.6.*']
-
-metadataTest:
-  env:
-    - key: 'PATH'
-      value: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin'
diff --git a/container/test/BUILD b/container/test/BUILD
deleted file mode 100644
index 263db40..0000000
--- a/container/test/BUILD
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright 2017 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-licenses(["notice"])  # Apache 2.0
-
-package(default_visibility = ["//visibility:public"])
-
-exports_files(glob(["**"]))
diff --git a/container/ubuntu16_04/builders/rbe-ubuntu16_04/rbe-ubuntu16_04.yaml b/container/ubuntu16_04/builders/rbe-ubuntu16_04/rbe-ubuntu16_04.yaml
index 2cbc113..9e9547c 100644
--- a/container/ubuntu16_04/builders/rbe-ubuntu16_04/rbe-ubuntu16_04.yaml
+++ b/container/ubuntu16_04/builders/rbe-ubuntu16_04/rbe-ubuntu16_04.yaml
@@ -1,13 +1,5 @@
 schemaVersion: "2.0.0"
 
-# This is failing in Debian9 base. Once resolved, move this test to
-# container/common/rbe-base.yaml.
-commandTests:
-- name: 'check-curl'
-  command: 'curl'
-  args: ['--version']
-  expectedOutput: ['curl .* \(x86_64-pc-linux-gnu\).*']
-
 metadataTest:
   env:
     - key: 'PATH'
diff --git a/repositories/images.bzl b/repositories/images.bzl
index 97b5f9d..c93a49c 100644
--- a/repositories/images.bzl
+++ b/repositories/images.bzl
@@ -77,14 +77,6 @@
             repository = "google/debian8",
         )
 
-    if "debian9" not in excludes:
-        container_pull(
-            name = "debian9",
-            digest = toolchain_container_sha256s()["debian9"],
-            registry = "marketplace.gcr.io",
-            repository = "google/debian9",
-        )
-
     if "ubuntu16_04" not in excludes:
         container_pull(
             name = "ubuntu16_04",
diff --git a/repositories/repositories.bzl b/repositories/repositories.bzl
index 0647915..7b7c013 100644
--- a/repositories/repositories.bzl
+++ b/repositories/repositories.bzl
@@ -29,13 +29,11 @@
     "//third_party/clang:revision.bzl",
     "CLANG_REVISION",
     "DEBIAN8_CLANG_SHA256",
-    "DEBIAN9_CLANG_SHA256",
     "UBUNTU16_04_CLANG_SHA256",
 )
 load(
     "//third_party/libcxx:revision.bzl",
     "DEBIAN8_LIBCXX_SHA256",
-    "DEBIAN9_LIBCXX_SHA256",
     "LIBCXX_REVISION",
     "UBUNTU16_04_LIBCXX_SHA256",
 )
@@ -88,14 +86,6 @@
             urls = ["https://github.com/GoogleContainerTools/base-images-docker/archive/4f13bab1c063aa7d7388f62a6807317e252bcae0.tar.gz"],
         )
 
-    if "distroless" not in excludes:
-        http_archive(
-            name = "distroless",
-            sha256 = "daf9b18ca2d4ae11501846a311011ef2fa2c8db95529c5b5f6069977967712e0",
-            strip_prefix = "distroless-10f0810b962145e4636282005226c4eb72519182",
-            urls = ["https://github.com/GoogleCloudPlatform/distroless/archive/10f0810b962145e4636282005226c4eb72519182.tar.gz"],
-        )
-
     # ================================ GPG Keys ================================
     # Bazel gpg key necessary to install Bazel in the containers.
     if "bazel_gpg" not in excludes:
@@ -156,14 +146,6 @@
             urls = ["https://storage.googleapis.com/clang-builds-stable/clang-debian8/clang_" + CLANG_REVISION + ".tar.gz"],
         )
 
-    if "debian9_clang_release" not in excludes:
-        http_file(
-            name = "debian9_clang_release",
-            downloaded_file_path = "clang_" + CLANG_REVISION + ".tar.gz",
-            sha256 = DEBIAN9_CLANG_SHA256,
-            urls = ["https://storage.googleapis.com/clang-builds-stable/clang-debian9/clang_" + CLANG_REVISION + ".tar.gz"],
-        )
-
     if "ubuntu16_04_clang_release" not in excludes:
         http_file(
             name = "ubuntu16_04_clang_release",
@@ -181,14 +163,6 @@
             urls = ["https://storage.googleapis.com/clang-builds-stable/clang-debian8/libcxx-msan_" + LIBCXX_REVISION + ".tar.gz"],
         )
 
-    if "debian9_libcxx_release" not in excludes:
-        http_file(
-            name = "debian9_libcxx_release",
-            downloaded_file_path = "libcxx-msan_" + LIBCXX_REVISION + ".tar.gz",
-            sha256 = DEBIAN9_LIBCXX_SHA256,
-            urls = ["https://storage.googleapis.com/clang-builds-stable/clang-debian9/libcxx-msan_" + LIBCXX_REVISION + ".tar.gz"],
-        )
-
     if "ubuntu16_04_libcxx_release" not in excludes:
         http_file(
             name = "ubuntu16_04_libcxx_release",
diff --git a/rules/docker_config.bzl b/rules/docker_config.bzl
index a6e9938..03ed18b 100644
--- a/rules/docker_config.bzl
+++ b/rules/docker_config.bzl
@@ -408,7 +408,7 @@
     This rule is implemented by extending the container_image rule in
     https://github.com/bazelbuild/rules_docker. The rule installs debs packages
     to run bazel (using the package manager rules offered by
-    https://github.com/GoogleCloudPlatform/distroless/tree/master/package_manager).
+    https://github.com/GoogleContainerTools/base-images-docker).
     The rule creates the container with a command that pulls a repo from github,
     and runs bazel build for a series of remote repos. Files generated in these
     repos are copied to a mount point inside the Bazel output tree.
diff --git a/rules/skylib/BUILD b/rules/skylib/BUILD
deleted file mode 100644
index 278ccba..0000000
--- a/rules/skylib/BUILD
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2017 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-licenses(["notice"])  # Apache 2.0
-
-package(default_visibility = ["//visibility:public"])
-
-load("@bazel_skylib//:skylark_library.bzl", "skylark_library")
-
-skylark_library(
-    name = "packages",
-    srcs = [
-        "package_names.bzl",
-        "packages.bzl",
-    ],
-)
diff --git a/rules/skylib/package_names.bzl b/rules/skylib/package_names.bzl
deleted file mode 100644
index fdcad5b..0000000
--- a/rules/skylib/package_names.bzl
+++ /dev/null
@@ -1,457 +0,0 @@
-# Copyright 2017 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""package_names.bzl contains definitions of functions that return lists of package names.
-
-This includes all package names for a given distro (i.e., def
-<distro>_package_names) as well as private defs defining all packages for a
-given tool (a tool requires several packages to be installed). This file also
-contains a struct with the names of all tools. Lastly, this file defines a map
-from tools to package names for each distro (i.e., def <distro>_tools()).
-"""
-
-tool_names = struct(
-    bazel = "bazel",
-    binutils = "binutils",
-    curl = "curl",
-    ed = "ed",
-    file = "file",
-    gcc = "gcc",
-    git = "git",
-    java = "java",
-    java_no_ca_certs = "java_no_ca_certs",
-    less = "less",
-    lib_cpp = "lib_cpp",
-    netcat = "netcat",
-    openssh_client = "openssh_client",
-    patch = "patch",
-    python3_dev = "python3_dev",
-    python3_numpy = "python3_numpy",
-    python3_pip = "python3_pip",
-    python_dev = "python_dev",
-    python_numpy = "python_numpy",
-    python_pip = "python_pip",
-    wget = "wget",
-    zip = "zip",
-)
-
-def jessie_tools():
-    return {
-        tool_names.binutils: _jessie_binutils_package_names(),
-        tool_names.curl: _jessie_curl_package_names(),
-        tool_names.ed: _jessie_ed_package_names(),
-        tool_names.file: _jessie_file_package_names(),
-        tool_names.gcc: _jessie_gcc_package_names(),
-        tool_names.git: _jessie_git_package_names(),
-        tool_names.java: _jessie_java_package_names(),
-        tool_names.java_no_ca_certs: _jessie_java_no_ca_certs_package_names(),
-        tool_names.less: _jessie_less_package_names(),
-        tool_names.lib_cpp: _jessie_lib_cpp_package_names(),
-        tool_names.netcat: _jessie_netcat_package_names(),
-        tool_names.openssh_client: _jessie_openssh_client_package_names(),
-        tool_names.patch: _jessie_patch_package_names(),
-        tool_names.python_dev: _jessie_python_dev_package_names(),
-        tool_names.python_numpy: _jessie_python_numpy_package_names(),
-        tool_names.python_pip: _jessie_python_pip_package_names(),
-        tool_names.python3_dev: _jessie_python3_dev_package_names(),
-        tool_names.python3_numpy: _jessie_python3_numpy_package_names(),
-        tool_names.python3_pip: _jessie_python3_pip_package_names(),
-        tool_names.wget: _jessie_wget_package_names(),
-        tool_names.zip: _zip_package_names(),
-    }
-
-def jessie_package_names():
-    return _package_names(jessie_tools)
-
-def _package_names(tools):
-    packages = []
-    for tool in tools().values():
-        packages.extend(tool)
-    return depset(packages).to_list()
-
-def _jessie_binutils_package_names():
-    return [
-        "binutils",
-    ]
-
-def _jessie_curl_package_names():
-    return [
-        "curl",
-        "libcurl3",
-        "libffi6",
-        "libgmp10",
-        "libgnutls-deb0-28",
-        "libgssapi-krb5-2",
-        "libhogweed2",
-        "libidn11",
-        "libk5crypto3",
-        "libkeyutils1",
-        "libkrb5-3",
-        "libkrb5support0",
-        "libldap-2.4-2",
-        "libnettle4",
-        "libp11-kit0",
-        "librtmp1",
-        "libsasl2-2",
-        "libsasl2-modules-db",
-        "libssh2-1",
-        "libtasn1-6",
-    ]
-
-def _jessie_gcc_package_names():
-    return [
-        "binutils",
-        "cpp",
-        "cpp-4.9",
-        "g++",
-        "g++-4.9",
-        "gcc",
-        "gcc-4.9",
-        "libasan1",
-        "libatomic1",
-        "libc-dev-bin",
-        "libc6-dev",
-        "libcilkrts5",
-        "libcloog-isl4",
-        "libgcc-4.9-dev",
-        "libgmp10",
-        "libgomp1",
-        "libisl10",
-        "libitm1",
-        "liblsan0",
-        "libmpc3",
-        "libmpfr4",
-        "libquadmath0",
-        "libstdc++-4.9-dev",
-        "libtsan0",
-        "libubsan0",
-        "linux-libc-dev",
-    ]
-
-def _jessie_ed_package_names():
-    return [
-        "ed",
-    ]
-
-def _jessie_file_package_names():
-    return [
-        "file",
-        "libmagic1",
-    ]
-
-def _jessie_git_package_names():
-    return [
-        "git",
-        "git-man",
-        "libcurl3-gnutls",
-        "liberror-perl",
-        "libexpat1",
-        "libffi6",
-        "libgdbm3",
-        "libgmp10",
-        "libgnutls-deb0-28",
-        "libgssapi-krb5-2",
-        "libhogweed2",
-        "libidn11",
-        "libk5crypto3",
-        "libkeyutils1",
-        "libkrb5-3",
-        "libkrb5support0",
-        "libldap-2.4-2",
-        "libnettle4",
-        "libp11-kit0",
-        "librtmp1",
-        "libsasl2-2",
-        "libsasl2-modules-db",
-        "libssh2-1",
-        "libtasn1-6",
-        "perl",
-        "perl-modules",
-        # Though not strictly required, we get a 'Problem with the SSL CA cert'
-        # errror w/o these packages
-        "ca-certificates",
-        "libssl1.0.0",
-        "openssl",
-    ]
-
-def _jessie_java_no_ca_certs_package_names():
-    return [
-        "fontconfig-config",
-        "fonts-dejavu-core",
-        "java-common",
-        "libavahi-client3",
-        "libavahi-common-data",
-        "libavahi-common3",
-        "libcups2",
-        "libdbus-1-3",
-        "libexpat1",
-        "libffi6",
-        "libfontconfig1",
-        "libfreetype6",
-        "libgmp10",
-        "libgnutls-deb0-28",
-        "libgssapi-krb5-2",
-        "libhogweed2",
-        "libjpeg62-turbo",
-        "libk5crypto3",
-        "libkeyutils1",
-        "libkrb5-3",
-        "libkrb5support0",
-        "liblcms2-2",
-        "libnettle4",
-        "libnspr4",
-        "libnss3",
-        "libp11-kit0",
-        "libpcsclite1",
-        "libpng12-0",
-        "libsqlite3-0",
-        "libtasn1-6",
-        "libx11-6",
-        "libx11-data",
-        "libxau6",
-        "libxcb1",
-        "libxdmcp6",
-        "libxext6",
-        "libxi6",
-        "libxrender1",
-        "libxtst6",
-        "openjdk-8-jdk-headless",
-        "openjdk-8-jre-headless",
-        "ucf",
-        "x11-common",
-        "zlib1g",
-    ]
-
-def _jessie_java_package_names():
-    return _jessie_java_no_ca_certs_package_names() + ["ca-certificates-java"]
-
-def _jessie_less_package_names():
-    return [
-        "less",
-        "libc6",
-        "libtinfo5",
-        "debianutils",
-    ]
-
-def _jessie_lib_cpp_package_names():
-    return [
-        "libasan1",
-        "libatomic1",
-        "libc-dev-bin",
-        "libc6-dev",
-        "libcilkrts5",
-        "libgcc-4.9-dev",
-        "libgomp1",
-        "libitm1",
-        "liblsan0",
-        "libquadmath0",
-        "libstdc++-4.9-dev",
-        "libtsan0",
-        "libubsan0",
-        "linux-libc-dev",
-    ]
-
-def _jessie_netcat_package_names():
-    return [
-        "netcat",
-        "netcat-traditional",
-    ]
-
-def _jessie_openssh_client_package_names():
-    return [
-        "libbsd0",
-        "libedit2",
-        "libgssapi-krb5-2",
-        "libk5crypto3",
-        "libkeyutils1",
-        "libkrb5-3",
-        "libkrb5support0",
-        "openssh-client",
-    ]
-
-def _jessie_patch_package_names():
-    return [
-        "libc6",
-        "patch",
-    ]
-
-def _jessie_python3_dev_package_names():
-    return [
-        "dh-python",
-        "libc-dev-bin",
-        "libc6-dev",
-        "libexpat1",
-        "libexpat1-dev",
-        "libffi6",
-        "libmpdec2",
-        "libpython3-dev",
-        "libpython3-stdlib",
-        "libpython3.4",
-        "libpython3.4-dev",
-        "libpython3.4-minimal",
-        "libpython3.4-stdlib",
-        "libsqlite3-0",
-        "linux-libc-dev",
-        "mime-support",
-        "python3",
-        "python3-dev",
-        "python3-minimal",
-        "python3.4",
-        "python3.4-dev",
-        "python3.4-minimal",
-    ]
-
-def _jessie_python3_numpy_package_names():
-    return [
-        "dh-python",
-        "libblas-common",
-        "libblas3",
-        "libexpat1",
-        "libffi6",
-        "libgfortran3",
-        "liblapack3",
-        "libmpdec2",
-        "libpython3-stdlib",
-        "libpython3.4-minimal",
-        "libpython3.4-stdlib",
-        "libquadmath0",
-        "libsqlite3-0",
-        "mime-support",
-        "python3",
-        "python3-minimal",
-        "python3-numpy",
-        "python3.4",
-        "python3.4-minimal",
-    ]
-
-def _jessie_python3_pip_package_names():
-    return [
-        "dh-python",
-        "libexpat1",
-        "libffi6",
-        "libmpdec2",
-        "libpython3-stdlib",
-        "libpython3.4-minimal",
-        "libpython3.4-stdlib",
-        "libsqlite3-0",
-        "mime-support",
-        "python3",
-        "python3-chardet",
-        "python3-colorama",
-        "python3-distlib",
-        "python3-html5lib",
-        "python3-minimal",
-        "python3-pip",
-        "python3-pkg-resources",
-        "python3-requests",
-        "python3-setuptools",
-        "python3-six",
-        "python3-urllib3",
-        "python3.4",
-        "python3.4-minimal",
-    ]
-
-def _jessie_python_dev_package_names():
-    return [
-        "libc-dev-bin",
-        "libc6-dev",
-        "libexpat1",
-        "libexpat1-dev",
-        "libffi6",
-        "libpython-dev",
-        "libpython-stdlib",
-        "libpython2.7",
-        "libpython2.7-dev",
-        "libpython2.7-minimal",
-        "libpython2.7-stdlib",
-        "libsqlite3-0",
-        "linux-libc-dev",
-        "mime-support",
-        "python",
-        "python-dev",
-        "python-minimal",
-        "python2.7",
-        "python2.7-dev",
-        "python2.7-minimal",
-    ]
-
-def _jessie_python_pip_package_names():
-    return [
-        "libexpat1",
-        "libffi6",
-        "libpython-stdlib",
-        "libpython2.7-minimal",
-        "libpython2.7-stdlib",
-        "libsqlite3-0",
-        "mime-support",
-        "python",
-        "python-chardet",
-        "python-colorama",
-        "python-distlib",
-        "python-html5lib",
-        "python-minimal",
-        "python-pip",
-        "python-pkg-resources",
-        "python-requests",
-        "python-setuptools",
-        "python-six",
-        "python-urllib3",
-        "python2.7",
-        "python2.7-minimal",
-    ]
-
-def _jessie_python_numpy_package_names():
-    return [
-        "libblas-common",
-        "libblas3",
-        "libexpat1",
-        "libffi6",
-        "libgfortran3",
-        "liblapack3",
-        "libpython-stdlib",
-        "libpython2.7-minimal",
-        "libpython2.7-stdlib",
-        "libquadmath0",
-        "libsqlite3-0",
-        "mime-support",
-        "python",
-        "python-minimal",
-        "python-numpy",
-        "python2.7",
-        "python2.7-minimal",
-    ]
-
-def _jessie_wget_package_names():
-    return [
-        "libffi6",
-        "libgmp10",
-        "libgnutls-deb0-28",
-        "libhogweed2",
-        "libicu52",
-        "libidn11",
-        "libnettle4",
-        "libp11-kit0",
-        "libpsl0",
-        "libtasn1-6",
-        "wget",
-        # Needed for cert validation done by wget
-        "ca-certificates",
-        "libssl1.0.0",
-        "openssl",
-    ]
-
-def _zip_package_names():
-    return [
-        "zip",
-        "unzip",
-    ]
diff --git a/rules/skylib/packages.bzl b/rules/skylib/packages.bzl
deleted file mode 100644
index fa4e353..0000000
--- a/rules/skylib/packages.bzl
+++ /dev/null
@@ -1,93 +0,0 @@
-# Copyright 2017 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""packages.bzl contains definitions of functions that return packages.
-
-Uses package_names.bzl to resolve packages needed for
-tools installed in different containers.
-"""
-
-load(
-    "@jessie_ca_certs_package_bundle//file:packages.bzl",
-    ca_certs_packages = "packages",
-)
-load(
-    "@jessie_package_bundle//file:packages.bzl",
-    jessie_packages = "packages",
-)
-load(
-    ":package_names.bzl",
-    "jessie_tools",
-    "tool_names",
-)
-
-def get_jessie_packages(pkg_list):
-    """Common function for getting jessie packages."""
-    return [jessie_packages[p] for p in pkg_list]
-
-def base_layer_packages():
-    """Base packages for fully loaded toolchain."""
-    base_tools = [
-        tool_names.binutils,
-        tool_names.curl,
-        tool_names.ed,
-        tool_names.file,
-        tool_names.git,
-        tool_names.less,
-        tool_names.netcat,
-        tool_names.openssh_client,
-        tool_names.patch,
-        tool_names.wget,
-        tool_names.zip,
-    ]
-    packages = []
-    for tool in base_tools:
-        packages.extend(get_jessie_packages(jessie_tools()[tool]))
-    return depset(packages).to_list()
-
-def clang_layer_packages():
-    """Packages for the clang layer."""
-    clang_tools = [
-        tool_names.binutils,
-        tool_names.lib_cpp,
-    ]
-    packages = []
-    for tool in clang_tools:
-        packages.extend(get_jessie_packages(jessie_tools()[tool]))
-    return depset(packages).to_list()
-
-def python_layer_packages():
-    """Packages for the python layer."""
-    python_tools = [
-        tool_names.python_dev,
-        tool_names.python_numpy,
-        tool_names.python_pip,
-        tool_names.python3_dev,
-        tool_names.python3_numpy,
-        tool_names.python3_pip,
-    ]
-    packages = []
-    for tool in python_tools:
-        packages.extend(get_jessie_packages(jessie_tools()[tool]))
-    return depset(packages).to_list()
-
-def java_layer_packages():
-    """Packages for the java layer."""
-    java_tools = [
-        tool_names.java_no_ca_certs,
-    ]
-    packages = []
-    for tool in java_tools:
-        packages.extend(get_jessie_packages(jessie_tools()[tool]))
-    packages.append(ca_certs_packages["ca-certificates-java"])
-    return depset(packages).to_list()
diff --git a/rules/toolchain_containers.bzl b/rules/toolchain_containers.bzl
index 3f221f1..439baa2 100644
--- a/rules/toolchain_containers.bzl
+++ b/rules/toolchain_containers.bzl
@@ -5,8 +5,6 @@
         ###########################################################
         # gcr.io/cloud-marketplace/google/debian8:latest
         "debian8": "sha256:a6df7738c401aef6bf9c113eb1eea7f3921417fd4711ea28100681f2fe483ea2",
-        # gcr.io/cloud-marketplace/google/debian9:latest
-        "debian9": "sha256:741d18b41622814ae6eab29b0679dd45318437998213a5cb5532003846b435e1",
         # gcr.io/cloud-marketplace/google/ubuntu16_04:latest
         "ubuntu16_04": "sha256:df51b5c52d71c9867cd9c1c88c81f67a85ff87f1defe7e9b7ac5fb7d652596bf",
 
diff --git a/third_party/clang/BUILD b/third_party/clang/BUILD
index 1e73424..2f186d6 100644
--- a/third_party/clang/BUILD
+++ b/third_party/clang/BUILD
@@ -35,16 +35,6 @@
 )
 
 pkg_tar(
-    name = "debian9_tar",
-    package_dir = "/usr/local/",
-    strip_prefix = ".",
-    tags = ["manual"],
-    deps = [
-        "@debian9_clang_release//file",
-    ],
-)
-
-pkg_tar(
     name = "ubuntu16_04_tar",
     package_dir = "/usr/local/",
     strip_prefix = ".",
diff --git a/third_party/clang/revision.bzl b/third_party/clang/revision.bzl
index 32d99d5..cf172b7 100644
--- a/third_party/clang/revision.bzl
+++ b/third_party/clang/revision.bzl
@@ -2,6 +2,4 @@
 
 DEBIAN8_CLANG_SHA256 = "96ae880a99c7dd3a20b5eaa202cb713e8cb9820a8e99b06aed6b1f5024a884d9"
 
-DEBIAN9_CLANG_SHA256 = "8def099f798f03c014d7e4c21547cf69e92ca26c01812cb33bf90c5d3f9b4204"
-
 UBUNTU16_04_CLANG_SHA256 = "ee84daf8acffc4a702205a378e8dbdd0e580c58b53ef1381bb35694cae935963"
diff --git a/third_party/libcxx/BUILD b/third_party/libcxx/BUILD
index c1b94b2..7b91a1b 100644
--- a/third_party/libcxx/BUILD
+++ b/third_party/libcxx/BUILD
@@ -35,16 +35,6 @@
 )
 
 pkg_tar(
-    name = "debian9_tar",
-    package_dir = "/usr/local/",
-    strip_prefix = ".",
-    tags = ["manual"],
-    deps = [
-        "@debian9_libcxx_release//file",
-    ],
-)
-
-pkg_tar(
     name = "ubuntu16_04_tar",
     package_dir = "/usr/local/",
     strip_prefix = ".",
diff --git a/third_party/libcxx/revision.bzl b/third_party/libcxx/revision.bzl
index 63c1604..be5c256 100644
--- a/third_party/libcxx/revision.bzl
+++ b/third_party/libcxx/revision.bzl
@@ -2,6 +2,4 @@
 
 DEBIAN8_LIBCXX_SHA256 = "1f28a992888e1da7a369e1e231ea31efa096954ed2b02065d73fb14e5982b922"
 
-DEBIAN9_LIBCXX_SHA256 = "3d60d0150da75ea617f7bca1de5914cb6f2f4d831d53dd4e8fb011f4a2bad8b2"
-
 UBUNTU16_04_LIBCXX_SHA256 = "3c814866724768a4e331f75dd015e4dcc9ae894dc4a320b7f332d5238e41e956"
