blob: abc2b075b6f4ddb2442eda9db8083ece8c46d6ea [file] [log] [blame]
# 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(
"//container/rules:docker_toolchains.bzl",
"language_tool_layer",
"toolchain_container",
)
load("@io_bazel_rules_docker//contrib:test.bzl", "container_test")
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 = "@debian8//image",
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": "/opt/python3.6/bin:/usr/local/go/bin:$PATH",
},
language_layers = [
"base-ltl",
"clang-ltl",
"go-ltl",
"java-ltl",
"python-ltl",
],
)
language_tool_layer(
name = "base-ltl",
base = "@debian8//image",
packages = [
"binutils",
"ca-certificates",
"curl",
"ed",
"file",
"git",
"openssh-client",
"unzip",
"wget",
"zip",
],
)
language_tool_layer(
name = "clang-ltl",
base = "@debian8//image",
env = {
"CC": "/usr/local/bin/clang",
"ASAN_SYMBOLIZER_PATH": "/usr/local/bin/llvm-symbolizer",
"MSAN_SYMBOLIZER_PATH": "/usr/local/bin/llvm-symbolizer",
},
packages = [
"libstdc++-4.9-dev",
],
tars = [
"//third_party/clang:debian8_tar",
"//third_party/libcxx:debian8_tar",
],
)
language_tool_layer(
name = "go-ltl",
base = "@debian8//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 jessie-backports main",
],
base = "@debian8//image",
env = {
"JAVA_HOME": "/usr/lib/jvm/java-8-openjdk-amd64",
},
installation_cleanup_commands = JAVA_CLEANUP_COMMANDS,
packages = [
"ca-certificates-java=20161107'*'",
"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 = "python-ltl",
base = "@debian8//image",
env = {
"PATH": "$PATH:/opt/python3.6/bin",
},
installation_cleanup_commands = PYTHON_CLEANUP_COMMANDS,
packages = [
"python-dev",
"python-numpy",
"python-pip",
"python-setuptools",
"python3-dev",
"python3-numpy",
"python3-pip",
"python3-setuptools",
],
symlinks = {
"/usr/bin/python": "/usr/bin/python2.7",
"/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",
},
tars = ["//third_party/python:debian8_tar"],
)
container_test(
name = "toolchain-test",
configs = [
"//container/test:rbe-debian8.yaml",
],
image = ":toolchain",
)