Add more common dependencies to repositories.bzl. (#147)
diff --git a/WORKSPACE b/WORKSPACE
index 58f453e..ebc9119 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -32,6 +32,13 @@
container_repositories()
+load(
+ "//repositories:images.bzl",
+ bazel_toolchains_images = "images",
+)
+
+bazel_toolchains_images()
+
load("@io_bazel_rules_go//go:def.bzl", "go_register_toolchains", "go_rules_dependencies")
go_rules_dependencies()
@@ -48,71 +55,6 @@
# This is only needed by the old package manager.
package_manager_repositories()
-load("//rules:toolchain_containers.bzl", "toolchain_container_sha256s")
-
-# TODO(xingao) Switch to use "marketplace.gcr.io" registry once Buildkite support proper auth.
-container_pull(
- name = "debian8",
- digest = toolchain_container_sha256s()["debian8"],
- registry = "l.gcr.io",
- repository = "google/debian8",
-)
-
-# TODO(xingao) Switch to use "marketplace.gcr.io" registry once Buildkite support proper auth.
-container_pull(
- name = "debian9",
- digest = toolchain_container_sha256s()["debian9"],
- registry = "l.gcr.io",
- repository = "google/debian9",
-)
-
-# TODO(xingao) Switch to use "marketplace.gcr.io" registry once Buildkite support proper auth.
-container_pull(
- name = "ubuntu16_04",
- digest = toolchain_container_sha256s()["ubuntu16_04"],
- registry = "l.gcr.io",
- repository = "google/ubuntu16_04",
-)
-
-# TODO(xingao) Switch to use "marketplace.gcr.io" registry once Buildkite support proper auth.
-# Get debian8-built python3 interpreter from l.gcr.io/google/python:latest.
-# Base image: gcr.io/google-appengine/debian8:latest
-# Base image ref: https://github.com/GoogleCloudPlatform/python-runtime/blob/a8a3e8b2d3239c184843db818e34a06f12dc1190/build.sh#L155
-container_pull(
- name = "debian8_python3",
- digest = toolchain_container_sha256s()["debian8_python3"],
- registry = "l.gcr.io",
- repository = "google/python",
-)
-
-# Get ubuntu16_04-built python3 interpreter from gcr.io/google-appengine/python:latest.
-# Base image: gcr.io/gcp-runtimes/ubuntu_16_0_4:latest
-# Base image ref: https://github.com/GoogleCloudPlatform/python-runtime/blob/a8a3e8b2d3239c184843db818e34a06f12dc1190/build.sh#L153
-container_pull(
- name = "ubuntu16_04_python3",
- digest = toolchain_container_sha256s()["ubuntu16_04_python3"],
- registry = "gcr.io",
- repository = "google-appengine/python",
-)
-
-# TODO(xingao) Switch to use "marketplace.gcr.io" registry once Buildkite support proper auth.
-# l.gcr.io/google/clang-debian8:r328903
-container_pull(
- name = "debian8-clang",
- digest = toolchain_container_sha256s()["debian8_clang"],
- registry = "l.gcr.io",
- repository = "google/clang-debian8",
-)
-
-# TODO(xingao) Switch to use "marketplace.gcr.io" registry once Buildkite support proper auth.
-# l.gcr.io/google/clang-ubuntu:r328903
-container_pull(
- name = "ubuntu16_04-clang",
- digest = toolchain_container_sha256s()["ubuntu16_04_clang"],
- registry = "l.gcr.io",
- repository = "google/clang-ubuntu",
-)
-
container_pull(
name = "official_jessie",
registry = "index.docker.io",
@@ -127,24 +69,6 @@
tag = "16.04",
)
-http_file(
- name = "debian_docker_gpg",
- sha256 = "1500c1f56fa9e26b9b8f42452a553675796ade0807cdce11975eb98170b3a570",
- urls = ["https://download.docker.com/linux/debian/gpg"],
-)
-
-http_file(
- name = "xenial_docker_gpg",
- sha256 = "1500c1f56fa9e26b9b8f42452a553675796ade0807cdce11975eb98170b3a570",
- urls = ["https://download.docker.com/linux/ubuntu/gpg"],
-)
-
-http_file(
- name = "gcloud_gpg",
- sha256 = "226ba1072f20e4ff97ee4f94e87bf45538a900a6d9b25399a7ac3dc5a2f3af87",
- urls = ["https://packages.cloud.google.com/apt/doc/apt-key.gpg"],
-)
-
# 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"
@@ -193,73 +117,6 @@
],
)
-load(
- "//third_party/golang:revision.bzl",
- "GOLANG_REVISION",
- "GOLANG_SHA256",
-)
-
-# Golang
-http_file(
- name = "golang_release",
- sha256 = GOLANG_SHA256,
- urls = ["https://storage.googleapis.com/golang/go" + GOLANG_REVISION + ".linux-amd64.tar.gz"],
-)
-
-load(
- "//third_party/clang:revision.bzl",
- "CLANG_REVISION",
- "DEBIAN8_CLANG_SHA256",
- "DEBIAN9_CLANG_SHA256",
- "UBUNTU16_04_CLANG_SHA256",
-)
-
-# Clang
-http_file(
- name = "debian8_clang_release",
- sha256 = DEBIAN8_CLANG_SHA256,
- urls = ["https://storage.googleapis.com/clang-builds-stable/clang-debian8/clang_" + CLANG_REVISION + ".tar.gz"],
-)
-
-http_file(
- name = "debian9_clang_release",
- sha256 = DEBIAN9_CLANG_SHA256,
- urls = ["https://storage.googleapis.com/clang-builds-stable/clang-debian9/clang_" + CLANG_REVISION + ".tar.gz"],
-)
-
-http_file(
- name = "ubuntu16_04_clang_release",
- sha256 = UBUNTU16_04_CLANG_SHA256,
- urls = ["https://storage.googleapis.com/clang-builds-stable/clang-ubuntu16_04/clang_" + CLANG_REVISION + ".tar.gz"],
-)
-
-load(
- "//third_party/libcxx:revision.bzl",
- "DEBIAN8_LIBCXX_SHA256",
- "DEBIAN9_LIBCXX_SHA256",
- "LIBCXX_REVISION",
- "UBUNTU16_04_LIBCXX_SHA256",
-)
-
-# libcxx
-http_file(
- name = "debian8_libcxx_release",
- sha256 = DEBIAN8_LIBCXX_SHA256,
- urls = ["https://storage.googleapis.com/clang-builds-stable/clang-debian8/libcxx-msan_" + LIBCXX_REVISION + ".tar.gz"],
-)
-
-http_file(
- name = "debian9_libcxx_release",
- sha256 = DEBIAN9_LIBCXX_SHA256,
- urls = ["https://storage.googleapis.com/clang-builds-stable/clang-debian9/libcxx-msan_" + LIBCXX_REVISION + ".tar.gz"],
-)
-
-http_file(
- name = "ubuntu16_04_libcxx_release",
- sha256 = UBUNTU16_04_LIBCXX_SHA256,
- urls = ["https://storage.googleapis.com/clang-builds-stable/clang-ubuntu16_04/libcxx-msan_" + LIBCXX_REVISION + ".tar.gz"],
-)
-
# Test purpose only. bazel-toolchains repo at release for Bazel 0.10.0.
# https://github.com/bazelbuild/bazel-toolchains/releases/tag/acffd62
http_file(
@@ -270,18 +127,3 @@
"https://github.com/bazelbuild/bazel-toolchains/archive/44200e0c026d86c53470d107b3697a3e46469c43.tar.gz",
],
)
-
-load(
- "//container/ubuntu16_04/layers/bazel:version.bzl",
- "BAZEL_VERSION_SHA256S",
-)
-
-# Download the Bazel installer.sh for all supported versions.
-[http_file(
- name = "bazel_%s_installer" % (bazel_version.replace(".", "")),
- sha256 = bazel_sha256,
- urls = [
- "https://releases.bazel.build/" + bazel_version + "/release/bazel-" + bazel_version + "-installer-linux-x86_64.sh",
- "https://github.com/bazelbuild/bazel/releases/download/" + bazel_version + "/bazel-" + bazel_version + "-installer-linux-x86_64.sh",
- ],
-) for bazel_version, bazel_sha256 in BAZEL_VERSION_SHA256S.items()]
diff --git a/repositories/images.bzl b/repositories/images.bzl
new file mode 100644
index 0000000..66183fe
--- /dev/null
+++ b/repositories/images.bzl
@@ -0,0 +1,140 @@
+# Copyright 2016 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.
+
+# Once recursive workspace is implemented in Bazel, this file should cease
+# to exist.
+
+load("//rules:toolchain_containers.bzl", "toolchain_container_sha256s")
+load(
+ "@io_bazel_rules_docker//container:container.bzl",
+ "container_pull",
+)
+
+def images():
+ """Pull containers used in bazel-toolchains.
+
+ container_pull() rule depends on
+
+ load(
+ "@io_bazel_rules_docker//container:container.bzl",
+ "container_pull",
+ )
+
+ which then depends on:
+
+ load(
+ "//repositories:repositories.bzl",
+ bazel_toolchains_repositories = "repositories",
+ )
+
+ bazel_toolchains_repositories()
+
+ Therefore, in the WORKSPACE, the right order to load the dependencies is:
+
+ load(
+ "//repositories:repositories.bzl",
+ bazel_toolchains_repositories = "repositories",
+ )
+
+ bazel_toolchains_repositories()
+
+ load(
+ "@io_bazel_rules_docker//container:container.bzl",
+ "container_pull",
+ container_repositories = "repositories",
+ )
+
+ container_repositories()
+
+ load(
+ "//repositories:repositories.bzl",
+ bazel_toolchains_images = "images",
+ )
+
+ bazel_toolchains_images()
+
+ ...
+
+ """
+ excludes = native.existing_rules().keys()
+
+ if "debian8" not in excludes:
+ # TODO(xingao) Switch to use "marketplace.gcr.io" registry once Buildkite support proper auth.
+ container_pull(
+ name = "debian8",
+ digest = toolchain_container_sha256s()["debian8"],
+ registry = "l.gcr.io",
+ repository = "google/debian8",
+ )
+
+ if "debian9" not in excludes:
+ # TODO(xingao) Switch to use "marketplace.gcr.io" registry once Buildkite support proper auth.
+ container_pull(
+ name = "debian9",
+ digest = toolchain_container_sha256s()["debian9"],
+ registry = "l.gcr.io",
+ repository = "google/debian9",
+ )
+
+ if "ubuntu16_04" not in excludes:
+ # TODO(xingao) Switch to use "marketplace.gcr.io" registry once Buildkite support proper auth.
+ container_pull(
+ name = "ubuntu16_04",
+ digest = toolchain_container_sha256s()["ubuntu16_04"],
+ registry = "l.gcr.io",
+ repository = "google/ubuntu16_04",
+ )
+
+ if "debian8_python3" not in excludes:
+ # TODO(xingao) Switch to use "marketplace.gcr.io" registry once Buildkite support proper auth.
+ # Get debian8-built python3 interpreter from l.gcr.io/google/python:latest.
+ # Base image: gcr.io/google-appengine/debian8:latest
+ # Base image ref: https://github.com/GoogleCloudPlatform/python-runtime/blob/a8a3e8b2d3239c184843db818e34a06f12dc1190/build.sh#L155
+ container_pull(
+ name = "debian8_python3",
+ digest = toolchain_container_sha256s()["debian8_python3"],
+ registry = "l.gcr.io",
+ repository = "google/python",
+ )
+
+ if "ubuntu16_04_python3" not in excludes:
+ # Get ubuntu16_04-built python3 interpreter from gcr.io/google-appengine/python:latest.
+ # Base image: gcr.io/gcp-runtimes/ubuntu_16_0_4:latest
+ # Base image ref: https://github.com/GoogleCloudPlatform/python-runtime/blob/a8a3e8b2d3239c184843db818e34a06f12dc1190/build.sh#L153
+ container_pull(
+ name = "ubuntu16_04_python3",
+ digest = toolchain_container_sha256s()["ubuntu16_04_python3"],
+ registry = "gcr.io",
+ repository = "google-appengine/python",
+ )
+
+ if "debian8-clang" not in excludes:
+ # TODO(xingao) Switch to use "marketplace.gcr.io" registry once Buildkite support proper auth.
+ # l.gcr.io/google/clang-debian8:r328903
+ container_pull(
+ name = "debian8-clang",
+ digest = toolchain_container_sha256s()["debian8_clang"],
+ registry = "l.gcr.io",
+ repository = "google/clang-debian8",
+ )
+
+ if "ubuntu16_04-clang" not in excludes:
+ # TODO(xingao) Switch to use "marketplace.gcr.io" registry once Buildkite support proper auth.
+ # l.gcr.io/google/clang-ubuntu:r328903
+ container_pull(
+ name = "ubuntu16_04-clang",
+ digest = toolchain_container_sha256s()["ubuntu16_04_clang"],
+ registry = "l.gcr.io",
+ repository = "google/clang-ubuntu",
+ )
diff --git a/repositories/repositories.bzl b/repositories/repositories.bzl
index c623ac1..0aaa122 100644
--- a/repositories/repositories.bzl
+++ b/repositories/repositories.bzl
@@ -15,12 +15,36 @@
# Once recursive workspace is implemented in Bazel, this file should cease
# to exist.
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_file")
+load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+load(
+ "//third_party/golang:revision.bzl",
+ "GOLANG_REVISION",
+ "GOLANG_SHA256",
+)
+load(
+ "//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",
+)
+load(
+ "//container/ubuntu16_04/layers/bazel:version.bzl",
+ "BAZEL_VERSION_SHA256S",
+)
def repositories():
"""Download dependencies of bazel-toolchains."""
excludes = native.existing_rules().keys()
+ # ============================== Repositories ==============================
if "io_bazel_rules_docker" not in excludes:
http_archive(
name = "io_bazel_rules_docker",
@@ -53,10 +77,102 @@
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:
- http_file(
+ native.http_file(
name = "bazel_gpg",
sha256 = "30af2ca7abfb65987cd61802ca6e352aadc6129dfb5bfc9c81f16617bc3a4416",
urls = ["https://bazel.build/bazel-release.pub.gpg"],
)
+
+ # Docker gpg key necessary to install Docker in the containers.
+ if "debian_docker_gpg" not in excludes:
+ native.http_file(
+ name = "debian_docker_gpg",
+ sha256 = "1500c1f56fa9e26b9b8f42452a553675796ade0807cdce11975eb98170b3a570",
+ urls = ["https://download.docker.com/linux/debian/gpg"],
+ )
+
+ # Docker gpg key necessary to install Docker in the containers.
+ if "xenial_docker_gpg" not in excludes:
+ native.http_file(
+ name = "xenial_docker_gpg",
+ sha256 = "1500c1f56fa9e26b9b8f42452a553675796ade0807cdce11975eb98170b3a570",
+ urls = ["https://download.docker.com/linux/ubuntu/gpg"],
+ )
+
+ # GCloud gpg key necessary to install GCloud in the containers.
+ if "gcloud_gpg" not in excludes:
+ native.http_file(
+ name = "gcloud_gpg",
+ sha256 = "226ba1072f20e4ff97ee4f94e87bf45538a900a6d9b25399a7ac3dc5a2f3af87",
+ urls = ["https://packages.cloud.google.com/apt/doc/apt-key.gpg"],
+ )
+
+ # =============================== Toolchains ===============================
+ # Golang
+ if "golang_release" not in excludes:
+ native.http_file(
+ name = "golang_release",
+ sha256 = GOLANG_SHA256,
+ urls = ["https://storage.googleapis.com/golang/go" + GOLANG_REVISION + ".linux-amd64.tar.gz"],
+ )
+
+ # Clang
+ if "debian8_clang_release" not in excludes:
+ native.http_file(
+ name = "debian8_clang_release",
+ sha256 = DEBIAN8_CLANG_SHA256,
+ urls = ["https://storage.googleapis.com/clang-builds-stable/clang-debian8/clang_" + CLANG_REVISION + ".tar.gz"],
+ )
+
+ if "debian9_clang_release" not in excludes:
+ native.http_file(
+ name = "debian9_clang_release",
+ 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:
+ native.http_file(
+ name = "ubuntu16_04_clang_release",
+ sha256 = UBUNTU16_04_CLANG_SHA256,
+ urls = ["https://storage.googleapis.com/clang-builds-stable/clang-ubuntu16_04/clang_" + CLANG_REVISION + ".tar.gz"],
+ )
+
+ # libcxx
+ if "debian8_libcxx_release" not in excludes:
+ native.http_file(
+ name = "debian8_libcxx_release",
+ sha256 = DEBIAN8_LIBCXX_SHA256,
+ urls = ["https://storage.googleapis.com/clang-builds-stable/clang-debian8/libcxx-msan_" + LIBCXX_REVISION + ".tar.gz"],
+ )
+
+ if "debian9_libcxx_release" not in excludes:
+ native.http_file(
+ name = "debian9_libcxx_release",
+ 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:
+ native.http_file(
+ name = "ubuntu16_04_libcxx_release",
+ sha256 = UBUNTU16_04_LIBCXX_SHA256,
+ urls = ["https://storage.googleapis.com/clang-builds-stable/clang-ubuntu16_04/libcxx-msan_" + LIBCXX_REVISION + ".tar.gz"],
+ )
+
+ # ============================ Bazel installers ============================
+ # Official Bazel installer.sh for all supported versions.
+ for bazel_version, bazel_sha256 in BAZEL_VERSION_SHA256S.items():
+ name = "bazel_%s_installer" % (bazel_version.replace(".", ""))
+ if name not in excludes:
+ native.http_file(
+ name = name,
+ sha256 = bazel_sha256,
+ urls = [
+ "https://releases.bazel.build/" + bazel_version + "/release/bazel-" + bazel_version + "-installer-linux-x86_64.sh",
+ "https://github.com/bazelbuild/bazel/releases/download/" + bazel_version + "/bazel-" + bazel_version + "-installer-linux-x86_64.sh",
+ ],
+ )