# 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.

# This BUILD file is used for installing clang.tar.gz into /usr/local
# of debian8-clang-fully-loaded container. The clang.tar.gz file was
# downloaded by gsutil_cp rule in the WORKSPACE file, and contains
# the same compiled clang binary as in
# https://console.cloud.google.com/launcher/details/google/clang-debian8

licenses(["notice"])  # Apache 2.0

package(default_visibility = ["//visibility:public"])

load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar")
load("//skylib:container_file_export.bzl", "container_file_export")
load("//rules:toolchain_containers.bzl", "toolchain_container_sha256s")

pkg_tar(
    name = "debian8_tar",
    srcs = glob(
        ["**/*"],
        exclude = ["**/BUILD"],
    ),
    package_dir = "/",
    strip_prefix = ".",
    tags = ["manual"],
    deps = [":debian8_python3"],
)

pkg_tar(
    name = "ubuntu16_04_tar",
    srcs = glob(
        ["**/*"],
        exclude = ["**/BUILD"],
    ),
    package_dir = "/",
    strip_prefix = ".",
    tags = ["manual"],
    deps = [":ubuntu16_04_python3"],
)

# Get debian8-built python3 interpreter from l.gcr.io/google/python container
# Base image: gcr.io/google-appengine/debian8:latest
# https://github.com/GoogleCloudPlatform/python-runtime/blob/a8a3e8b2d3239c184843db818e34a06f12dc1190/build.sh#L155
container_file_export(
    name = "debian8_python3",
    image = "l.gcr.io/google/python@" + toolchain_container_sha256s()["debian8_python3"],
    src_path = "/opt/python3.6",
    tags = ["manual"],
)

# Get ubuntu16_04-built python3 interpreter from gcr.io/google-appengine/python:staging
# Base image: gcr.io/gcp-runtimes/ubuntu_16_0_4:latest
# https://github.com/GoogleCloudPlatform/python-runtime/blob/a8a3e8b2d3239c184843db818e34a06f12dc1190/build.sh#L153
container_file_export(
    name = "ubuntu16_04_python3",
    image = "gcr.io/google-appengine/python@" + toolchain_container_sha256s()["ubuntu16_04_python3"],
    src_path = "/opt/python3.6",
    tags = ["manual"],
)
