11load ("//scala/private/toolchain_deps:toolchain_deps.bzl" , "expose_toolchain_deps" )
2- load ("@io_bazel_rules_scala//scala:providers.bzl" , _DepsInfo = "DepsInfo" )
2+ load ("//scala:providers.bzl" , "declare_deps_provider" , _DepsInfo = "DepsInfo" )
3+ load (
4+ "//scala:scala_cross_version.bzl" ,
5+ "default_maven_server_urls" ,
6+ _versioned_repositories = "repositories" ,
7+ )
8+ load ("//third_party/repositories:repositories.bzl" , "repositories" )
9+ load ("@io_bazel_rules_scala_config//:config.bzl" , "SCALA_VERSION" )
10+
11+ DEP_PROVIDERS = [
12+ "jmh_classpath" ,
13+ "jmh_core" ,
14+ "benchmark_generator" ,
15+ "benchmark_generator_runtime" ,
16+ ]
17+
18+ def jmh_artifact_ids ():
19+ return [
20+ "io_bazel_rules_scala_org_openjdk_jmh_jmh_core" ,
21+ "io_bazel_rules_scala_org_openjdk_jmh_jmh_generator_asm" ,
22+ "io_bazel_rules_scala_org_openjdk_jmh_jmh_generator_reflection" ,
23+ "io_bazel_rules_scala_org_ow2_asm_asm" ,
24+ "io_bazel_rules_scala_net_sf_jopt_simple_jopt_simple" ,
25+ "io_bazel_rules_scala_org_apache_commons_commons_math3" ,
26+ ]
27+
28+ def jmh_repositories (
29+ maven_servers = default_maven_server_urls (),
30+ overriden_artifacts = {}):
31+ repositories (
32+ scala_version = SCALA_VERSION ,
33+ for_artifact_ids = jmh_artifact_ids (),
34+ fetch_sources = False ,
35+ maven_servers = maven_servers ,
36+ overriden_artifacts = overriden_artifacts ,
37+ )
38+ native .register_toolchains ("@io_bazel_rules_scala_toolchains//jmh:all" )
339
440def _jmh_toolchain_impl (ctx ):
541 toolchain = platform_common .ToolchainInfo (
@@ -11,19 +47,16 @@ jmh_toolchain = rule(
1147 _jmh_toolchain_impl ,
1248 attrs = {
1349 "dep_providers" : attr .label_list (
14- default = [
15- "@io_bazel_rules_scala//jmh:jmh_classpath_provider" ,
16- "@io_bazel_rules_scala//jmh:jmh_core_provider" ,
17- "@io_bazel_rules_scala//jmh:benchmark_generator_provider" ,
18- "@io_bazel_rules_scala//jmh:benchmark_generator_runtime_provider" ,
19- ],
50+ default = [":%s_provider" % p for p in DEP_PROVIDERS ],
2051 providers = [_DepsInfo ],
2152 ),
2253 },
2354)
2455
56+ _toolchain_type = "//jmh/toolchain:jmh_toolchain_type"
57+
2558def _export_toolchain_deps_impl (ctx ):
26- return expose_toolchain_deps (ctx , "@io_bazel_rules_scala//jmh/toolchain:jmh_toolchain_type" )
59+ return expose_toolchain_deps (ctx , _toolchain_type )
2760
2861export_toolchain_deps = rule (
2962 _export_toolchain_deps_impl ,
@@ -32,6 +65,61 @@ export_toolchain_deps = rule(
3265 mandatory = True ,
3366 ),
3467 },
35- toolchains = ["@io_bazel_rules_scala//jmh/toolchain:jmh_toolchain_type" ],
68+ toolchains = [_toolchain_type ],
3669 incompatible_use_toolchain_transition = True ,
3770)
71+
72+ def setup_jmh_toolchain (name ):
73+ jmh_toolchain (
74+ name = "%s_impl" % name ,
75+ dep_providers = [":%s_provider" % p for p in DEP_PROVIDERS ],
76+ visibility = ["//visibility:public" ],
77+ )
78+
79+ native .toolchain (
80+ name = name ,
81+ toolchain = ":%s_impl" % name ,
82+ toolchain_type = Label (_toolchain_type ),
83+ visibility = ["//visibility:public" ],
84+ )
85+
86+ declare_deps_provider (
87+ name = "jmh_core_provider" ,
88+ deps_id = "jmh_core" ,
89+ visibility = ["//visibility:public" ],
90+ deps = _versioned_repositories (SCALA_VERSION , [
91+ "@io_bazel_rules_scala_org_openjdk_jmh_jmh_core" ,
92+ ]),
93+ )
94+
95+ declare_deps_provider (
96+ name = "jmh_classpath_provider" ,
97+ deps_id = "jmh_classpath" ,
98+ visibility = ["//visibility:public" ],
99+ deps = _versioned_repositories (SCALA_VERSION , [
100+ "@io_bazel_rules_scala_net_sf_jopt_simple_jopt_simple" ,
101+ "@io_bazel_rules_scala_org_apache_commons_commons_math3" ,
102+ ]),
103+ )
104+
105+ declare_deps_provider (
106+ name = "benchmark_generator_provider" ,
107+ deps_id = "benchmark_generator" ,
108+ visibility = ["//visibility:public" ],
109+ deps = [
110+ "@io_bazel_rules_scala//src/java/io/bazel/rulesscala/jar" ,
111+ ] + _versioned_repositories (SCALA_VERSION , [
112+ "@io_bazel_rules_scala_org_openjdk_jmh_jmh_core" ,
113+ "@io_bazel_rules_scala_org_openjdk_jmh_jmh_generator_asm" ,
114+ "@io_bazel_rules_scala_org_openjdk_jmh_jmh_generator_reflection" ,
115+ ]),
116+ )
117+
118+ declare_deps_provider (
119+ name = "benchmark_generator_runtime_provider" ,
120+ deps_id = "benchmark_generator_runtime" ,
121+ visibility = ["//visibility:public" ],
122+ deps = _versioned_repositories (SCALA_VERSION , [
123+ "@io_bazel_rules_scala_org_openjdk_jmh_jmh_generator_asm" ,
124+ ]),
125+ )
0 commit comments