Skip to content

Commit b05ea3a

Browse files
committed
WIP: Bzlmod part the thirty-fifth
As it turns out, we're using a very old version of Scalafmt that breaks completely: ```txt ERROR: rules_scala/test/scalafmt/BUILD:43:20: ScalaFmt test/scalafmt/test/scalafmt/formatted/formatted-test.scala.fmt.output failed: (Exit 1): scalafmt failed: error executing ScalaFmt command (from target //test/scalafmt:formatted-test) bazel-out/darwin_arm64-opt-exec-ST-d57f47055a04/bin/scala/scalafmt/scalafmt '--jvm_flag=-Dfile.encoding=UTF-8' ... (remaining 1 argument skipped) java.util.NoSuchElementException: last of empty IndexedSeq ``` This matches: - scala/community-build#1680 Which mentions apparent fixes in: - scalameta/scalameta#3235 - scalameta/scalafmt#3581 So the fix is to update Scalafmt, but given how we don't use rules_jvm_external, that means a lot of manual updates to third_party/repositories/scala_*.bzl. There doesn't appear to be a way to automate this; there's no indication that the most recent update was automated in any way: - bazel-contrib#1543 So I'll plow through all the JARs and make the necessary changes: - https://mvnrepository.com/artifact/org.scalameta/scalafmt-core I can't update scala_2_11, since there's not a more recent compatible version. But the changes to scala_2_12 and scala_2_13 should be similar, and the changes to 2_13 should apply to 3_{1,2,3,4} as well. I had to hack .scalafmt.conf and ScalafmtWorker.scala a bit. This may make it incompatible with 2.11.
1 parent 59d05e2 commit b05ea3a

File tree

7 files changed

+397
-184
lines changed

7 files changed

+397
-184
lines changed

.scalafmt.conf

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ danglingParentheses.preset = true
55
docstrings.style = Asterisk
66
importSelectors = singleLine
77
maxColumn = 120
8-
verticalMultiline.newlineBeforeImplicitKW = true
8+
#verticalMultiline.newlineBeforeImplicitKW = true
99
rewrite.redundantBraces.stringInterpolation = true
1010
rewrite.rules = [
1111
RedundantParens,
1212
PreferCurlyFors,
1313
SortImports
1414
]
15-
unindentTopLevelOperators = false
15+
#unindentTopLevelOperators = false
1616
lineEndings=preserve

MODULE.bazel.lock

+299-142
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

scala/scalafmt/BUILD

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
load("//scala:scala.bzl", "scala_binary")
22
load("//scala:scala_cross_version.bzl", "version_suffix")
33
load("//scala/scalafmt/toolchain:toolchain.bzl", "export_scalafmt_deps")
4-
load("//scala/scalafmt/toolchain:setup_scalafmt_toolchain.bzl", "setup_scalafmt_toolchains")
54
load("@io_bazel_rules_scala_config//:config.bzl", "SCALA_VERSION")
5+
load("//scala/scalafmt/toolchain:setup_scalafmt_toolchain.bzl", "setup_scalafmt_toolchains")
66
load(
77
"//scala/scalafmt:phase_scalafmt_ext.bzl",
88
"scalafmt_singleton",

scala/scalafmt/scalafmt/ScalafmtWorker.scala

+9-4
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import io.bazel.rulesscala.worker.Worker
44
import java.io.File
55
import java.nio.file.Files
66
import org.scalafmt.Scalafmt
7-
import org.scalafmt.config.Config
8-
import org.scalafmt.util.FileOps
7+
import org.scalafmt.config.ScalafmtConfig
8+
import org.scalafmt.sysops.FileOps
99
import scala.annotation.tailrec
1010
import scala.io.Codec
1111

@@ -18,9 +18,14 @@ object ScalafmtWorker extends Worker.Interface {
1818
val argFile = args.map{x => new File(x)}
1919
val namespace = argName.zip(argFile).toMap
2020

21-
val source = FileOps.readFile(namespace.getOrElse("input", new File("")))(Codec.UTF8)
21+
val source = FileOps.readFile(
22+
namespace.getOrElse("input", new File("")).toPath()
23+
)(Codec.UTF8)
24+
25+
val config = ScalafmtConfig.fromHoconFile(
26+
namespace.getOrElse("config", new File("")).toPath()
27+
).get
2228

23-
val config = Config.fromHoconFile(namespace.getOrElse("config", new File(""))).get
2429
@tailrec
2530
def format(code: String): String = {
2631
val formatted = Scalafmt.format(code, config).get

scala/scalafmt/scalafmt_repositories.bzl

+9-1
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,19 @@ _SCALAFMT_DEPS = [
4545
"com_geirsson_metaconfig_typesafe_config",
4646
]
4747

48+
_SCALAFMT_DEPS_2_11 = [
49+
"com_geirsson_metaconfig_pprint",
50+
"org_scalameta_mdoc_parser",
51+
"org_scalameta_scalafmt_config",
52+
"org_scalameta_scalafmt_sysops",
53+
]
54+
4855
def _artifact_ids(scala_version):
4956
major_version = extract_major_version(scala_version)
57+
extra_deps = _SCALAFMT_DEPS_2_11 if major_version != "2.11" else []
5058
geny = ["com_lihaoyi_geny"] if major_version != "2.11" else []
5159
parallel_collections = ["io_bazel_rules_scala_scala_parallel_collections"] if major_version == "2.13" or major_version.startswith("3") else []
52-
return _SCALAFMT_DEPS + geny + parallel_collections
60+
return _SCALAFMT_DEPS + extra_deps + geny + parallel_collections
5361

5462
def scalafmt_repositories(
5563
maven_servers = _default_maven_server_urls(),

scala/scalafmt/toolchain/setup_scalafmt_toolchain.bzl

+12-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ load("//scala:providers.bzl", "declare_deps_provider")
33
load("//scala:scala_cross_version.bzl", "version_suffix")
44
load("@io_bazel_rules_scala_config//:config.bzl", "SCALA_VERSIONS")
55

6-
_SCALAFMT_DEPS = [
6+
_SCALAFMT_DEPS_2_11 = [
77
"@com_geirsson_metaconfig_core",
88
"@org_scalameta_common",
99
"@org_scalameta_parsers",
@@ -12,6 +12,12 @@ _SCALAFMT_DEPS = [
1212
"@org_scalameta_trees",
1313
]
1414

15+
_SCALAFMT_DEPS = _SCALAFMT_DEPS_2_11 + [
16+
"@org_scalameta_mdoc_parser",
17+
"@org_scalameta_scalafmt_config",
18+
"@org_scalameta_scalafmt_sysops",
19+
]
20+
1521
def setup_scalafmt_toolchain(
1622
name,
1723
scalafmt_classpath,
@@ -48,4 +54,8 @@ def setup_scalafmt_toolchains():
4854
)
4955

5056
def _deps(scala_version):
51-
return [dep + version_suffix(scala_version) for dep in _SCALAFMT_DEPS]
57+
deps = _SCALAFMT_DEPS
58+
if scala_version.startswith("2.11"):
59+
deps = _SCALAFMT_DEPS_2_11
60+
61+
return [dep + version_suffix(scala_version) for dep in deps]

third_party/repositories/scala_2_13.bzl

+65-32
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ artifacts = {
1414
"sha256": "8846baaa8cf43b1b19725ab737abff145ca58d14a4d02e75d71ca8f7ca5f2926",
1515
},
1616
"io_bazel_rules_scala_scala_parallel_collections": {
17-
"artifact": "org.scala-lang.modules:scala-parallel-collections_2.13:1.0.3",
18-
"sha256": "5b9f705652d14005cdc535270547305a4e41d3664f6d15c21b7e0c807f8d6605",
17+
"artifact": "org.scala-lang.modules:scala-parallel-collections_2.13:1.0.4",
18+
"sha256": "68f266c4fa37cb20a76e905ad940e241190ce288b7e4a9877f1dd1261cd1a9a7",
1919
},
2020
"io_bazel_rules_scala_scalatest": {
2121
"artifact": "org.scalatest:scalatest_2.13:3.2.9",
@@ -74,8 +74,8 @@ artifacts = {
7474
"sha256": "5c285b72e6dc0a98e99ae0a1ceeb4027dab9adfa441844046bd3f19e0efdcb54",
7575
},
7676
"org_scalameta_common": {
77-
"artifact": "org.scalameta:common_2.13:4.4.27",
78-
"sha256": "882d82f7f547aec5d9b55ef3173188ce3d55b28272cd9e36b6558f55e1389d26",
77+
"artifact": "org.scalameta:common_2.13:4.10.1",
78+
"sha256": "501df5667f192ae2338e8ba3a4559225858b3a75ad6788889af21f5a8946abac",
7979
"deps": [
8080
"@com_lihaoyi_sourcecode",
8181
"@io_bazel_rules_scala_scala_library",
@@ -109,60 +109,82 @@ artifacts = {
109109
"sha256": "ca3857a3f95266e0d87e1a1f26c8592c53c12ac7203f911759415f6c8a43df7d",
110110
},
111111
"org_scala_lang_modules_scala_collection_compat": {
112-
"artifact": "org.scala-lang.modules:scala-collection-compat_2.13:2.4.3",
113-
"sha256": "7f71f1404ce6b54b2f854b0f6c5a5e06c0d915043e44b697a25adf2da573a09e",
112+
"artifact": "org.scala-lang.modules:scala-collection-compat_2.13:2.11.0",
113+
"sha256": "0c1108883b7b97851750e8932f9584346ccb23f1260c197f97295ac2e6c56cec",
114+
"deps": [
115+
"@io_bazel_rules_scala_scala_library",
116+
],
117+
},
118+
"org_scalameta_mdoc_parser": {
119+
"artifact": "org.scalameta:mdoc-parser_2.13:2.6.1",
120+
"sha256": "93c4b6628219ccea71cdf190b11967e313daa276f265f0ad1097c62ec4a9fcec",
114121
"deps": [
115122
"@io_bazel_rules_scala_scala_library",
116123
],
117124
},
118125
"org_scalameta_parsers": {
119-
"artifact": "org.scalameta:parsers_2.13:4.4.27",
120-
"sha256": "f375cbda5c0ee65bcd9af8a9a2a2afb042ca244d79880db904aa03c98a0d7553",
126+
"artifact": "org.scalameta:parsers_2.13:4.10.1",
127+
"sha256": "657b2465014a7b75fbf98b6179b44888396f4ab201f404a843c1743a775d2e64",
121128
"deps": [
122129
"@io_bazel_rules_scala_scala_library",
123130
"@org_scalameta_trees",
124131
],
125132
},
126-
"org_scalameta_scalafmt_core": {
127-
"artifact": "org.scalameta:scalafmt-core_2.13:3.0.0",
128-
"sha256": "c71697f9b6bf41109f7f31ddddd924198b0769e94240aad2aa05006071607b1e",
133+
"org_scalameta_scalafmt_config": {
134+
"artifact": "org.scalameta:scalafmt-config_2.13:3.8.3",
135+
"sha256": "175c7e345baccb75e0f79aa9d8c821834b4b232d3917039c44ca2f0265f2110a",
129136
"deps": [
130137
"@com_geirsson_metaconfig_core",
131138
"@com_geirsson_metaconfig_typesafe_config",
139+
],
140+
},
141+
"org_scalameta_scalafmt_core": {
142+
"artifact": "org.scalameta:scalafmt-core_2.13:3.8.3",
143+
"sha256": "c214d16a746ceab8ac47b97c18d2817f726174dd58da75d43472d045ddc25009",
144+
"deps": [
132145
"@io_bazel_rules_scala_scala_library",
133146
"@io_bazel_rules_scala_scala_reflect",
147+
"@org_scalameta_mdoc_parser",
148+
"@org_scalameta_scalafmt_config",
149+
"@org_scalameta_scalafmt_sysops",
134150
"@org_scalameta_scalameta",
151+
],
152+
},
153+
"org_scalameta_scalafmt_sysops": {
154+
"artifact": "org.scalameta:scalafmt-sysops_2.13:3.8.3",
155+
"sha256": "981b5455b956ece0e7f2c0825241c6f99b2d70cc2352700a2fcffa5c01ed6633",
156+
"deps": [
157+
"@io_bazel_rules_scala_scala_library",
135158
"@io_bazel_rules_scala_scala_parallel_collections",
136159
],
137160
},
138161
"org_scalameta_scalameta": {
139-
"artifact": "org.scalameta:scalameta_2.13:4.4.27",
140-
"sha256": "878cfea72e1df90bf8a49cdac0deed8226b0b96d11d537131400f0e17efcd1f5",
162+
"artifact": "org.scalameta:scalameta_2.13:4.10.1",
163+
"sha256": "52abf9be27c6d609497e3b587675d603f708dd92237bd34a8a567c5756d16328",
141164
"deps": [
142165
"@io_bazel_rules_scala_scala_library",
143166
"@org_scala_lang_scalap",
144167
"@org_scalameta_parsers",
145168
],
146169
},
147170
"org_scalameta_trees": {
148-
"artifact": "org.scalameta:trees_2.13:4.4.27",
149-
"sha256": "9a78a879c0fa88cdfed6e2dc83c47c3d0f9994927be84dffa44f0bbe18ca311a",
171+
"artifact": "org.scalameta:trees_2.13:4.10.1",
172+
"sha256": "5b8701aecfb4474febd0e0be481eb2c22a1c2fb95a23d4dd604b175808dd9092",
150173
"deps": [
151174
"@io_bazel_rules_scala_scala_library",
152175
"@org_scalameta_common",
153-
"@org_scalameta_fastparse",
154176
],
155177
},
156178
"org_typelevel_paiges_core": {
157-
"artifact": "org.typelevel:paiges-core_2.13:0.4.1",
158-
"sha256": "3c4968ee11aa929d937fc666db62cf7bbc3909ba08c853909d93fea08b214569",
179+
"artifact": "org.typelevel:paiges-core_2.13:0.4.4",
180+
"sha256": "ffbd59d3648e71c5b8f4474a54121fb3512707e7901245831669aa9e85f3bbf0",
159181
"deps": [
160182
"@io_bazel_rules_scala_scala_library",
161183
],
162184
},
163185
"com_typesafe_config": {
164-
"artifact": "com.typesafe:config:1.4.1",
165-
"sha256": "4c0aa7e223c75c8840c41fc183d4cd3118140a1ee503e3e08ce66ed2794c948f",
186+
"artifact": "com.typesafe:config:1.4.3",
187+
"sha256": "8ada4c185ce72416712d63e0b5afdc5f009c0cdf405e5f26efecdf156aa5dfb6",
166188
},
167189
"org_scala_lang_scalap": {
168190
"artifact": "org.scala-lang:scalap:2.13.6",
@@ -189,8 +211,8 @@ artifacts = {
189211
],
190212
},
191213
"com_lihaoyi_fansi": {
192-
"artifact": "com.lihaoyi:fansi_2.13:0.2.12",
193-
"sha256": "d92e5b0ea4d946f6567db57fbeffc34d4020597c675cb804ade6cc38a198ff35",
214+
"artifact": "com.lihaoyi:fansi_2.13:0.4.0",
215+
"sha256": "0eb11a2a905d608033ec1642b0a9f0d8444daa4ad465f684b50bdc7e7a41bf53",
194216
"deps": [
195217
"@com_lihaoyi_sourcecode",
196218
],
@@ -211,31 +233,42 @@ artifacts = {
211233
],
212234
},
213235
"com_lihaoyi_sourcecode": {
214-
"artifact": "com.lihaoyi:sourcecode_2.13:0.2.5",
215-
"sha256": "b8f816ad81e3546e4a75cdc74d322f02e6d84fbfa5eb1ea5e1eca666cede524c",
236+
"artifact": "com.lihaoyi:sourcecode_2.13:0.4.2",
237+
"sha256": "fbace2b994a7184f6b38ee98630be61f21948008a4a56cd83c7f86c1c1de743d",
216238
},
217239
"com_google_protobuf_protobuf_java": {
218240
"artifact": "com.google.protobuf:protobuf-java:3.10.0",
219241
"sha256": "161d7d61a8cb3970891c299578702fd079646e032329d6c2cabf998d191437c9",
220242
},
221243
"com_geirsson_metaconfig_core": {
222-
"artifact": "com.geirsson:metaconfig-core_2.13:0.9.14",
223-
"sha256": "aab728395055a095d1134f76191d40076eaf9d5c9ffc722005da044580269acf",
244+
"artifact": "com.geirsson:metaconfig-core_2.13:0.12.0",
245+
"sha256": "2c91199ae5b206afdd52538f8c4da67c1794bcce0b5b06cf25679db00cf32c19",
224246
"deps": [
225-
"@com_lihaoyi_pprint",
226247
"@io_bazel_rules_scala_scala_library",
227-
"@org_typelevel_paiges_core",
248+
"@io_bazel_rules_scala_scala_reflect",
249+
"@com_geirsson_metaconfig_pprint",
228250
"@org_scala_lang_modules_scala_collection_compat",
251+
"@org_typelevel_paiges_core",
252+
],
253+
},
254+
"com_geirsson_metaconfig_pprint": {
255+
"artifact": "com.geirsson:metaconfig-pprint_2.13:0.12.0",
256+
"sha256": "6d8b0b4279116c11d4f29443bd2a9411bedb3d86ccaf964599a9420f530ed062",
257+
"deps": [
258+
"@io_bazel_rules_scala_scala_compiler",
259+
"@io_bazel_rules_scala_scala_library",
260+
"@io_bazel_rules_scala_scala_reflect",
261+
"@com_lihaoyi_fansi",
229262
],
230263
},
231264
"com_geirsson_metaconfig_typesafe_config": {
232-
"artifact": "com.geirsson:metaconfig-typesafe-config_2.13:0.9.14",
233-
"sha256": "e4ca5cfb44dc3ee0fff222eafbe86c7f431b0f692b7fd0b832da521462a693cd",
265+
"artifact": "com.geirsson:metaconfig-typesafe-config_2.13:0.12.0",
266+
"sha256": "b4c5dbf863dadde363d8bd24333ce1091fec94fc5b88efd04607a26f3eab61b8",
234267
"deps": [
268+
"@io_bazel_rules_scala_scala_library",
235269
"@com_geirsson_metaconfig_core",
236270
"@com_typesafe_config",
237-
"@io_bazel_rules_scala_scala_library",
238-
],
271+
]
239272
},
240273
"io_bazel_rules_scala_org_openjdk_jmh_jmh_core": {
241274
"artifact": "org.openjdk.jmh:jmh-core:1.36",

0 commit comments

Comments
 (0)