change python3 version in bazel containers (#220)

* change python3 version in bazel containers

* fixing bazel-docker-gcloud

* buildifier fix

* add test for apt-add-repo

* improve apt-add-repo check
diff --git a/container/common/python3.yaml b/container/common/python3.yaml
index f0877fc..1c0dbd4 100644
--- a/container/common/python3.yaml
+++ b/container/common/python3.yaml
@@ -2,7 +2,7 @@
 
 fileExistenceTests:
 - name: 'python3'
-  path: '/opt/python3.6/bin/python3'
+  path: '/usr/bin/python3'
   shouldExist: true
 - name: 'pycache3.5'
   path: '/usr/lib/python3.5/__pycache__'
@@ -15,4 +15,8 @@
 - name: 'python3-version'
   command: 'python3'
   args: ['-V']
-  expectedOutput: ['Python 3.6.*']
+  expectedOutput: ['Python 3.*.*']
+- name: 'apt-add-repo-check'
+  command: 'apt-add-repository'
+  args: ['-h']
+  expectedOutput: ['Usage: apt-add-repository']
diff --git a/container/common/python3_rbe.yaml b/container/common/python3_rbe.yaml
new file mode 100644
index 0000000..f0877fc
--- /dev/null
+++ b/container/common/python3_rbe.yaml
@@ -0,0 +1,18 @@
+schemaVersion: "2.0.0"
+
+fileExistenceTests:
+- name: 'python3'
+  path: '/opt/python3.6/bin/python3'
+  shouldExist: true
+- name: 'pycache3.5'
+  path: '/usr/lib/python3.5/__pycache__'
+  shouldExist: false
+- name: 'pycache3.5-test'
+  path: '/usr/lib/python3.5/test/__pycache__'
+  shouldExist: false
+
+commandTests:
+- name: 'python3-version'
+  command: 'python3'
+  args: ['-V']
+  expectedOutput: ['Python 3.6.*']
diff --git a/container/debian8/builders/bazel/container.yaml b/container/debian8/builders/bazel/container.yaml
index 082ae57..2f67509 100644
--- a/container/debian8/builders/bazel/container.yaml
+++ b/container/debian8/builders/bazel/container.yaml
@@ -3,6 +3,6 @@
 metadataTest:
   env:
     - key: 'PATH'
-      value: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/python3.6/bin'
+      value: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
   entrypoint: ["/usr/local/bin/bazel"]
   cmd: []
diff --git a/container/debian8/builders/rbe-debian8/BUILD b/container/debian8/builders/rbe-debian8/BUILD
index 7bc3892..9a6b0ed 100644
--- a/container/debian8/builders/rbe-debian8/BUILD
+++ b/container/debian8/builders/rbe-debian8/BUILD
@@ -65,7 +65,7 @@
         "//container/debian8/layers/go:go-ltl",
         "//container/debian8/layers/java:java-ltl",
         "//container/debian8/layers/java:java10-ltl",
-        "//container/debian8/layers/python:python-ltl",
+        "//container/debian8/layers/python:python-rbe-ltl",
     ],
 )
 
@@ -76,7 +76,7 @@
         "//container/common:go.yaml",
         "//container/common:java.yaml",
         "//container/common:python2.yaml",
-        "//container/common:python3.yaml",
+        "//container/common:python3_rbe.yaml",
         "//container/common:rbe-base.yaml",
         "//container/common/clang:clang.yaml",
         "//container/debian8:debian8.yaml",
diff --git a/container/debian8/layers/python/BUILD b/container/debian8/layers/python/BUILD
index a17ae5b..2b6f0c3 100644
--- a/container/debian8/layers/python/BUILD
+++ b/container/debian8/layers/python/BUILD
@@ -26,7 +26,7 @@
 )
 
 language_tool_layer(
-    name = "python-ltl",
+    name = "python-rbe-ltl",
     base = "@debian8//image",
     env = {
         "PATH": "$PATH:/opt/python3.6/bin",
@@ -46,3 +46,18 @@
     },
     tars = ["//third_party/python:debian8_tar"],
 )
+
+language_tool_layer(
+    name = "python-ltl",
+    base = "@debian8//image",
+    installation_cleanup_commands = PYTHON_CLEANUP_COMMANDS,
+    packages = [
+        "python-dev",
+        "python-setuptools",
+        "python3-dev",
+        "software-properties-common",
+    ],
+    symlinks = {
+        "/usr/bin/python": "/usr/bin/python2.7",
+    },
+)
diff --git a/container/ubuntu14_04/builders/bazel/BUILD b/container/ubuntu14_04/builders/bazel/BUILD
index 28698e9..e8fc1ce 100644
--- a/container/ubuntu14_04/builders/bazel/BUILD
+++ b/container/ubuntu14_04/builders/bazel/BUILD
@@ -74,6 +74,7 @@
         ":container.yaml",
         "//container/common:java.yaml",
         "//container/common:python2.yaml",
+        "//container/common:python3.yaml",
         "//container/common/bazel:bazel_%s.yaml" % bazel_version,
         "//container/common/bazel:bazel_tools.yaml",
         "//container/common/bazel:extra_tools.yaml",
diff --git a/container/ubuntu14_04/layers/python/BUILD b/container/ubuntu14_04/layers/python/BUILD
index 50c8d43..fef564e 100644
--- a/container/ubuntu14_04/layers/python/BUILD
+++ b/container/ubuntu14_04/layers/python/BUILD
@@ -31,6 +31,9 @@
     installation_cleanup_commands = PYTHON_CLEANUP_COMMANDS,
     packages = [
         "python-dev",
+        "python-setuptools",
+        "python3-dev",
+        "software-properties-common",
     ],
     symlinks = {
         "/usr/bin/python": "/usr/bin/python2.7",
diff --git a/container/ubuntu16_04/builders/bazel/container.yaml b/container/ubuntu16_04/builders/bazel/container.yaml
index 082ae57..2f67509 100644
--- a/container/ubuntu16_04/builders/bazel/container.yaml
+++ b/container/ubuntu16_04/builders/bazel/container.yaml
@@ -3,6 +3,6 @@
 metadataTest:
   env:
     - key: 'PATH'
-      value: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/python3.6/bin'
+      value: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
   entrypoint: ["/usr/local/bin/bazel"]
   cmd: []
diff --git a/container/ubuntu16_04/builders/bazel_docker_gcloud/BUILD b/container/ubuntu16_04/builders/bazel_docker_gcloud/BUILD
index 76bc767..b99c03f 100644
--- a/container/ubuntu16_04/builders/bazel_docker_gcloud/BUILD
+++ b/container/ubuntu16_04/builders/bazel_docker_gcloud/BUILD
@@ -54,7 +54,7 @@
         "//container/ubuntu16_04/layers/clang:clang-ltl",
         "//container/ubuntu16_04/layers/java:java-ltl",
         "//container/ubuntu16_04/layers/java:java10-ltl",
-        "//container/ubuntu16_04/layers/python:python-ltl",
+        "//container/ubuntu16_04/layers/python:python-rbe-ltl",
         "//container/ubuntu16_04/layers/bazel:bazel-tools",
         "//container/ubuntu16_04/layers/bazel:bazel_%s-ltl" % bazel_version,
         "//container/ubuntu16_04/layers/docker-17.12.0:docker-ltl",
@@ -69,7 +69,7 @@
         ":container.yaml",
         "//container/common:java.yaml",
         "//container/common:python2.yaml",
-        "//container/common:python3.yaml",
+        "//container/common:python3_rbe.yaml",
         "//container/common/clang:clang.yaml",
         "//container/common/bazel:bazel_%s.yaml" % bazel_version,
         "//container/common/bazel:bazel_tools.yaml",
diff --git a/container/ubuntu16_04/builders/rbe-ubuntu16_04/BUILD b/container/ubuntu16_04/builders/rbe-ubuntu16_04/BUILD
index 7efcd0c..fb797b4 100644
--- a/container/ubuntu16_04/builders/rbe-ubuntu16_04/BUILD
+++ b/container/ubuntu16_04/builders/rbe-ubuntu16_04/BUILD
@@ -67,7 +67,7 @@
         "//container/ubuntu16_04/layers/go:go-ltl",
         "//container/ubuntu16_04/layers/java:java-ltl",
         "//container/ubuntu16_04/layers/java:java10-ltl",
-        "//container/ubuntu16_04/layers/python:python-ltl",
+        "//container/ubuntu16_04/layers/python:python-rbe-ltl",
     ],
 )
 
@@ -78,7 +78,7 @@
         "//container/common:go.yaml",
         "//container/common:java.yaml",
         "//container/common:python2.yaml",
-        "//container/common:python3.yaml",
+        "//container/common:python3_rbe.yaml",
         "//container/common:rbe-base.yaml",
         "//container/common/clang:clang.yaml",
         "//container/ubuntu16_04:ubuntu16_04.yaml",
diff --git a/container/ubuntu16_04/layers/python/BUILD b/container/ubuntu16_04/layers/python/BUILD
index af926b1..1afba8b 100644
--- a/container/ubuntu16_04/layers/python/BUILD
+++ b/container/ubuntu16_04/layers/python/BUILD
@@ -26,7 +26,7 @@
 )
 
 language_tool_layer(
-    name = "python-ltl",
+    name = "python-rbe-ltl",
     base = "@ubuntu16_04//image",
     env = {
         "PATH": "$PATH:/opt/python3.6/bin",
@@ -46,3 +46,18 @@
     },
     tars = ["//third_party/python:ubuntu16_04_tar"],
 )
+
+language_tool_layer(
+    name = "python-ltl",
+    base = "@ubuntu16_04//image",
+    installation_cleanup_commands = PYTHON_CLEANUP_COMMANDS,
+    packages = [
+        "python-dev",
+        "python-setuptools",
+        "python3-dev",
+        "software-properties-common",
+    ],
+    symlinks = {
+        "/usr/bin/python": "/usr/bin/python2.7",
+    },
+)