Skip to content

Commit 027b10c

Browse files
committed
scala_inlined_library
1 parent 999fa48 commit 027b10c

File tree

7 files changed

+88
-6
lines changed

7 files changed

+88
-6
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ This project defines core build rules for [Scala](https://www.scala-lang.org/) t
1919

2020
- [scala_library](./docs/scala_library.md)
2121
- [scala_macro_library](./docs/scala_macro_library.md)
22+
- [scala_inlined_library](./docs/scala_inlined_library.md)
2223
- [scala_binary](./docs/scala_binary.md)
2324
- [scala_test](./docs/scala_test.md)
2425
- [scala_repl](./docs/scala_repl.md)

docs/customizable_phase.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ Currently phase architecture is used by 7 rules:
146146

147147
- scala_library
148148
- scala_macro_library
149+
- scala_inlined_library
149150
- scala_library_for_plugin_bootstrapping
150151
- scala_binary
151152
- scala_test

scala/advanced_usage/scala.bzl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ load(
1313
)
1414
load(
1515
"//scala/private:rules/scala_library.bzl",
16+
_make_scala_inlined_library = "make_scala_inlined_library",
1617
_make_scala_library = "make_scala_library",
1718
_make_scala_library_for_plugin_bootstrapping = "make_scala_library_for_plugin_bootstrapping",
1819
_make_scala_macro_library = "make_scala_macro_library",
@@ -28,6 +29,7 @@ load(
2829

2930
make_scala_binary = _make_scala_binary
3031
make_scala_library = _make_scala_library
32+
make_scala_inlined_library = _make_scala_inlined_library
3133
make_scala_library_for_plugin_bootstrapping = _make_scala_library_for_plugin_bootstrapping
3234
make_scala_macro_library = _make_scala_macro_library
3335
make_scala_repl = _make_scala_repl

scala/private/phases/phase_compile.bzl

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,18 @@ def phase_compile_library(ctx, p):
4040
)
4141
return _phase_compile_default(ctx, p, args)
4242

43+
def phase_compile_inlined_library(ctx, p):
44+
args = struct(
45+
buildijar = False,
46+
srcjars = p.collect_srcjars,
47+
unused_dependency_checker_ignored_targets = [
48+
target.label
49+
for target in p.scalac_provider.default_classpath + ctx.attr.exports +
50+
ctx.attr.unused_dependency_checker_ignored_targets
51+
],
52+
)
53+
return _phase_compile_default(ctx, p, args)
54+
4355
def phase_compile_library_for_plugin_bootstrapping(ctx, p):
4456
args = struct(
4557
buildijar = ctx.attr.build_ijar,

scala/private/phases/phases.bzl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ load(
77
_extras_phases = "extras_phases",
88
_run_phases = "run_phases",
99
)
10+
load("//scala/private:phases/phase_collect_exports_jars.bzl", _phase_collect_exports_jars = "phase_collect_exports_jars")
1011
load(
1112
"//scala/private:phases/phase_collect_jars.bzl",
1213
_phase_collect_jars_common = "phase_collect_jars_common",
@@ -15,12 +16,12 @@ load(
1516
_phase_collect_jars_repl = "phase_collect_jars_repl",
1617
_phase_collect_jars_scalatest = "phase_collect_jars_scalatest",
1718
)
18-
load("//scala/private:phases/phase_collect_exports_jars.bzl", _phase_collect_exports_jars = "phase_collect_exports_jars")
1919
load("//scala/private:phases/phase_collect_srcjars.bzl", _phase_collect_srcjars = "phase_collect_srcjars")
2020
load(
2121
"//scala/private:phases/phase_compile.bzl",
2222
_phase_compile_binary = "phase_compile_binary",
2323
_phase_compile_common = "phase_compile_common",
24+
_phase_compile_inlined_library = "phase_compile_inlined_library",
2425
_phase_compile_junit_test = "phase_compile_junit_test",
2526
_phase_compile_library = "phase_compile_library",
2627
_phase_compile_library_for_plugin_bootstrapping = "phase_compile_library_for_plugin_bootstrapping",
@@ -135,6 +136,7 @@ phase_collect_jars_common = _phase_collect_jars_common
135136
# compile
136137
phase_compile_binary = _phase_compile_binary
137138
phase_compile_library = _phase_compile_library
139+
phase_compile_inlined_library = _phase_compile_inlined_library
138140
phase_compile_library_for_plugin_bootstrapping = _phase_compile_library_for_plugin_bootstrapping
139141
phase_compile_junit_test = _phase_compile_junit_test
140142
phase_compile_repl = _phase_compile_repl

scala/private/rules/scala_library.bzl

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
load("@bazel_skylib//lib:dicts.bzl", _dicts = "dicts")
2+
load("//scala:scala_cross_version.bzl", "scala_version_transition", "toolchain_transition_attr")
23
load(
34
"//scala/private:common.bzl",
45
"sanitize_string_for_usage",
@@ -15,14 +16,14 @@ load(
1516
"//scala/private:coverage_replacements_provider.bzl",
1617
_coverage_replacements_provider = "coverage_replacements_provider",
1718
)
18-
load("//scala:scala_cross_version.bzl", "scala_version_transition", "toolchain_transition_attr")
1919
load(
2020
"//scala/private:phases/phases.bzl",
2121
"extras_phases",
2222
"phase_collect_exports_jars",
2323
"phase_collect_jars_common",
2424
"phase_collect_jars_macro_library",
2525
"phase_collect_srcjars",
26+
"phase_compile_inlined_library",
2627
"phase_compile_library",
2728
"phase_compile_library_for_plugin_bootstrapping",
2829
"phase_coverage_common",
@@ -217,6 +218,68 @@ def make_scala_library_for_plugin_bootstrapping(*extras):
217218

218219
scala_library_for_plugin_bootstrapping = make_scala_library_for_plugin_bootstrapping()
219220

221+
##
222+
# scala_inlined_library
223+
##
224+
225+
def _scala_inlined_library_impl(ctx):
226+
# Build up information from dependency-like attributes
227+
return run_phases(
228+
ctx,
229+
# customizable phases
230+
[
231+
("scalac_provider", phase_scalac_provider),
232+
("scalainfo_provider", phase_scalainfo_provider_non_macro),
233+
("collect_srcjars", phase_collect_srcjars),
234+
("write_manifest", phase_write_manifest),
235+
("dependency", phase_dependency_common),
236+
("collect_jars", phase_collect_jars_common),
237+
("scalacopts", phase_scalacopts),
238+
("semanticdb", phase_semanticdb),
239+
("compile", phase_compile_inlined_library),
240+
("coverage", phase_coverage_library),
241+
("merge_jars", phase_merge_jars),
242+
("runfiles", phase_runfiles_library),
243+
("collect_exports_jars", phase_collect_exports_jars),
244+
("default_info", phase_default_info),
245+
],
246+
)
247+
248+
_scala_inlined_library_attrs = {}
249+
250+
_scala_inlined_library_attrs.update(implicit_deps)
251+
252+
_scala_inlined_library_attrs.update(common_attrs)
253+
254+
_scala_inlined_library_attrs.update(_library_attrs)
255+
256+
_scala_inlined_library_attrs.update(resolve_deps)
257+
258+
_scala_inlined_library_attrs.update(toolchain_transition_attr)
259+
260+
def make_scala_inlined_library(*extras):
261+
return rule(
262+
attrs = _dicts.add(
263+
_scala_library_attrs,
264+
extras_phases(extras),
265+
*[extra["attrs"] for extra in extras if "attrs" in extra]
266+
),
267+
fragments = ["java"],
268+
outputs = _dicts.add(
269+
common_outputs,
270+
*[extra["outputs"] for extra in extras if "outputs" in extra]
271+
),
272+
toolchains = [
273+
"//scala:toolchain_type",
274+
"@bazel_tools//tools/jdk:toolchain_type",
275+
],
276+
cfg = scala_version_transition,
277+
provides = [JavaInfo],
278+
implementation = _scala_inlined_library_impl,
279+
)
280+
281+
scala_inlined_library = make_scala_inlined_library()
282+
220283
##
221284
# scala_macro_library
222285
##

scala/scala.bzl

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
load(
2-
"//specs2:specs2_junit.bzl",
3-
_specs2_junit_dependencies = "specs2_junit_dependencies",
4-
)
51
load(
62
"//scala/private:macros/setup_scala_toolchain.bzl",
73
_setup_scala_toolchain = "setup_scala_toolchain",
@@ -22,6 +18,7 @@ load(
2218
)
2319
load(
2420
"//scala/private:rules/scala_library.bzl",
21+
_scala_inlined_library = "scala_inlined_library",
2522
_scala_library = "scala_library",
2623
_scala_library_for_plugin_bootstrapping = "scala_library_for_plugin_bootstrapping",
2724
_scala_library_suite = "scala_library_suite",
@@ -36,6 +33,10 @@ load(
3633
_scala_test = "scala_test",
3734
_scala_test_suite = "scala_test_suite",
3835
)
36+
load(
37+
"//specs2:specs2_junit.bzl",
38+
_specs2_junit_dependencies = "specs2_junit_dependencies",
39+
)
3940

4041
def scala_specs2_junit_test(name, **kwargs):
4142
_scala_junit_test(

0 commit comments

Comments
 (0)