Fix Bazel incompatibility issues. (#274)

diff --git a/WORKSPACE b/WORKSPACE
index 9fcc5ef..b0fb8a5 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -112,12 +112,16 @@
 )
 
 load("//rules:environments.bzl", "clang_env")
+load("@bazel_skylib//lib:dicts.bzl", "dicts")
 
 rbe_autoconfig(
     name = "rbe_msan_with_output_base",
     config_dir = "msan",
-    env = clang_env() + {
-        "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
-    },
+    env = dicts.add(
+        clang_env(),
+        {
+            "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
+        },
+    ),
     output_base = "configs/ubuntu16_04_clang/1.1",
 )
diff --git a/configs/debian8_clang/BUILD b/configs/debian8_clang/BUILD
index a76650d..7f043bd 100644
--- a/configs/debian8_clang/BUILD
+++ b/configs/debian8_clang/BUILD
@@ -24,6 +24,7 @@
     "debian8_clang_default_packages",
     "debian8_clang_default_repos",
 )
+load("@bazel_skylib//lib:dicts.bzl", "dicts")
 
 # Created on 2017.10.18
 docker_toolchain_autoconfig(
@@ -104,9 +105,12 @@
     additional_repos = debian8_clang_default_repos(),
     base = "@debian8-clang//image",
     bazel_version = "0.11.0",
-    env = clang_env() + {
-        "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
-    },
+    env = dicts.add(
+        clang_env(),
+        {
+            "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
+        },
+    ),
     keys = debian8_clang_default_keys(),
     packages = debian8_clang_default_packages(),
     tags = ["manual"],
@@ -136,9 +140,12 @@
     additional_repos = debian8_clang_default_repos(),
     base = "@debian8-clang//image",
     bazel_version = "0.12.0",
-    env = clang_env() + {
-        "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
-    },
+    env = dicts.add(
+        clang_env(),
+        {
+            "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
+        },
+    ),
     keys = debian8_clang_default_keys(),
     packages = debian8_clang_default_packages(),
     tags = ["manual"],
@@ -168,9 +175,12 @@
     additional_repos = debian8_clang_default_repos(),
     base = "@debian8-clang//image",
     bazel_version = "0.13.0",
-    env = clang_env() + {
-        "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
-    },
+    env = dicts.add(
+        clang_env(),
+        {
+            "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
+        },
+    ),
     keys = debian8_clang_default_keys(),
     packages = debian8_clang_default_packages(),
     tags = ["manual"],
@@ -200,9 +210,12 @@
     additional_repos = debian8_clang_default_repos(),
     base = "@debian8-clang//image",
     bazel_version = "0.14.1",
-    env = clang_env() + {
-        "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
-    },
+    env = dicts.add(
+        clang_env(),
+        {
+            "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
+        },
+    ),
     keys = debian8_clang_default_keys(),
     packages = debian8_clang_default_packages(),
     tags = ["manual"],
@@ -232,9 +245,12 @@
     additional_repos = debian8_clang_default_repos(),
     base = "@debian8-clang//image",
     bazel_version = "0.15.0",
-    env = clang_env() + {
-        "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
-    },
+    env = dicts.add(
+        clang_env(),
+        {
+            "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
+        },
+    ),
     keys = debian8_clang_default_keys(),
     packages = debian8_clang_default_packages(),
     tags = ["manual"],
@@ -268,9 +284,12 @@
     additional_repos = debian8_clang_default_repos(),
     base = "@debian8-clang//image",
     bazel_version = "0.16.1",
-    env = clang_env() + {
-        "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
-    },
+    env = dicts.add(
+        clang_env(),
+        {
+            "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
+        },
+    ),
     keys = debian8_clang_default_keys(),
     packages = debian8_clang_default_packages(),
     tags = ["manual"],
@@ -304,9 +323,12 @@
     additional_repos = debian8_clang_default_repos(),
     base = "@debian8-clang//image",
     bazel_version = "0.16.1",
-    env = clang_env() + {
-        "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
-    },
+    env = dicts.add(
+        clang_env(),
+        {
+            "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
+        },
+    ),
     keys = debian8_clang_default_keys(),
     packages = debian8_clang_default_packages(),
     tags = ["manual"],
@@ -340,9 +362,12 @@
     additional_repos = debian8_clang_default_repos(),
     base = "@debian8-clang//image",
     bazel_version = "0.17.1",
-    env = clang_env() + {
-        "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
-    },
+    env = dicts.add(
+        clang_env(),
+        {
+            "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
+        },
+    ),
     keys = debian8_clang_default_keys(),
     packages = debian8_clang_default_packages(),
     tags = ["manual"],
@@ -376,9 +401,12 @@
     additional_repos = debian8_clang_default_repos(),
     base = "@debian8-clang//image",
     bazel_version = "0.18.0",
-    env = clang_env() + {
-        "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
-    },
+    env = dicts.add(
+        clang_env(),
+        {
+            "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
+        },
+    ),
     keys = debian8_clang_default_keys(),
     packages = debian8_clang_default_packages(),
     tags = ["manual"],
@@ -412,9 +440,12 @@
     additional_repos = debian8_clang_default_repos(),
     base = "@debian8-clang//image",
     bazel_version = "0.19.0",
-    env = clang_env() + {
-        "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
-    },
+    env = dicts.add(
+        clang_env(),
+        {
+            "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
+        },
+    ),
     keys = debian8_clang_default_keys(),
     packages = debian8_clang_default_packages(),
     tags = ["manual"],
@@ -448,9 +479,12 @@
     additional_repos = debian8_clang_default_repos(),
     base = "@debian8-clang//image",
     bazel_version = "0.19.2",
-    env = clang_env() + {
-        "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
-    },
+    env = dicts.add(
+        clang_env(),
+        {
+            "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
+        },
+    ),
     keys = debian8_clang_default_keys(),
     packages = debian8_clang_default_packages(),
     tags = ["manual"],
@@ -484,9 +518,12 @@
     additional_repos = debian8_clang_default_repos(),
     base = "@debian8-clang//image",
     bazel_version = "0.20.0",
-    env = clang_env() + {
-        "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
-    },
+    env = dicts.add(
+        clang_env(),
+        {
+            "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
+        },
+    ),
     keys = debian8_clang_default_keys(),
     packages = debian8_clang_default_packages(),
     tags = ["manual"],
@@ -520,9 +557,12 @@
     additional_repos = debian8_clang_default_repos(),
     base = "@debian8-clang//image",
     bazel_version = "0.21.0",
-    env = clang_env() + {
-        "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
-    },
+    env = dicts.add(
+        clang_env(),
+        {
+            "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
+        },
+    ),
     keys = debian8_clang_default_keys(),
     packages = debian8_clang_default_packages(),
     tags = ["manual"],
diff --git a/configs/ubuntu16_04_clang/BUILD b/configs/ubuntu16_04_clang/BUILD
index e4c24a6..611908e 100644
--- a/configs/ubuntu16_04_clang/BUILD
+++ b/configs/ubuntu16_04_clang/BUILD
@@ -24,6 +24,7 @@
     "ubuntu16_04_clang_default_packages",
     "ubuntu16_04_clang_default_repos",
 )
+load("@bazel_skylib//lib:dicts.bzl", "dicts")
 
 # Created on 2018.05.09
 # Container: gcr.io/cloud-marketplace/google/clang-ubuntu@sha256:d553634f23f7c437ca35bbc4b6f1f38bb81be32b9ef2df4329dcd36762277bf7
@@ -48,9 +49,12 @@
     additional_repos = ubuntu16_04_clang_default_repos(),
     base = "@ubuntu16_04-clang//image",
     bazel_version = "0.13.0",
-    env = clang_env() + {
-        "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
-    },
+    env = dicts.add(
+        clang_env(),
+        {
+            "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
+        },
+    ),
     keys = ubuntu16_04_clang_default_keys(),
     packages = ubuntu16_04_clang_default_packages(),
     tags = ["manual"],
@@ -80,9 +84,12 @@
     additional_repos = ubuntu16_04_clang_default_repos(),
     base = "@ubuntu16_04-clang//image",
     bazel_version = "0.14.1",
-    env = clang_env() + {
-        "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
-    },
+    env = dicts.add(
+        clang_env(),
+        {
+            "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
+        },
+    ),
     keys = ubuntu16_04_clang_default_keys(),
     packages = ubuntu16_04_clang_default_packages(),
     tags = ["manual"],
@@ -112,9 +119,12 @@
     additional_repos = ubuntu16_04_clang_default_repos(),
     base = "@ubuntu16_04-clang//image",
     bazel_version = "0.15.0",
-    env = clang_env() + {
-        "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
-    },
+    env = dicts.add(
+        clang_env(),
+        {
+            "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
+        },
+    ),
     keys = ubuntu16_04_clang_default_keys(),
     packages = ubuntu16_04_clang_default_packages(),
     tags = ["manual"],
@@ -148,9 +158,12 @@
     additional_repos = ubuntu16_04_clang_default_repos(),
     base = "@ubuntu16_04-clang//image",
     bazel_version = "0.16.1",
-    env = clang_env() + {
-        "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
-    },
+    env = dicts.add(
+        clang_env(),
+        {
+            "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
+        },
+    ),
     keys = ubuntu16_04_clang_default_keys(),
     packages = ubuntu16_04_clang_default_packages(),
     tags = ["manual"],
@@ -184,9 +197,12 @@
     additional_repos = ubuntu16_04_clang_default_repos(),
     base = "@ubuntu16_04-clang//image",
     bazel_version = "0.16.1",
-    env = clang_env() + {
-        "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
-    },
+    env = dicts.add(
+        clang_env(),
+        {
+            "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
+        },
+    ),
     keys = ubuntu16_04_clang_default_keys(),
     packages = ubuntu16_04_clang_default_packages(),
     tags = ["manual"],
@@ -220,9 +236,12 @@
     additional_repos = ubuntu16_04_clang_default_repos(),
     base = "@ubuntu16_04-clang//image",
     bazel_version = "0.17.1",
-    env = clang_env() + {
-        "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
-    },
+    env = dicts.add(
+        clang_env(),
+        {
+            "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
+        },
+    ),
     keys = ubuntu16_04_clang_default_keys(),
     packages = ubuntu16_04_clang_default_packages(),
     tags = ["manual"],
@@ -256,9 +275,12 @@
     additional_repos = ubuntu16_04_clang_default_repos(),
     base = "@ubuntu16_04-clang//image",
     bazel_version = "0.18.0",
-    env = clang_env() + {
-        "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
-    },
+    env = dicts.add(
+        clang_env(),
+        {
+            "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
+        },
+    ),
     keys = ubuntu16_04_clang_default_keys(),
     packages = ubuntu16_04_clang_default_packages(),
     tags = ["manual"],
@@ -292,9 +314,12 @@
     additional_repos = ubuntu16_04_clang_default_repos(),
     base = "@ubuntu16_04-clang//image",
     bazel_version = "0.19.0",
-    env = clang_env() + {
-        "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
-    },
+    env = dicts.add(
+        clang_env(),
+        {
+            "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
+        },
+    ),
     keys = ubuntu16_04_clang_default_keys(),
     packages = ubuntu16_04_clang_default_packages(),
     tags = ["manual"],
@@ -328,9 +353,12 @@
     additional_repos = ubuntu16_04_clang_default_repos(),
     base = "@ubuntu16_04-clang//image",
     bazel_version = "0.19.2",
-    env = clang_env() + {
-        "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
-    },
+    env = dicts.add(
+        clang_env(),
+        {
+            "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
+        },
+    ),
     keys = ubuntu16_04_clang_default_keys(),
     packages = ubuntu16_04_clang_default_packages(),
     tags = ["manual"],
@@ -364,9 +392,12 @@
     additional_repos = ubuntu16_04_clang_default_repos(),
     base = "@ubuntu16_04-clang//image",
     bazel_version = "0.20.0",
-    env = clang_env() + {
-        "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
-    },
+    env = dicts.add(
+        clang_env(),
+        {
+            "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
+        },
+    ),
     keys = ubuntu16_04_clang_default_keys(),
     packages = ubuntu16_04_clang_default_packages(),
     tags = ["manual"],
@@ -400,9 +431,12 @@
     additional_repos = ubuntu16_04_clang_default_repos(),
     base = "@ubuntu16_04-clang//image",
     bazel_version = "0.21.0",
-    env = clang_env() + {
-        "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
-    },
+    env = dicts.add(
+        clang_env(),
+        {
+            "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
+        },
+    ),
     keys = ubuntu16_04_clang_default_keys(),
     packages = ubuntu16_04_clang_default_packages(),
     tags = ["manual"],
diff --git a/release/cc/msan.tpl b/release/cc/msan.tpl
index 10b4f1b..20efe05 100644
--- a/release/cc/msan.tpl
+++ b/release/cc/msan.tpl
@@ -9,9 +9,9 @@
     additional_repos = ${DISTRO}_clang_default_repos(),
     base = "@${DISTRO}-clang//image",
     bazel_version = "${BAZEL_VERSION}",
-    env = clang_env() + {
+    env = dicts.add(clang_env(), {
         "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
-    },
+    }),
     keys = ${DISTRO}_clang_default_keys(),
     packages = ${DISTRO}_clang_default_packages(),
     tags = ["manual"],
diff --git a/repositories/BUILD b/repositories/BUILD
index d55a1c7..198e382 100644
--- a/repositories/BUILD
+++ b/repositories/BUILD
@@ -16,9 +16,9 @@
 
 package(default_visibility = ["//visibility:public"])
 
-load("@bazel_skylib//:skylark_library.bzl", "skylark_library")
+load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
 
-skylark_library(
+bzl_library(
     name = "images",
     srcs = [
         "images.bzl",
@@ -28,7 +28,7 @@
     ],
 )
 
-skylark_library(
+bzl_library(
     name = "repositories",
     srcs = [
         "images.bzl",
diff --git a/repositories/repositories.bzl b/repositories/repositories.bzl
index 464ed70..b153356 100644
--- a/repositories/repositories.bzl
+++ b/repositories/repositories.bzl
@@ -56,9 +56,9 @@
     if "io_bazel_rules_docker" not in excludes:
         http_archive(
             name = "io_bazel_rules_docker",
-            sha256 = "8a04c209b1080506a0f16f81d6f9ce9f2d25f936e4c2f8c8dd1f8bbafa07ed49",
-            strip_prefix = "rules_docker-3732c9d05315bef6a3dbd195c545d6fea3b86880",
-            urls = ["https://github.com/bazelbuild/rules_docker/archive/3732c9d05315bef6a3dbd195c545d6fea3b86880.tar.gz"],
+            sha256 = "aed1c249d4ec8f703edddf35cbe9dfaca0b5f5ea6e4cd9e83e99f3b0d1136c3d",
+            strip_prefix = "rules_docker-0.7.0",
+            urls = ["https://github.com/bazelbuild/rules_docker/archive/v0.7.0.tar.gz"],
         )
 
         # Register the docker toolchain type
@@ -74,16 +74,16 @@
     if "io_bazel_rules_go" not in excludes:
         http_archive(
             name = "io_bazel_rules_go",
-            urls = ["https://github.com/bazelbuild/rules_go/releases/download/0.16.0/rules_go-0.16.0.tar.gz"],
-            sha256 = "ee5fe78fe417c685ecb77a0a725dc9f6040ae5beb44a0ba4ddb55453aad23a8a",
+            urls = ["https://github.com/bazelbuild/rules_go/releases/download/0.16.5/rules_go-0.16.5.tar.gz"],
+            sha256 = "7be7dc01f1e0afdba6c8eb2b43d2fa01c743be1b9273ab1eaf6c233df078d705",
         )
 
     if "base_images_docker" not in excludes:
         http_archive(
             name = "base_images_docker",
-            sha256 = "a97768efdba8ecfa4c2e71499b1ef8fbe95a22044cb26ed5ca062f91a2afcfb1",
-            strip_prefix = "base-images-docker-4f13bab1c063aa7d7388f62a6807317e252bcae0",
-            urls = ["https://github.com/GoogleContainerTools/base-images-docker/archive/4f13bab1c063aa7d7388f62a6807317e252bcae0.tar.gz"],
+            sha256 = "ce6043d38aa7fad421910311aecec865beb060eb56d8c3eb5af62b2805e9379c",
+            strip_prefix = "base-images-docker-7657d04ad9e30b9b8d981b96ae57634cd45ba18a",
+            urls = ["https://github.com/GoogleContainerTools/base-images-docker/archive/7657d04ad9e30b9b8d981b96ae57634cd45ba18a.tar.gz"],
         )
 
     # =============================== Repo rule deps ==========================
diff --git a/rules/BUILD b/rules/BUILD
index 0094af5..02a04c4 100644
--- a/rules/BUILD
+++ b/rules/BUILD
@@ -22,7 +22,7 @@
 ])
 
 load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar")
-load("@bazel_skylib//:skylark_library.bzl", "skylark_library")
+load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
 
 filegroup(
     name = "bazel_installers",
@@ -40,28 +40,28 @@
     ],
 )
 
-skylark_library(
+bzl_library(
     name = "environments",
     srcs = [
         "environments.bzl",
     ],
 )
 
-skylark_library(
+bzl_library(
     name = "toolchain_containers",
     srcs = [
         "toolchain_containers.bzl",
     ],
 )
 
-skylark_library(
+bzl_library(
     name = "gcs",
     srcs = [
         "gcs.bzl",
     ],
 )
 
-skylark_library(
+bzl_library(
     name = "docker_config",
     srcs = [
         "docker_config.bzl",
diff --git a/rules/container/BUILD b/rules/container/BUILD
index b4d55fb..7dc3493 100644
--- a/rules/container/BUILD
+++ b/rules/container/BUILD
@@ -14,16 +14,16 @@
 
 licenses(["notice"])  # Apache 2.0
 
-load("@bazel_skylib//:skylark_library.bzl", "skylark_library")
+load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
 
-skylark_library(
+bzl_library(
     name = "debian_pkg_tar",
     srcs = [
         "debian_pkg_tar.bzl",
     ],
 )
 
-skylark_library(
+bzl_library(
     name = "docker_toolchains",
     srcs = [
         "docker_toolchains.bzl",
diff --git a/rules/container/debian_pkg_tar.bzl b/rules/container/debian_pkg_tar.bzl
index e4ca3d2..41db94b 100644
--- a/rules/container/debian_pkg_tar.bzl
+++ b/rules/container/debian_pkg_tar.bzl
@@ -14,6 +14,7 @@
 
 load("@base_images_docker//package_managers:download_pkgs.bzl", _download_deb_pkgs = "download")
 load("@base_images_docker//package_managers:apt_key.bzl", _apt_key = "key")
+load("@bazel_skylib//lib:dicts.bzl", "dicts")
 
 def _input_validation(kwargs):
     allowed_attribues = ["name", "base", "language_layers"]
@@ -29,13 +30,13 @@
     ".tar.xz",
 ]
 
-generate_deb_tar_attrs = _download_deb_pkgs.attrs + {
+generate_deb_tar_attrs = dicts.add(_download_deb_pkgs.attrs, {
     "base": attr.label(allow_files = container),
     "packages": attr.string_list(),
     "keys": attr.label_list(
         allow_files = True,
     ),
-}
+})
 
 aggregate_debian_pkgs_attrs = {
     "base": attr.label(allow_files = container),
@@ -46,8 +47,7 @@
     "additional_repos": attr.string_list(),
     "_image_id_extractor": attr.label(
         default = "@io_bazel_rules_docker//contrib:extract_image_id.py",
-        allow_files = True,
-        single_file = True,
+        allow_single_file = True,
     ),
 }
 
diff --git a/rules/container/docker_toolchains.bzl b/rules/container/docker_toolchains.bzl
index 3a405f1..75a5beb 100644
--- a/rules/container/docker_toolchains.bzl
+++ b/rules/container/docker_toolchains.bzl
@@ -18,6 +18,7 @@
 load("@base_images_docker//package_managers:download_pkgs.bzl", _download = "download")
 load("@base_images_docker//package_managers:install_pkgs.bzl", _install = "install")
 load("@base_images_docker//package_managers:apt_key.bzl", _key = "key")
+load("@bazel_skylib//lib:dicts.bzl", "dicts")
 load(":debian_pkg_tar.bzl", _generate_deb_tar = "generate")
 
 def _input_validation(kwargs):
@@ -171,26 +172,23 @@
         installation_cleanup_commands = installation_cleanup_commands,
     )
 
-language_tool_layer_attrs = _container.image.attrs + _key.attrs + _download.attrs + _install.attrs + {
+language_tool_layer_attrs = dicts.add(_container.image.attrs, _key.attrs, _download.attrs, _install.attrs, {
     # Redeclare following attributes as non-mandatory.
     "image_tar": attr.label(
-        allow_files = True,
-        single_file = True,
+        allow_single_file = True,
     ),
     "image": attr.label(
-        allow_files = True,
-        single_file = True,
+        allow_single_file = True,
     ),
     "packages": attr.string_list(),
     "keys": attr.label_list(
         allow_files = True,
     ),
     "installables_tar": attr.label(
-        allow_files = True,
-        single_file = True,
+        allow_single_file = True,
     ),
     "output_image_name": attr.string(),
-}
+})
 
 language_tool_layer_ = rule(
     attrs = language_tool_layer_attrs,
@@ -298,9 +296,9 @@
     )
 
 toolchain_container_ = rule(
-    attrs = language_tool_layer_attrs + {
+    attrs = dicts.add(language_tool_layer_attrs, {
         "language_layers": attr.label_list(),
-    },
+    }),
     executable = True,
     outputs = _container.image.outputs,
     toolchains = ["@io_bazel_rules_docker//toolchains/docker:toolchain_type"],
diff --git a/rules/docker_config.bzl b/rules/docker_config.bzl
index 03ed18b..efd0868 100644
--- a/rules/docker_config.bzl
+++ b/rules/docker_config.bzl
@@ -120,6 +120,7 @@
 )
 load("@base_images_docker//util:run.bzl", _extract = "extract")
 load("@bazel_toolchains//rules/container:docker_toolchains.bzl", "toolchain_container")
+load("@bazel_skylib//lib:dicts.bzl", "dicts")
 
 # External folder is set to be deprecated, lets keep it here for easy
 # refactoring
@@ -232,7 +233,7 @@
     if ctx.attr.git_repo:
         clean_cmd += " && cd " + bazel_config_dir + " && rm -drf " + project_repo_dir
 
-    install_sh = ctx.new_file(name + "_install.sh")
+    install_sh = ctx.actions.declare_file(name + "_install.sh")
     ctx.actions.write(
         output = install_sh,
         content = "\n ".join([
@@ -257,10 +258,10 @@
     if ctx.attr.repo_pkg_tar:
         files += [ctx.file.repo_pkg_tar]
 
-    image_tar = ctx.new_file(name + ".tar")
+    image_tar = ctx.actions.declare_file(name + ".tar")
 
     # TODO(nlopezgi): fix upstream issue that output_executable is required
-    load_image_sh_file = ctx.new_file(name + "load.sh")
+    load_image_sh_file = ctx.actions.declare_file(name + "load.sh")
     _container.image.implementation(
         ctx,
         files = files,
@@ -291,7 +292,7 @@
         run_cmd = install_sh.basename,
     ))
 
-    extract_tar_file = ctx.new_file(name + "_extract.tar")
+    extract_tar_file = ctx.actions.declare_file(name + "_extract.tar")
     _extract.implementation(
         ctx,
         name = ctx.attr.name + "_extract",
@@ -312,12 +313,12 @@
     )
 
 docker_toolchain_autoconfig_ = rule(
-    attrs = _container.image.attrs + {
+    attrs = dicts.add(_container.image.attrs, {
         "config_repos": attr.string_list(default = ["local_config_cc"]),
         "mount_project": attr.string(),
         "use_default_project": attr.bool(default = False),
         "git_repo": attr.string(),
-        "repo_pkg_tar": attr.label(allow_files = tar_filetype, single_file = True),
+        "repo_pkg_tar": attr.label(allow_single_file = tar_filetype),
         "bazel_version": attr.string(),
         "bazel_rc_version": attr.string(),
         "use_bazel_head": attr.bool(default = False),
@@ -331,19 +332,17 @@
         # TODO(nlopezgi): fix upstream attr declaration that is missing repo name
         "_extract_tpl": attr.label(
             default = Label("@base_images_docker//util:extract.sh.tpl"),
-            allow_files = True,
-            single_file = True,
+            allow_single_file = True,
         ),
         "_image_id_extractor": attr.label(
             default = "@io_bazel_rules_docker//contrib:extract_image_id.py",
-            allow_files = True,
-            single_file = True,
+            allow_single_file = True,
         ),
-    },
-    outputs = _container.image.outputs + {
+    }),
+    outputs = dicts.add(_container.image.outputs, {
         "log": "%{name}.log",
         "output_tar": "%{name}_outputs.tar",
-    },
+    }),
     toolchains = ["@io_bazel_rules_docker//toolchains/docker:toolchain_type"],
     implementation = _docker_toolchain_autoconfig_impl,
 )
diff --git a/rules/rbe_repo.bzl b/rules/rbe_repo.bzl
index cbfb8a8..ce153cc 100644
--- a/rules/rbe_repo.bzl
+++ b/rules/rbe_repo.bzl
@@ -171,6 +171,7 @@
     "RBE_UBUNTU16_04_LATEST",
     "public_rbe_ubuntu16_04_sha256s",
 )
+load("//rules:environments.bzl", "clang_env")
 
 # External folder is set to be deprecated, lets keep it here for easy
 # refactoring
@@ -631,8 +632,6 @@
     implementation = _impl,
 )
 
-load("//rules:environments.bzl", "clang_env")
-
 def rbe_autoconfig(
         name,
         bazel_version = None,