Skip to content

Commit 69a4545

Browse files
Merge pull request #1180 from alexarchambault/aarch64
aarch64 fixes
2 parents 1719919 + b578037 commit 69a4545

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+557
-222
lines changed

.github/workflows/ci.yml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ jobs:
137137
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
138138
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
139139
SCALA_CLI_IT_GROUP: 1
140+
SCALA_CLI_SODIUM_JNI_ALLOW: false
140141

141142
native-linux-tests-2:
142143
needs: generate-linux-launcher
@@ -160,6 +161,7 @@ jobs:
160161
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
161162
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
162163
SCALA_CLI_IT_GROUP: 2
164+
SCALA_CLI_SODIUM_JNI_ALLOW: false
163165

164166
native-linux-tests-3:
165167
needs: generate-linux-launcher
@@ -183,6 +185,7 @@ jobs:
183185
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
184186
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
185187
SCALA_CLI_IT_GROUP: 3
188+
SCALA_CLI_SODIUM_JNI_ALLOW: false
186189

187190
generate-macos-launcher:
188191
timeout-minutes: 120
@@ -232,6 +235,7 @@ jobs:
232235
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
233236
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
234237
SCALA_CLI_IT_GROUP: 1
238+
SCALA_CLI_SODIUM_JNI_ALLOW: false
235239

236240
native-macos-tests-2:
237241
needs: generate-macos-launcher
@@ -255,6 +259,7 @@ jobs:
255259
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
256260
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
257261
SCALA_CLI_IT_GROUP: 2
262+
SCALA_CLI_SODIUM_JNI_ALLOW: false
258263

259264
native-macos-tests-3:
260265
needs: generate-macos-launcher
@@ -278,6 +283,7 @@ jobs:
278283
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
279284
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
280285
SCALA_CLI_IT_GROUP: 3
286+
SCALA_CLI_SODIUM_JNI_ALLOW: false
281287

282288
generate-windows-launcher:
283289
timeout-minutes: 120
@@ -336,6 +342,7 @@ jobs:
336342
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
337343
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
338344
SCALA_CLI_IT_GROUP: 1
345+
SCALA_CLI_SODIUM_JNI_ALLOW: false
339346

340347
native-windows-tests-2:
341348
needs: generate-windows-launcher
@@ -363,6 +370,7 @@ jobs:
363370
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
364371
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
365372
SCALA_CLI_IT_GROUP: 2
373+
SCALA_CLI_SODIUM_JNI_ALLOW: false
366374

367375
native-windows-tests-3:
368376
needs: generate-windows-launcher
@@ -390,6 +398,7 @@ jobs:
390398
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
391399
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
392400
SCALA_CLI_IT_GROUP: 3
401+
SCALA_CLI_SODIUM_JNI_ALLOW: false
393402

394403
generate-mostly-static-launcher:
395404
timeout-minutes: 120
@@ -438,6 +447,7 @@ jobs:
438447
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
439448
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
440449
SCALA_CLI_IT_GROUP: 1
450+
SCALA_CLI_SODIUM_JNI_ALLOW: false
441451
- name: Docker integration tests
442452
run: ./mill integration.docker-slim.test
443453
- name: Login to GitHub Container Registry
@@ -472,6 +482,7 @@ jobs:
472482
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
473483
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
474484
SCALA_CLI_IT_GROUP: 2
485+
SCALA_CLI_SODIUM_JNI_ALLOW: false
475486

476487
native-mostly-static-tests-3:
477488
needs: generate-mostly-static-launcher
@@ -495,6 +506,7 @@ jobs:
495506
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
496507
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
497508
SCALA_CLI_IT_GROUP: 3
509+
SCALA_CLI_SODIUM_JNI_ALLOW: false
498510

499511
generate-static-launcher:
500512
timeout-minutes: 120
@@ -543,6 +555,7 @@ jobs:
543555
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
544556
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
545557
SCALA_CLI_IT_GROUP: 1
558+
SCALA_CLI_SODIUM_JNI_ALLOW: false
546559
- name: Docker integration tests
547560
run: ./mill integration.docker.test
548561
- name: Login to GitHub Container Registry
@@ -579,6 +592,7 @@ jobs:
579592
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
580593
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
581594
SCALA_CLI_IT_GROUP: 2
595+
SCALA_CLI_SODIUM_JNI_ALLOW: false
582596

583597
native-static-tests-3:
584598
needs: generate-static-launcher
@@ -604,6 +618,7 @@ jobs:
604618
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
605619
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
606620
SCALA_CLI_IT_GROUP: 3
621+
SCALA_CLI_SODIUM_JNI_ALLOW: false
607622

608623
docs-tests:
609624
# for now, lets run those tests only on ubuntu

build.sc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,8 @@ trait Core extends ScalaCliSbtModule with ScalaCliPublishModule with HasTests
355355
| def millVersion = "${InternalDeps.Versions.mill}"
356356
| def lefouMillwRef = "${InternalDeps.Versions.lefouMillwRef}"
357357
|
358+
| def scalafmtOrganization = "${Deps.scalafmtCli.dep.module.organization.value}"
359+
| def scalafmtName = "${Deps.scalafmtCli.dep.module.name.value}"
358360
| def defaultScalafmtVersion = "${Deps.scalafmtCli.dep.version}"
359361
|
360362
| def defaultScalaVersion = "${Scala.defaultUser}"
@@ -366,7 +368,11 @@ trait Core extends ScalaCliSbtModule with ScalaCliPublishModule with HasTests
366368
| def defaultGraalVMJavaVersion = ${deps.graalVmJavaVersion}
367369
| def defaultGraalVMVersion = "${deps.graalVmVersion}"
368370
|
371+
| def scalaCliSigningOrganization = "${Deps.signingCli.dep.module.organization.value}"
372+
| def scalaCliSigningName = "${Deps.signingCli.dep.module.name.value}"
369373
| def scalaCliSigningVersion = "${Deps.signingCli.dep.version}"
374+
| def javaClassNameOrganization = "${Deps.javaClassName.dep.module.organization.value}"
375+
| def javaClassNameName = "${Deps.javaClassName.dep.module.name.value}"
370376
| def javaClassNameVersion = "${Deps.javaClassName.dep.version}"
371377
|
372378
| def libsodiumVersion = "${deps.libsodiumVersion}"

mill

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,11 @@ coursier_version="2.1.0-M2"
148148

149149
# https://stackoverflow.com/questions/3466166/how-to-check-if-running-in-cygwin-mac-or-linux/17072017#17072017
150150
if [ "$(expr substr $(uname -s) 1 5 2>/dev/null)" == "Linux" ]; then
151-
cs_url="https://github.com/coursier/coursier/releases/download/v$coursier_version/cs-x86_64-pc-linux.gz"
151+
if [ "$(uname -m)" == "aarch64" ]; then
152+
cs_url="https://github.com/coursier/coursier/releases/download/v$coursier_version/cs-aarch64-pc-linux.gz"
153+
else
154+
cs_url="https://github.com/coursier/coursier/releases/download/v$coursier_version/cs-x86_64-pc-linux.gz"
155+
fi
152156
cache_base="$HOME/.cache/coursier/v1"
153157
elif [ "$(uname)" == "Darwin" ]; then
154158
cs_url="https://github.com/coursier/coursier/releases/download/v$coursier_version/cs-x86_64-apple-darwin.gz"
@@ -186,7 +190,7 @@ elif [[ "$cache_dest" == *.zip ]]; then
186190
fi
187191
fi
188192

189-
eval "$(cs java --env --jvm temurin:17 || cs java --env --jvm openjdk:1.17.0)"
193+
eval "$("$cs" java --env --jvm temurin:17 || "$cs" java --env --jvm openjdk:1.17.0)"
190194

191195

192196
init_mill_jvm_opts

modules/build/src/main/java/scala/build/internal/JavaParserProxyMakerSubst.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import com.oracle.svm.core.annotate.Substitute;
44
import com.oracle.svm.core.annotate.TargetClass;
55

6+
import java.util.function.Supplier;
7+
68
/**
79
* This makes [[JavaParserProxyMaker.get]] provide a [[JavaParserProxyBinary]]
810
* rather than a [[JavaParserProxyJvm]], from native launchers.
@@ -15,8 +17,9 @@ public final class JavaParserProxyMakerSubst {
1517
public JavaParserProxy get(
1618
Object archiveCache,
1719
scala.Option<String> javaClassNameVersionOpt,
18-
scala.build.Logger logger
20+
scala.build.Logger logger,
21+
Supplier<String> javaCommand
1922
) {
20-
return new JavaParserProxyBinary(archiveCache, logger, javaClassNameVersionOpt);
23+
return new JavaParserProxyBinary(archiveCache, logger, javaClassNameVersionOpt, javaCommand);
2124
}
2225
}

modules/build/src/main/scala/scala/build/Build.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,8 @@ object Build {
219219
Sources.defaultPreprocessors(
220220
options.scriptOptions.codeWrapper.getOrElse(CustomCodeWrapper),
221221
options.archiveCache,
222-
options.internal.javaClassNameVersionOpt
222+
options.internal.javaClassNameVersionOpt,
223+
() => options.javaHome().value.javaCommand
223224
),
224225
logger
225226
)

modules/build/src/main/scala/scala/build/Sources.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,12 @@ object Sources {
8787
def defaultPreprocessors(
8888
codeWrapper: CodeWrapper,
8989
archiveCache: ArchiveCache[Task],
90-
javaClassNameVersionOpt: Option[String]
90+
javaClassNameVersionOpt: Option[String],
91+
javaCommand: () => String
9192
): Seq[Preprocessor] =
9293
Seq(
9394
ScriptPreprocessor(codeWrapper),
94-
JavaPreprocessor(archiveCache, javaClassNameVersionOpt),
95+
JavaPreprocessor(archiveCache, javaClassNameVersionOpt, javaCommand),
9596
ScalaPreprocessor,
9697
DataPreprocessor
9798
)

modules/build/src/main/scala/scala/build/bsp/BspImpl.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,8 @@ final class BspImpl(
9595
Sources.defaultPreprocessors(
9696
buildOptions.scriptOptions.codeWrapper.getOrElse(CustomCodeWrapper),
9797
buildOptions.archiveCache,
98-
buildOptions.internal.javaClassNameVersionOpt
98+
buildOptions.internal.javaClassNameVersionOpt,
99+
() => buildOptions.javaHome().value.javaCommand
99100
),
100101
persistentLogger,
101102
maybeRecoverOnError(Scope.Main)

modules/build/src/main/scala/scala/build/internal/JavaParserProxyBinary.scala

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ package scala.build.internal
22

33
import coursier.cache.ArchiveCache
44
import coursier.util.Task
5+
import dependency._
6+
7+
import java.util.function.Supplier
58

69
import scala.build.EitherCps.{either, value}
710
import scala.build.Logger
@@ -12,7 +15,8 @@ import scala.util.Properties
1215
class JavaParserProxyBinary(
1316
archiveCache: ArchiveCache[Task],
1417
javaClassNameVersionOpt: Option[String],
15-
logger: Logger
18+
logger: Logger,
19+
javaCommand: () => String
1620
) extends JavaParserProxy {
1721

1822
/** For internal use only
@@ -23,9 +27,15 @@ class JavaParserProxyBinary(
2327
def this(
2428
archiveCache: Object,
2529
logger: Logger,
26-
javaClassNameVersionOpt: Option[String]
30+
javaClassNameVersionOpt: Option[String],
31+
javaCommand0: Supplier[String]
2732
) =
28-
this(archiveCache.asInstanceOf[ArchiveCache[Task]], javaClassNameVersionOpt, logger)
33+
this(
34+
archiveCache.asInstanceOf[ArchiveCache[Task]],
35+
javaClassNameVersionOpt,
36+
logger,
37+
() => javaCommand0.get()
38+
)
2939

3040
def className(content: Array[Byte]): Either[BuildException, Option[String]] = either {
3141

@@ -38,19 +48,28 @@ class JavaParserProxyBinary(
3848
val url =
3949
s"https://github.com/scala-cli/java-class-name/releases/download/$tag/java-class-name-$platformSuffix$ext"
4050

51+
val params = ExternalBinaryParams(
52+
url,
53+
changing,
54+
"java-class-name",
55+
Seq(
56+
dep"${Constants.javaClassNameOrganization}:${Constants.javaClassNameName}:${Constants.javaClassNameVersion}"
57+
),
58+
"scala.cli.javaclassname.JavaClassName" // FIXME I'd rather not hardcode that, but automatic detection is cumbersome to setup…
59+
)
4160
val binary =
42-
value(FetchExternalBinary.fetch(url, changing, archiveCache, logger, "java-class-name"))
61+
value(FetchExternalBinary.fetch(params, archiveCache, logger, javaCommand))
4362

4463
val source =
4564
os.temp(content, suffix = ".java", perms = if (Properties.isWin) null else "rw-------")
65+
val command = binary.command
4666
val output =
4767
try {
48-
logger.debug(s"Running $binary $source")
49-
val res = os.proc(binary, source).call()
68+
logger.debug(s"Running $command $source")
69+
val res = os.proc(command, source).call()
5070
res.out.text().trim
5171
}
5272
finally os.remove(source)
53-
5473
if (output.isEmpty) None
5574
else Some(output)
5675
}

modules/build/src/main/scala/scala/build/internal/JavaParserProxyMaker.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package scala.build.internal
22

3+
import java.util.function.Supplier
4+
35
import scala.build.Logger
46

57
/** On the JVM, provides [[JavaParserProxyJvm]] as [[JavaParserProxy]] instance.
@@ -18,7 +20,8 @@ class JavaParserProxyMaker {
1820
def get(
1921
archiveCache: Object, // Actually a ArchiveCache[Task], but having issues with the higher-kind type param from Java…
2022
javaClassNameVersionOpt: Option[String],
21-
logger: Logger
23+
logger: Logger,
24+
javaCommand: Supplier[String]
2225
): JavaParserProxy =
2326
new JavaParserProxyJvm
2427
}

modules/build/src/main/scala/scala/build/internal/Runner.scala

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import scala.build.errors.{
1919
TooManyFrameworksFoundByBridgeError
2020
}
2121
import scala.build.testrunner.{AsmTestRunner, TestRunner}
22-
import scala.util.Properties
22+
import scala.util.{Failure, Properties, Success}
2323

2424
object Runner {
2525

@@ -282,6 +282,12 @@ object Runner {
282282
val config = RunConfig().withLogger(logger.scalaJsLogger)
283283
val processJs = envJs.start(inputs, config)
284284

285+
processJs.future.value.foreach {
286+
case Failure(t) =>
287+
throw new Exception(t)
288+
case Success(_) =>
289+
}
290+
285291
val processField =
286292
processJs.getClass.getDeclaredField("org$scalajs$jsenv$ExternalJSRun$$process")
287293
processField.setAccessible(true)

0 commit comments

Comments
 (0)