From 696f9fd7230a2e7bf73bd8f7a070e27cc30d964e Mon Sep 17 00:00:00 2001 From: Xin Gao Date: Wed, 9 Jan 2019 14:18:46 -0500 Subject: [PATCH 1/5] Fix Bazel incompatible issues. Some refs: - https://github.com/bazelbuild/bazel/issues/5817 --- .bazelci/presubmit.yml | 20 ++++++++++++- WORKSPACE | 26 +++++++++------- container/container.bzl | 6 ++-- container/image_test.py | 7 ++--- container/layer.bzl | 2 +- contrib/compare_ids_test.bzl | 2 +- contrib/idd.bzl | 8 ++--- contrib/push-all.bzl | 8 ++--- contrib/test.bzl | 6 ++-- java/image.bzl | 40 +++++++++++-------------- lang/image.bzl | 16 +++++----- nodejs/image.bzl | 4 +-- skylib/zip.bzl | 6 ++-- tests/contrib/compare_ids_fail_test.bzl | 17 ++++------- 14 files changed, 89 insertions(+), 79 deletions(-) diff --git a/.bazelci/presubmit.yml b/.bazelci/presubmit.yml index cabe8081c..225ae9d9e 100644 --- a/.bazelci/presubmit.yml +++ b/.bazelci/presubmit.yml @@ -10,6 +10,9 @@ platforms: # tests/contrib/test_compare_ids_test_* expect 'bazel' on path test_flags: - "--action_env=PATH" + - "--all_incompatible_changes" + # TODO(xingao): Remove after https://github.com/bazelbuild/rules_scala/issues/644 is addressed. + - "--incompatible_disallow_legacy_javainfo=false" ubuntu1604: test_targets: # We are running the skipped targets remotely only. @@ -20,15 +23,24 @@ platforms: # tests/contrib/test_compare_ids_test_* expect 'bazel' on path test_flags: - "--action_env=PATH" + - "--all_incompatible_changes" + # TODO(xingao): Remove after https://github.com/bazelbuild/rules_scala/issues/644 is addressed. + - "--incompatible_disallow_legacy_javainfo=false" macos: build_targets: - "//tests/docker:test_digest_output1" build_flags: - "--action_env=PATH" + - "--all_incompatible_changes" + # TODO(xingao): Remove after https://github.com/bazelbuild/rules_scala/issues/644 is addressed. + - "--incompatible_disallow_legacy_javainfo=false" test_targets: - "//tests/docker:test_digest_output1" test_flags: - - "--action_env=PATH" + - "--action_env=PATH" + - "--all_incompatible_changes" + # TODO(xingao): Remove after https://github.com/bazelbuild/rules_scala/issues/644 is addressed. + - "--incompatible_disallow_legacy_javainfo=false" rbe_ubuntu1604: build_targets: - "--" @@ -37,6 +49,9 @@ platforms: - "--extra_execution_platforms=@bazel_toolchains//configs/ubuntu16_04_clang/1.1:nosla_xenial_docker" - "--host_platform=@bazel_toolchains//configs/ubuntu16_04_clang/1.1:nosla_xenial_docker" - "--platforms=@bazel_toolchains//configs/ubuntu16_04_clang/1.1:nosla_xenial_docker" + - "--all_incompatible_changes" + # TODO(xingao): Remove after https://github.com/bazelbuild/rules_scala/issues/644 is addressed. + - "--incompatible_disallow_legacy_javainfo=false" test_targets: - "--" - "//tests/..." @@ -50,3 +65,6 @@ platforms: - "--extra_execution_platforms=@bazel_toolchains//configs/ubuntu16_04_clang/1.1:nosla_xenial_docker" - "--host_platform=@bazel_toolchains//configs/ubuntu16_04_clang/1.1:nosla_xenial_docker" - "--platforms=@bazel_toolchains//configs/ubuntu16_04_clang/1.1:nosla_xenial_docker" + - "--all_incompatible_changes" + # TODO(xingao): Remove after https://github.com/bazelbuild/rules_scala/issues/644 is addressed. + - "--incompatible_disallow_legacy_javainfo=false" diff --git a/WORKSPACE b/WORKSPACE index da1fc1664..4c7569d61 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -150,19 +150,23 @@ load( _java_image_repos() +load("@bazel_tools//tools/build_defs/repo:jvm.bzl", "jvm_maven_import_external") + # For our java_image test. -maven_jar( +jvm_maven_import_external( name = "com_google_guava_guava", artifact = "com.google.guava:guava:18.0", - sha1 = "cce0823396aa693798f8882e64213b1772032b09", + artifact_sha256 = "d664fbfc03d2e5ce9cab2a44fb01f1d0bf9dfebeccc1a473b1f9ea31f79f6f99", + server_urls = ["http://central.maven.org/maven2"], + licenses = ["notice"], # Apache 2.0 ) # For our scala_image test. http_archive( name = "io_bazel_rules_scala", - sha256 = "83d40e0bc7377e77fa0d32af6c4b276374b4efbcb3120c437e425947cdb3ce38", - strip_prefix = "rules_scala-5130b97524684beceba729b9dab1528e2a90cdfb", - urls = ["https://github.com/bazelbuild/rules_scala/archive/5130b97524684beceba729b9dab1528e2a90cdfb.tar.gz"], + sha256 = "902e30b931ded41905641895b90c41727e01a732aba67dfda604b764c1e1e494", + strip_prefix = "rules_scala-1354d935a74395b3f0870dd90a04e0376fe22587", + urls = ["https://github.com/bazelbuild/rules_scala/archive/1354d935a74395b3f0870dd90a04e0376fe22587.tar.gz"], ) load("@io_bazel_rules_scala//scala:scala.bzl", "scala_repositories") @@ -209,9 +213,9 @@ _go_image_repos() # For our rust_image test http_archive( name = "io_bazel_rules_rust", - sha256 = "500d06096a44ff6d77256635dbe6ab61b23c2be626e2acb08a4c060092e711d0", - strip_prefix = "rules_rust-db81b42d98e1232e001e26a50c37f2097d61a207", - urls = ["https://github.com/bazelbuild/rules_rust/archive/db81b42d98e1232e001e26a50c37f2097d61a207.tar.gz"], + sha256 = "ed0c81084bcc2bdcc98cfe56f384b20856840825f5e413e2b71809b61809fc87", + strip_prefix = "rules_rust-f32695dcd02d9a19e42b9eb7f29a24a8ceb2b858", + urls = ["https://github.com/bazelbuild/rules_rust/archive/f32695dcd02d9a19e42b9eb7f29a24a8ceb2b858.tar.gz"], ) load("@io_bazel_rules_rust//rust:repositories.bzl", "rust_repositories") @@ -227,9 +231,9 @@ bazel_version(name = "bazel_version") # For our d_image test http_archive( name = "io_bazel_rules_d", - sha256 = "527908e02d7bccf5a4eb89b690b003247eb6c57d69cc3234977c034d27c59d6e", - strip_prefix = "rules_d-0400b9b054013274cee2ed15679da19e1fc94e07", - urls = ["https://github.com/bazelbuild/rules_d/archive/0400b9b054013274cee2ed15679da19e1fc94e07.tar.gz"], + sha256 = "873022774f2f31ab57e7ff36b3f39c60fd4209952bfcc6902924b7942fa2973d", + strip_prefix = "rules_d-2d38613073f3eb138aee0acbcb395ebada2f8ebf", + urls = ["https://github.com/bazelbuild/rules_d/archive/2d38613073f3eb138aee0acbcb395ebada2f8ebf.tar.gz"], ) load("@io_bazel_rules_d//d:d.bzl", "d_repositories") diff --git a/container/container.bzl b/container/container.bzl index 624e43019..4a1ee9ec8 100644 --- a/container/container.bzl +++ b/container/container.bzl @@ -193,9 +193,9 @@ py_library( if "subpar" not in excludes: http_archive( name = "subpar", - sha256 = "ee65e35c1cd9a723fb4d501e8055e10b34a27a0a557d10312af7b83d8e0101f5", - strip_prefix = "subpar-7e12cc130eb8f09c8cb02c3585a91a4043753c56", - urls = ["https://github.com/google/subpar/archive/7e12cc130eb8f09c8cb02c3585a91a4043753c56.tar.gz"], + sha256 = "cf3762b10426a1887d37f127b4c1390785ecb969254096eb714cc1db371f78d6", + strip_prefix = "subpar-a4f9b23bf01bcc7a52d458910af65a90ee991aff", + urls = ["https://github.com/google/subpar/archive/a4f9b23bf01bcc7a52d458910af65a90ee991aff.tar.gz"], ) if "structure_test_linux" not in excludes: diff --git a/container/image_test.py b/container/image_test.py index ecf8e7bab..8853dd925 100644 --- a/container/image_test.py +++ b/container/image_test.py @@ -734,8 +734,7 @@ def test_java_image(self): './app/io_bazel_rules_docker/testdata', './app/io_bazel_rules_docker/testdata/libjava_image_library.jar', './app/com_google_guava_guava', - './app/com_google_guava_guava/jar', - './app/com_google_guava_guava/jar/guava-18.0.jar', + './app/com_google_guava_guava/guava-18.0.jar', ]) def test_war_image(self): @@ -832,7 +831,7 @@ def test_scala_image_args(self): self.assertConfigEqual(img, 'Entrypoint', [ '/usr/bin/java', '-cp', - '/app/io_bazel_rules_docker/../com_google_guava_guava/jar/guava-18.0.jar:'+ + '/app/io_bazel_rules_docker/../com_google_guava_guava/guava-18.0.jar:'+ '/app/io_bazel_rules_docker/../io_bazel_rules_scala_scala_library/scala-library-2.11.12.jar:'+ '/app/io_bazel_rules_docker/../io_bazel_rules_scala_scala_reflect/scala-reflect-2.11.12.jar:'+ '/app/io_bazel_rules_docker/testdata/scala_image_library.jar:'+ @@ -853,7 +852,7 @@ def test_groovy_image_args(self): '/usr/bin/java', '-cp', '/app/io_bazel_rules_docker/testdata/libgroovy_image_library-impl.jar:'+ - '/app/io_bazel_rules_docker/../com_google_guava_guava/jar/guava-18.0.jar:'+ + '/app/io_bazel_rules_docker/../com_google_guava_guava/guava-18.0.jar:'+ '/app/io_bazel_rules_docker/../groovy_sdk_artifact/groovy-2.4.4/lib/groovy-2.4.4.jar:'+ '/app/io_bazel_rules_docker/testdata/libgroovy_image.binary-lib-impl.jar:'+ diff --git a/container/layer.bzl b/container/layer.bzl index 8ab407c08..bc41f9e16 100644 --- a/container/layer.bzl +++ b/container/layer.bzl @@ -117,7 +117,7 @@ def build_layer( ctx.actions.run( executable = build_layer_exec, arguments = args, - inputs = files + file_map.values() + tars + debs + [manifest_file], + tools = files + file_map.values() + tars + debs + [manifest_file], outputs = [layer], use_default_shell_env = True, mnemonic = "ImageLayer", diff --git a/contrib/compare_ids_test.bzl b/contrib/compare_ids_test.bzl index a9ef8896e..307828cbb 100644 --- a/contrib/compare_ids_test.bzl +++ b/contrib/compare_ids_test.bzl @@ -16,7 +16,7 @@ def _compare_ids_test_impl(ctx): tar_files = [] for image in ctx.attr.images: - tar_files += list(image.files) + tar_files += image.files.to_list() if (len(tar_files) == 0): fail("No images provided for test.") diff --git a/contrib/idd.bzl b/contrib/idd.bzl index 2e22070b4..f78afaa97 100644 --- a/contrib/idd.bzl +++ b/contrib/idd.bzl @@ -39,7 +39,7 @@ Used for finding differences between image targets. Args: image1: Image target or image tarball file (from docker save) - first image to compare image2: Image target or image tarball file (from docker save) - second image to compare - args: (optional) list of strings - arguments to apply to idd.py call + args: (optional) list of strings - arguments to apply to idd.py call refer to idd.py docs for more info Ex. @@ -56,13 +56,11 @@ idd = rule( attrs = { "image1": attr.label( mandatory = True, - allow_files = container_filetype, - single_file = True, + allow_single_file = container_filetype, ), "image2": attr.label( mandatory = True, - allow_files = container_filetype, - single_file = True, + allow_single_file = container_filetype, ), "_idd_script": attr.label( default = ":idd", diff --git a/contrib/push-all.bzl b/contrib/push-all.bzl index 2536a0384..88e959d12 100644 --- a/contrib/push-all.bzl +++ b/contrib/push-all.bzl @@ -96,7 +96,7 @@ def _impl(ctx): return struct(runfiles = ctx.runfiles(files = [ ctx.executable._pusher, - ] + stamp_inputs + runfiles + list(ctx.attr._pusher.default_runfiles.files))) + ] + stamp_inputs + runfiles + ctx.attr._pusher.default_runfiles.files.to_list())) container_push = rule( attrs = { @@ -110,13 +110,11 @@ container_push = rule( ), "_all_tpl": attr.label( default = Label("//contrib:push-all.sh.tpl"), - single_file = True, - allow_files = True, + allow_single_file = True, ), "_tag_tpl": attr.label( default = Label("//container:push-tag.sh.tpl"), - single_file = True, - allow_files = True, + allow_single_file = True, ), "_pusher": attr.label( default = Label("@containerregistry//:pusher"), diff --git a/contrib/test.bzl b/contrib/test.bzl index e73dd7e4a..e73c9be09 100644 --- a/contrib/test.bzl +++ b/contrib/test.bzl @@ -74,8 +74,7 @@ _container_test = rule( ), "image_tar": attr.label( doc = "When using the tar driver, label of the container image tarball", - allow_files = [".tar"], - single_file = True, + allow_single_file = [".tar"], ), "loaded_name": attr.string( doc = "When using the docker driver, the name:tag of the image when loaded into the docker daemon", @@ -105,8 +104,7 @@ _container_test = rule( ), "_structure_test_tpl": attr.label( default = Label("//contrib:structure-test.sh.tpl"), - allow_files = True, - single_file = True, + allow_single_file = True, ), }, executable = True, diff --git a/java/image.bzl b/java/image.bzl index f84f6c666..2d0de1481 100644 --- a/java/image.bzl +++ b/java/image.bzl @@ -18,6 +18,7 @@ The signature of java_image is compatible with java_binary. The signature of war_image is compatible with java_library. """ +load("@bazel_tools//tools/build_defs/repo:jvm.bzl", "jvm_maven_import_external") load( "//container:container.bzl", "container_pull", @@ -75,9 +76,12 @@ def repositories(): digest = _JETTY_DIGESTS["debug"], ) if "javax_servlet_api" not in excludes: - native.maven_jar( + jvm_maven_import_external( name = "javax_servlet_api", artifact = "javax.servlet:javax.servlet-api:3.0.1", + artifact_sha256 = "377d8bde87ac6bc7f83f27df8e02456d5870bb78c832dac656ceacc28b016e56", + server_urls = ["http://central.maven.org/maven2"], + licenses = ["notice"], # Apache 2.0 ) DEFAULT_JAVA_BASE = select({ @@ -98,15 +102,15 @@ def java_files(f): files = [] if java_common.provider in f: java_provider = f[java_common.provider] - files += list(java_provider.transitive_runtime_jars) + files += java_provider.transitive_runtime_jars.to_list() if hasattr(f, "files"): # a jar file - files += list(f.files) + files += f.files.to_list() return files def java_files_with_data(f): files = java_files(f) if hasattr(f, "data_runfiles"): - files += list(f.data_runfiles.files) + files += f.data_runfiles.files.to_list() return files def _jar_dep_layer_impl(ctx): @@ -150,28 +154,24 @@ jar_dep_layer = rule( def _jar_app_layer_impl(ctx): """Appends the app layer with all remaining runfiles.""" - available = depset() - for jar in ctx.attr.jar_layers: - available += java_files(jar) # layers don't include runfiles + # layers don't include runfiles + available = depset(transitive = [depset(java_files(jar)) for jar in ctx.attr.jar_layers]) # We compute the set of unavailable stuff by walking deps # in the same way, adding in our binary and then subtracting # out what it available. - unavailable = depset() - for jar in ctx.attr.deps + ctx.attr.runtime_deps: - unavailable += java_files_with_data(jar) - - unavailable += java_files_with_data(ctx.attr.binary) - unavailable = [x for x in unavailable if x not in available] + unavailable = depset(transitive = [depset(java_files_with_data(jar)) for jar in ctx.attr.deps + ctx.attr.runtime_deps]) + unavailable = depset(transitive = [unavailable, depset(java_files_with_data(ctx.attr.binary))]) + unavailable = [x for x in unavailable.to_list() if x not in available.to_list()] # Remove files that are provided by the JDK from the unavailable set, # as these will be provided by the Java image. - jdk_files = depset(list(ctx.files._jdk)) + jdk_files = depset(ctx.files._jdk) unavailable = [x for x in unavailable if x not in ctx.files._jdk] classpath = ":".join([ layer_file_path(ctx, x) - for x in available + unavailable + for x in depset(transitive = [available, depset(unavailable)]).to_list() ]) # Classpaths can grow long and there is a limit on the length of a @@ -349,19 +349,15 @@ _war_dep_layer = rule( def _war_app_layer_impl(ctx): """Appends the app layer with all remaining runfiles.""" - available = depset() - for jar in ctx.attr.jar_layers: - available += java_files(jar) + available = depset(transitive = [depset(java_files(jar)) for jar in ctx.attr.jar_layers]) # This is based on rules_appengine's WAR rules. - transitive_deps = depset() - transitive_deps += java_files(ctx.attr.library) - + transitive_deps = depset(java_files(ctx.attr.library)) # TODO(mattmoor): Handle data files. # If we start putting libs in servlet-agnostic paths, # then consider adding symlinks here. - files = [d for d in transitive_deps if d not in available] + files = [d for d in transitive_deps.to_list() if d not in available.to_list()] return _container.image.implementation(ctx, files = files) diff --git a/lang/image.bzl b/lang/image.bzl index cf704f38c..7a4aeeef1 100644 --- a/lang/image.bzl +++ b/lang/image.bzl @@ -138,7 +138,7 @@ def app_layer_impl(ctx, runfiles = None, emptyfiles = None): # in our base image, tracking absolute paths. available = { f: None - for f in parent_parts.get("transitive_files", depset()) + for f in parent_parts.get("transitive_files", depset()).to_list() } # Compute the set of remaining runfiles to include into the @@ -146,13 +146,15 @@ def app_layer_impl(ctx, runfiles = None, emptyfiles = None): file_map = { filepath(ctx, f): f - for f in runfiles(dep) + # runfiles(dep) can be `depset` or `list`. Covert it to `depset` first + # and then call to_list() on it as to_list() cannot be called on type `list`. + for f in depset(runfiles(dep)).to_list() if filepath(ctx, f) not in available and layer_file_path(ctx, f) not in available } empty_files = [ emptyfilepath(ctx, f) - for f in emptyfiles(dep) + for f in depset(emptyfiles(dep)).to_list() if emptyfilepath(ctx, f) not in available and _layer_emptyfile_path(ctx, f) not in available ] @@ -164,18 +166,18 @@ def app_layer_impl(ctx, runfiles = None, emptyfiles = None): # Include any symlinks from the runfiles of the target for which we are synthesizing the layer. symlinks.update({ (_reference_dir(ctx) + "/" + s.path): layer_file_path(ctx, s.target_file) - for s in _default_symlinks(dep) + for s in _default_symlinks(dep).to_list() if hasattr(s, "path") # "path" and "target_file" are exposed to starlark since bazel 0.21.0. }) symlinks.update({ _final_file_path(ctx, f): layer_file_path(ctx, f) - for f in runfiles(dep) + for f in runfiles(dep).to_list() if _final_file_path(ctx, f) not in file_map and _final_file_path(ctx, f) not in available }) symlinks.update({ _final_emptyfile_path(ctx, f): _layer_emptyfile_path(ctx, f) - for f in emptyfiles(dep) + for f in emptyfiles(dep).to_list() if _final_emptyfile_path(ctx, f) not in empty_files and _final_emptyfile_path(ctx, f) not in available }) @@ -279,7 +281,7 @@ def _filter_layer_rule_impl(ctx): runfiles = ctx.runfiles() filtered_depsets = [] - for dep in transitive_deps: + for dep in transitive_deps.to_list(): if str(dep.target.label).startswith(ctx.attr.filter) and str(dep.target.label) != str(ctx.attr.dep.label): runfiles = runfiles.merge(dep.target.default_runfiles) filtered_depsets.append(dep.target_deps) diff --git a/nodejs/image.bzl b/nodejs/image.bzl index 3334d8e7f..41427f438 100644 --- a/nodejs/image.bzl +++ b/nodejs/image.bzl @@ -61,10 +61,10 @@ DEFAULT_BASE = select({ }) def _runfiles(dep): - return dep.default_runfiles.files + dep.data_runfiles.files + dep.files + return depset(transitive = [dep.default_runfiles.files, dep.data_runfiles.files, dep.files]) def _emptyfiles(dep): - return dep.default_runfiles.empty_filenames + dep.data_runfiles.empty_filenames + return depset(transitive = [dep.default_runfiles.empty_filenames, dep.data_runfiles.empty_filenames]) def _dep_layer_impl(ctx): return app_layer_impl(ctx, runfiles = _runfiles, emptyfiles = _emptyfiles) diff --git a/skylib/zip.bzl b/skylib/zip.bzl index d9471db89..81b48e783 100644 --- a/skylib/zip.bzl +++ b/skylib/zip.bzl @@ -18,10 +18,11 @@ def gzip(ctx, artifact): out = ctx.actions.declare_file(artifact.basename + ".gz") ctx.actions.run_shell( command = "%s -n < %s > %s" % (ctx.executable.gzip.path, artifact.path, out.path), - inputs = [artifact, ctx.executable.gzip], + inputs = [artifact], outputs = [out], use_default_shell_env = True, mnemonic = "GZIP", + tools = [ctx.executable.gzip], ) return out @@ -30,10 +31,11 @@ def gunzip(ctx, artifact): out = ctx.actions.declare_file(artifact.basename + ".nogz") ctx.actions.run_shell( command = "%s -d < %s > %s" % (ctx.executable.gzip.path, artifact.path, out.path), - inputs = [artifact, ctx.executable.gzip], + inputs = [artifact], outputs = [out], use_default_shell_env = True, mnemonic = "GUNZIP", + tools = [ctx.executable.gzip], ) return out diff --git a/tests/contrib/compare_ids_fail_test.bzl b/tests/contrib/compare_ids_fail_test.bzl index f6b7d8507..8a830e322 100644 --- a/tests/contrib/compare_ids_fail_test.bzl +++ b/tests/contrib/compare_ids_fail_test.bzl @@ -32,7 +32,7 @@ compare_ids_test( tar_files = [] for tar in ctx.attr.images: - tar_files += list(tar.files) + tar_files += tar.files.to_list() tars_string = "" for tar_file in tar_files: @@ -111,28 +111,23 @@ compare_ids_fail_test = rule( default = [], ), "_executable_template": attr.label( - allow_files = True, - single_file = True, + allow_single_file = True, default = "compare_ids_fail_test.sh.tpl", ), "_compare_ids_test_bzl": attr.label( - allow_files = True, - single_file = True, + allow_single_file = True, default = "//contrib:compare_ids_test.bzl", ), "_compare_ids_test": attr.label( - allow_files = True, - single_file = True, + allow_single_file = True, default = "//contrib:compare_ids_test.py", ), "_extract_image_id": attr.label( - allow_files = True, - single_file = True, + allow_single_file = True, default = "//contrib:extract_image_id.py", ), "_BUILD": attr.label( - allow_files = True, - single_file = True, + allow_single_file = True, default = "//contrib:BUILD", ), }, From 3c5f16dc959160e1918951c4052db805bd24b730 Mon Sep 17 00:00:00 2001 From: Xin Gao Date: Wed, 9 Jan 2019 17:48:17 -0500 Subject: [PATCH 2/5] Fix some tests and buildifier. --- WORKSPACE | 2 +- tests/docker/java/configs/java_image.yaml | 2 +- tests/docker/java/configs/java_partial_entrypoint.yaml | 2 +- tests/docker/java/configs/simple_java_entrypoint.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/WORKSPACE b/WORKSPACE index 4c7569d61..266fda9c2 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -157,8 +157,8 @@ jvm_maven_import_external( name = "com_google_guava_guava", artifact = "com.google.guava:guava:18.0", artifact_sha256 = "d664fbfc03d2e5ce9cab2a44fb01f1d0bf9dfebeccc1a473b1f9ea31f79f6f99", - server_urls = ["http://central.maven.org/maven2"], licenses = ["notice"], # Apache 2.0 + server_urls = ["http://central.maven.org/maven2"], ) # For our scala_image test. diff --git a/tests/docker/java/configs/java_image.yaml b/tests/docker/java/configs/java_image.yaml index 335a0a468..902653082 100644 --- a/tests/docker/java/configs/java_image.yaml +++ b/tests/docker/java/configs/java_image.yaml @@ -7,7 +7,7 @@ metadataTest: entrypoint: [ '/usr/bin/java', '-cp', - '/app/io_bazel_rules_docker/tests/docker/java/libjava_image_library.jar:/app/io_bazel_rules_docker/../com_google_guava_guava/jar/guava-18.0.jar:/app/io_bazel_rules_docker/tests/docker/java/java_image.binary.jar:/app/io_bazel_rules_docker/tests/docker/java/java_image.binary:/app/io_bazel_rules_docker/tests/docker/java/BUILD', + '/app/io_bazel_rules_docker/tests/docker/java/libjava_image_library.jar:/app/io_bazel_rules_docker/../com_google_guava_guava/guava-18.0.jar:/app/io_bazel_rules_docker/tests/docker/java/java_image.binary.jar:/app/io_bazel_rules_docker/tests/docker/java/java_image.binary:/app/io_bazel_rules_docker/tests/docker/java/BUILD', '-XX:MaxPermSize=128M', '-Dbuild.location=tests/docker/java/BUILD', 'examples.images.Binary', diff --git a/tests/docker/java/configs/java_partial_entrypoint.yaml b/tests/docker/java/configs/java_partial_entrypoint.yaml index 96e93ab77..85c5013fc 100644 --- a/tests/docker/java/configs/java_partial_entrypoint.yaml +++ b/tests/docker/java/configs/java_partial_entrypoint.yaml @@ -7,4 +7,4 @@ metadataTest: entrypoint: - "/usr/bin/java" - "-cp" - - "/app/io_bazel_rules_docker/testdata/libjava_bin_as_lib.jar:/app/io_bazel_rules_docker/testdata/libjava_image_library.jar:/app/io_bazel_rules_docker/../com_google_guava_guava/jar/guava-18.0.jar:/app/io_bazel_rules_docker/tests/docker/java/java_partial_entrypoint_image.binary.jar:/app/io_bazel_rules_docker/tests/docker/java/java_partial_entrypoint_image.binary" + - "/app/io_bazel_rules_docker/testdata/libjava_bin_as_lib.jar:/app/io_bazel_rules_docker/testdata/libjava_image_library.jar:/app/io_bazel_rules_docker/../com_google_guava_guava/guava-18.0.jar:/app/io_bazel_rules_docker/tests/docker/java/java_partial_entrypoint_image.binary.jar:/app/io_bazel_rules_docker/tests/docker/java/java_partial_entrypoint_image.binary" diff --git a/tests/docker/java/configs/simple_java_entrypoint.yaml b/tests/docker/java/configs/simple_java_entrypoint.yaml index b1a00af5e..fd02f279d 100644 --- a/tests/docker/java/configs/simple_java_entrypoint.yaml +++ b/tests/docker/java/configs/simple_java_entrypoint.yaml @@ -7,5 +7,5 @@ metadataTest: entrypoint: - "/usr/bin/java" - "-cp" - - "/app/io_bazel_rules_docker/testdata/libjava_bin_as_lib.jar:/app/io_bazel_rules_docker/testdata/libjava_image_library.jar:/app/io_bazel_rules_docker/../com_google_guava_guava/jar/guava-18.0.jar:/app/io_bazel_rules_docker/tests/docker/java/simple_java_image.binary.jar:/app/io_bazel_rules_docker/tests/docker/java/simple_java_image.binary" + - "/app/io_bazel_rules_docker/testdata/libjava_bin_as_lib.jar:/app/io_bazel_rules_docker/testdata/libjava_image_library.jar:/app/io_bazel_rules_docker/../com_google_guava_guava/guava-18.0.jar:/app/io_bazel_rules_docker/tests/docker/java/simple_java_image.binary.jar:/app/io_bazel_rules_docker/tests/docker/java/simple_java_image.binary" - "examples.images.Binary" From 5cfd02ca34a579acf219f33c46f2ae1f8ca069df Mon Sep 17 00:00:00 2001 From: Xin Gao Date: Wed, 9 Jan 2019 18:37:24 -0500 Subject: [PATCH 3/5] Inputs that can be executable should be in tools attribute. --- container/image.bzl | 2 +- container/layer_tools.bzl | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/container/image.bzl b/container/image.bzl index 600d32933..84d5db840 100644 --- a/container/image.bzl +++ b/container/image.bzl @@ -229,7 +229,7 @@ def _assemble_image_digest(ctx, name, image, image_tarball, output_digest): ctx.actions.run( outputs = [output_digest], - inputs = [image["config"]] + blobsums + blobs + + tools = [image["config"]] + blobsums + blobs + ([image["legacy"]] if image.get("legacy") else []), executable = ctx.executable._digester, arguments = arguments, diff --git a/container/layer_tools.bzl b/container/layer_tools.bzl index 39ab31101..19e070688 100644 --- a/container/layer_tools.bzl +++ b/container/layer_tools.bzl @@ -31,7 +31,7 @@ def _extract_layers(ctx, name, artifact): "--manifestoutput", manifest_file.path, ], - inputs = [artifact], + tools = [artifact], outputs = [config_file, manifest_file], mnemonic = "ExtractConfig", ) @@ -102,7 +102,7 @@ def assemble(ctx, images, output, stamp = False): ctx.actions.run( executable = ctx.executable.join_layers, arguments = args, - inputs = inputs, + tools = inputs, outputs = [output], mnemonic = "JoinLayers", ) From 6fa82b59306e40ceec336030832fcfede048c936 Mon Sep 17 00:00:00 2001 From: Xin Gao Date: Wed, 9 Jan 2019 18:57:57 -0500 Subject: [PATCH 4/5] buildifier --- container/image.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/container/image.bzl b/container/image.bzl index 84d5db840..d8cb732ed 100644 --- a/container/image.bzl +++ b/container/image.bzl @@ -230,7 +230,7 @@ def _assemble_image_digest(ctx, name, image, image_tarball, output_digest): ctx.actions.run( outputs = [output_digest], tools = [image["config"]] + blobsums + blobs + - ([image["legacy"]] if image.get("legacy") else []), + ([image["legacy"]] if image.get("legacy") else []), executable = ctx.executable._digester, arguments = arguments, mnemonic = "ImageDigest", From 5127355f0fb4b82a99c985bbfc9b9441fc6640ea Mon Sep 17 00:00:00 2001 From: Xin Gao Date: Fri, 11 Jan 2019 10:48:06 -0500 Subject: [PATCH 5/5] Fix tests. --- tests/docker/groovy/configs/groovy_image.yaml | 2 +- tests/docker/scala/configs/scala_image.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/docker/groovy/configs/groovy_image.yaml b/tests/docker/groovy/configs/groovy_image.yaml index e77636168..e2f4f24db 100644 --- a/tests/docker/groovy/configs/groovy_image.yaml +++ b/tests/docker/groovy/configs/groovy_image.yaml @@ -4,7 +4,7 @@ metadataTest: entrypoint: [ '/usr/bin/java', '-cp', - '/app/io_bazel_rules_docker/tests/docker/groovy/libgroovy_image_library-impl.jar:/app/io_bazel_rules_docker/../com_google_guava_guava/jar/guava-18.0.jar:/app/io_bazel_rules_docker/../groovy_sdk_artifact/groovy-2.4.4/lib/groovy-2.4.4.jar:/app/io_bazel_rules_docker/tests/docker/groovy/libgroovy_image.binary-lib-impl.jar:/app/io_bazel_rules_docker/tests/docker/groovy/groovy_image.binary.jar:/app/io_bazel_rules_docker/tests/docker/groovy/groovy_image.binary:/app/io_bazel_rules_docker/tests/docker/groovy/BUILD', + '/app/io_bazel_rules_docker/tests/docker/groovy/libgroovy_image_library-impl.jar:/app/io_bazel_rules_docker/../com_google_guava_guava/guava-18.0.jar:/app/io_bazel_rules_docker/../groovy_sdk_artifact/groovy-2.4.4/lib/groovy-2.4.4.jar:/app/io_bazel_rules_docker/tests/docker/groovy/libgroovy_image.binary-lib-impl.jar:/app/io_bazel_rules_docker/tests/docker/groovy/groovy_image.binary.jar:/app/io_bazel_rules_docker/tests/docker/groovy/groovy_image.binary:/app/io_bazel_rules_docker/tests/docker/groovy/BUILD', '-Dbuild.location=tests/docker/groovy/BUILD', 'examples.images.Binary', 'arg0', diff --git a/tests/docker/scala/configs/scala_image.yaml b/tests/docker/scala/configs/scala_image.yaml index e0af02637..41c614ef6 100644 --- a/tests/docker/scala/configs/scala_image.yaml +++ b/tests/docker/scala/configs/scala_image.yaml @@ -4,7 +4,7 @@ metadataTest: entrypoint: [ '/usr/bin/java', '-cp', - '/app/io_bazel_rules_docker/../com_google_guava_guava/jar/guava-18.0.jar:/app/io_bazel_rules_docker/../io_bazel_rules_scala_scala_library/scala-library-2.11.12.jar:/app/io_bazel_rules_docker/../io_bazel_rules_scala_scala_reflect/scala-reflect-2.11.12.jar:/app/io_bazel_rules_docker/tests/docker/scala/scala_image_library.jar:/app/io_bazel_rules_docker/tests/docker/scala/scala_image.binary.jar:/app/io_bazel_rules_docker/tests/docker/scala/scala_image.binary:/app/io_bazel_rules_docker/tests/docker/scala/BUILD:/app/io_bazel_rules_docker/tests/docker/scala/scala_image.binary_wrapper.sh', + '/app/io_bazel_rules_docker/../com_google_guava_guava/guava-18.0.jar:/app/io_bazel_rules_docker/../io_bazel_rules_scala_scala_library/scala-library-2.11.12.jar:/app/io_bazel_rules_docker/../io_bazel_rules_scala_scala_reflect/scala-reflect-2.11.12.jar:/app/io_bazel_rules_docker/tests/docker/scala/scala_image_library.jar:/app/io_bazel_rules_docker/tests/docker/scala/scala_image.binary.jar:/app/io_bazel_rules_docker/tests/docker/scala/scala_image.binary:/app/io_bazel_rules_docker/tests/docker/scala/BUILD:/app/io_bazel_rules_docker/tests/docker/scala/scala_image.binary_wrapper.sh', '-Dbuild.location=tests/docker/scala/BUILD', 'examples.images.Binary', 'arg0',