From aeb359c555f189dc793f62fcb46a81fe83949e13 Mon Sep 17 00:00:00 2001 From: Alex Beal Date: Mon, 16 Jul 2018 16:49:28 -0600 Subject: [PATCH 1/4] Thread output jars thru so IntelliJ can pick them up. --- twitter_scrooge/twitter_scrooge.bzl | 42 ++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 13 deletions(-) diff --git a/twitter_scrooge/twitter_scrooge.bzl b/twitter_scrooge/twitter_scrooge.bzl index e582be7c9..23c5a1882 100644 --- a/twitter_scrooge/twitter_scrooge.bzl +++ b/twitter_scrooge/twitter_scrooge.bzl @@ -185,15 +185,13 @@ def _compile_scala(ctx, label, output, scrooge_jar, deps_java_info, expect_java_output = False, scalac_jvm_flags = []) - return java_common.create_provider( - use_ijar = False, - source_jars = [scrooge_jar], - compile_time_jars = depset( - [output], transitive = [merged_deps.compile_jars]), - transitive_compile_time_jars = depset( - [output], transitive = [merged_deps.transitive_compile_time_jars]), - transitive_runtime_jars = depset( - [output], transitive = [merged_deps.transitive_runtime_jars])) + return JavaInfo( + source_jar = scrooge_jar, + deps = deps_java_info + implicit_deps, + runtime_deps = deps_java_info + implicit_deps, + exports = deps_java_info + implicit_deps, + output_jar = output, + compile_jar = output) def _empty_java_info(deps_java_info, implicit_deps): merged_deps = java_common.merge(deps_java_info + implicit_deps) @@ -300,10 +298,11 @@ def _scrooge_scala_library_impl(ctx): all_java = java_common.merge(exports + [aspect_info.java_info]) else: all_java = aspect_info.java_info - return [ - DefaultInfo(files = aspect_info.output_files), - ScroogeInfo(aspect_info = aspect_info), all_java - ] + + return struct( + scala = _create_scala_struct(ctx), # For IntelliJ support + providers = [all_java, ScroogeInfo(aspect_info = aspect_info), DefaultInfo(files = aspect_info.output_files)] + ) scrooge_scala_library = rule( implementation = _scrooge_scala_library_impl, @@ -314,6 +313,23 @@ scrooge_scala_library = rule( provides = [DefaultInfo, ScroogeInfo, JavaInfo], ) +def _create_scala_struct(ctx): + """Create a scala provider in the shape expected by the IntelliJ bazel plugin.""" + output_jars = [] + + if ctx.attr.exports: + for exp in ctx.attr.exports: + for j in exp[JavaInfo].outputs.jars: + output_jars.append(struct(class_jar = j.class_jar, ijar = None, source_jar = None, source_jars = [])) + + for dep in ctx.attr.deps: + for j in dep[ScroogeAspectInfo].java_info.outputs.jars: + output_jars.append(struct(class_jar = j.class_jar, ijar = None, source_jar = None, source_jars = [])) + + return struct( + outputs = struct(jars = output_jars) + ) + def _scrooge_scala_import_impl(ctx): scala_jars = depset(ctx.files.scala_jars) jars_ji = java_common.create_provider( From 57661fa1ebbdc1359147d573e0ba4306dc6b9b98 Mon Sep 17 00:00:00 2001 From: Alex Beal Date: Tue, 17 Jul 2018 13:39:04 -0600 Subject: [PATCH 2/4] Fix linting errors. --- twitter_scrooge/twitter_scrooge.bzl | 45 ++++++++++++++++++----------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/twitter_scrooge/twitter_scrooge.bzl b/twitter_scrooge/twitter_scrooge.bzl index 23c5a1882..ae7cbf5e3 100644 --- a/twitter_scrooge/twitter_scrooge.bzl +++ b/twitter_scrooge/twitter_scrooge.bzl @@ -300,9 +300,12 @@ def _scrooge_scala_library_impl(ctx): all_java = aspect_info.java_info return struct( - scala = _create_scala_struct(ctx), # For IntelliJ support - providers = [all_java, ScroogeInfo(aspect_info = aspect_info), DefaultInfo(files = aspect_info.output_files)] - ) + scala = _create_scala_struct(ctx), # For IntelliJ support + providers = [ + all_java, + ScroogeInfo(aspect_info = aspect_info), + DefaultInfo(files = aspect_info.output_files) + ]) scrooge_scala_library = rule( implementation = _scrooge_scala_library_impl, @@ -314,21 +317,29 @@ scrooge_scala_library = rule( ) def _create_scala_struct(ctx): - """Create a scala provider in the shape expected by the IntelliJ bazel plugin.""" - output_jars = [] - - if ctx.attr.exports: - for exp in ctx.attr.exports: - for j in exp[JavaInfo].outputs.jars: - output_jars.append(struct(class_jar = j.class_jar, ijar = None, source_jar = None, source_jars = [])) + """Create a scala provider in the shape expected by the IntelliJ bazel plugin.""" + output_jars = [] - for dep in ctx.attr.deps: - for j in dep[ScroogeAspectInfo].java_info.outputs.jars: - output_jars.append(struct(class_jar = j.class_jar, ijar = None, source_jar = None, source_jars = [])) - - return struct( - outputs = struct(jars = output_jars) - ) + if ctx.attr.exports: + for exp in ctx.attr.exports: + for j in exp[JavaInfo].outputs.jars: + output_jars.append( + struct( + class_jar = j.class_jar, + ijar = None, + source_jar = None, + source_jars = [])) + + for dep in ctx.attr.deps: + for j in dep[ScroogeAspectInfo].java_info.outputs.jars: + output_jars.append( + struct( + class_jar = j.class_jar, + ijar = None, + source_jar = None, + source_jars = [])) + + return struct(outputs = struct(jars = output_jars)) def _scrooge_scala_import_impl(ctx): scala_jars = depset(ctx.files.scala_jars) From 58e4bc002a0a33b4c3f21c1965dececa81082782 Mon Sep 17 00:00:00 2001 From: Alex Beal Date: Wed, 18 Jul 2018 14:24:37 -0600 Subject: [PATCH 3/4] Add todo to remove scala field/provider --- twitter_scrooge/twitter_scrooge.bzl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/twitter_scrooge/twitter_scrooge.bzl b/twitter_scrooge/twitter_scrooge.bzl index ae7cbf5e3..90cedf098 100644 --- a/twitter_scrooge/twitter_scrooge.bzl +++ b/twitter_scrooge/twitter_scrooge.bzl @@ -299,6 +299,8 @@ def _scrooge_scala_library_impl(ctx): else: all_java = aspect_info.java_info + # TODO: Remove `scala` field once JavaInfo supports multiple + # output jars. https://github.com/bazelbuild/rules_scala/issues/564 return struct( scala = _create_scala_struct(ctx), # For IntelliJ support providers = [ From 4e7190522462d90a3a742e2f43a81baabfd76911 Mon Sep 17 00:00:00 2001 From: Alex Beal Date: Mon, 23 Jul 2018 15:16:56 -0600 Subject: [PATCH 4/4] Do not collect exported jars. --- twitter_scrooge/twitter_scrooge.bzl | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/twitter_scrooge/twitter_scrooge.bzl b/twitter_scrooge/twitter_scrooge.bzl index 90cedf098..9a7a15497 100644 --- a/twitter_scrooge/twitter_scrooge.bzl +++ b/twitter_scrooge/twitter_scrooge.bzl @@ -322,16 +322,6 @@ def _create_scala_struct(ctx): """Create a scala provider in the shape expected by the IntelliJ bazel plugin.""" output_jars = [] - if ctx.attr.exports: - for exp in ctx.attr.exports: - for j in exp[JavaInfo].outputs.jars: - output_jars.append( - struct( - class_jar = j.class_jar, - ijar = None, - source_jar = None, - source_jars = [])) - for dep in ctx.attr.deps: for j in dep[ScroogeAspectInfo].java_info.outputs.jars: output_jars.append(