# 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")

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@sha256:ace668f0f01e5e562ad09c3f128488ec33fa9126313f16505a86ae77865d1696",
    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@sha256:73f43d9b52e95c821dcd2d6e1bc42ebb1b002623263cea5ae517e6f81d56bc37",
    src_path = "/opt/python3.6",
    tags = ["manual"],
)
