Skip to content

Commit 1205a3d

Browse files
committed
Bump Mill to 0.12.10
1 parent 5506f14 commit 1205a3d

File tree

5 files changed

+462
-136
lines changed

5 files changed

+462
-136
lines changed

.github/workflows/ci.yml

+11-11
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@ jobs:
2323
with:
2424
jvm: temurin:17
2525
- run: |
26-
./mill -i "java-class-name.writeNativeImageScript" generate.sh "" && \
26+
./mill -i "java-class-name.writeNativeImageScript" --scriptDest generate.sh --imageDest "" && \
2727
./generate.sh && \
28-
./mill -i "java-class-name.copyToArtifacts" artifacts/
28+
./mill -i "java-class-name.copyToArtifacts" --directory artifacts/
2929
if: runner.os != 'Windows'
3030
- run: |
31-
@call ./mill.bat -i "java-class-name.writeNativeImageScript" generate.bat ""
31+
@call ./mill.bat -i "java-class-name.writeNativeImageScript" --scriptDest generate.bat --imageDest ""
3232
@call generate.bat
33-
@call ./mill.bat -i "java-class-name.copyToArtifacts" artifacts/
33+
@call ./mill.bat -i "java-class-name.copyToArtifacts" --directory artifacts/
3434
shell: cmd
3535
if: runner.os == 'Windows'
3636
- name: Test
@@ -41,7 +41,7 @@ jobs:
4141
path: artifacts/
4242
if-no-files-found: error
4343
retention-days: 1
44-
- run: ./mill -i ci.upload artifacts/
44+
- run: ./mill -i ci.upload --directory artifacts/
4545
if: github.event_name == 'push'
4646
env:
4747
UPLOAD_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -58,9 +58,9 @@ jobs:
5858
with:
5959
jvm: temurin:17
6060
- run: |
61-
./mill -i "java-class-name.static.writeNativeImageScript" generate.sh "" && \
61+
./mill -i "java-class-name.static.writeNativeImageScript" --scriptDest generate.sh --imageDest "" && \
6262
./generate.sh && \
63-
./mill -i "java-class-name.static.copyToArtifacts" artifacts/
63+
./mill -i "java-class-name.static.copyToArtifacts" --directory artifacts/
6464
- uses: actions/upload-artifact@v4
6565
with:
6666
name: launcher-linux-static
@@ -69,7 +69,7 @@ jobs:
6969
retention-days: 1
7070
- name: Test
7171
run: ./mill -i java-class-name-tests.static.test
72-
- run: ./mill -i ci.upload artifacts/
72+
- run: ./mill -i ci.upload --directory artifacts/
7373
if: github.event_name == 'push'
7474
env:
7575
UPLOAD_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -86,9 +86,9 @@ jobs:
8686
with:
8787
jvm: temurin:17
8888
- run: |
89-
./mill -i "java-class-name.mostly-static.writeNativeImageScript" generate.sh "" && \
89+
./mill -i "java-class-name.mostly-static.writeNativeImageScript" --scriptDest generate.sh --imageDest "" && \
9090
./generate.sh && \
91-
./mill -i "java-class-name.mostly-static.copyToArtifacts" artifacts/
91+
./mill -i "java-class-name.mostly-static.copyToArtifacts" --directory artifacts/
9292
- uses: actions/upload-artifact@v4
9393
with:
9494
name: launcher-linux-mostly-static
@@ -97,7 +97,7 @@ jobs:
9797
retention-days: 1
9898
- name: Test
9999
run: ./mill -i java-class-name-tests.mostly-static.test
100-
- run: ./mill -i ci.upload artifacts/
100+
- run: ./mill -i ci.upload --directory artifacts/
101101
if: github.event_name == 'push'
102102
env:
103103
UPLOAD_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.mill-version

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.11.13
1+
0.12.10

build.sc

+59-35
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import $ivy.`de.tototec::de.tobiasroeser.mill.vcs.version::0.4.1`
22
import $ivy.`io.github.alexarchambault.mill::mill-native-image::0.1.31-1`
33
import $ivy.`io.github.alexarchambault.mill::mill-native-image-upload:0.1.31-1`
4-
54
import de.tobiasroeser.mill.vcs.version._
65
import io.github.alexarchambault.millnativeimage.NativeImage
76
import io.github.alexarchambault.millnativeimage.upload.Upload
87
import mill._
98
import mill.scalalib._
10-
import coursier.core.Version
11-
import scala.concurrent.duration.DurationInt
9+
import coursier.core.{Dependency, DependencyManagement}
10+
import coursier.version.VersionConstraint
1211

12+
import scala.concurrent.duration.DurationInt
1313
import java.io.File
1414

1515
object Versions {
@@ -23,8 +23,7 @@ object Versions {
2323
}
2424

2525
trait JavaMainClassNativeImage extends NativeImage {
26-
27-
def nativeImageOptions = T{
26+
def nativeImageOptions = T {
2827
super.nativeImageOptions() ++ Seq(
2928
"--no-fallback"
3029
)
@@ -33,37 +32,45 @@ trait JavaMainClassNativeImage extends NativeImage {
3332
def nativeImageGraalVmJvmId = s"graalvm-java17:${Versions.graalVmVersion}"
3433
def nativeImageName = "java-class-name"
3534
def nativeImageMainClass = "scala.cli.javaclassname.JavaClassName"
36-
3735
def nameSuffix = ""
36+
3837
def copyToArtifacts(directory: String = "artifacts/") = T.command {
39-
val _ = Upload.copyLauncher(
40-
nativeImage().path,
41-
directory,
42-
"java-class-name",
38+
val _ = Upload.copyLauncher0(
39+
nativeLauncher = nativeImage().path,
40+
directory = directory,
41+
name = "java-class-name",
4342
compress = true,
43+
workspace = T.workspace,
4444
suffix = nameSuffix
4545
)
4646
}
4747
}
4848

4949
trait JavaClassNameModule extends ScalaModule {
5050
override def scalaVersion = Versions.scala
51-
override def transitiveIvyDeps = T {
52-
super.transitiveIvyDeps()
53-
.map(_.exclude("org.jline" -> "jline-reader"))
54-
.map(_.exclude("org.jline" -> "jline-terminal"))
55-
.map(_.exclude("org.jline" -> "jline-terminal-jna"))
56-
.map(_.exclude("org.jline" -> "jline-terminal-jni"))
57-
.map(_.exclude("org.jline" -> "jline-native"))
58-
}
51+
52+
private def jlineOrg = "org.jline"
5953
def jlineDeps = Agg(
60-
ivy"org.jline:jline-reader:${Versions.jline}",
61-
ivy"org.jline:jline-terminal:${Versions.jline}",
62-
ivy"org.jline:jline-terminal-jna:${Versions.jline}",
63-
ivy"org.jline:jline-terminal-jni:${Versions.jline}",
64-
ivy"org.jline:jline-native:${Versions.jline}"
54+
ivy"$jlineOrg:jline-reader:${Versions.jline}",
55+
ivy"$jlineOrg:jline-terminal:${Versions.jline}",
56+
ivy"$jlineOrg:jline-terminal-jna:${Versions.jline}",
57+
ivy"$jlineOrg:jline-terminal-jni:${Versions.jline}",
58+
ivy"$jlineOrg:jline-native:${Versions.jline}"
6559
)
66-
override def ivyDeps = super.ivyDeps() ++ jlineDeps
60+
61+
override def coursierDependency: Dependency =
62+
super.coursierDependency
63+
.addOverrides(
64+
jlineDeps.toSeq.map(jd => DependencyManagement.Key.from(jd.toDependency(jd.version, jd.version, "")) ->
65+
DependencyManagement.Values.empty.withVersionConstraint(VersionConstraint.Lazy(Versions.jline)))
66+
)
67+
68+
override def allIvyDeps = T {
69+
super.allIvyDeps()
70+
.map(_.exclude(jlineOrg -> "jline-*")) ++ jlineDeps
71+
}
72+
73+
override def ivyDeps = super.ivyDeps().map(_.exclude("org.jline" -> "jline-*")) ++ jlineDeps
6774
}
6875

6976
object `scala3-graal-processor` extends JavaClassNameModule {
@@ -78,41 +85,47 @@ object `java-class-name` extends JavaClassNameModule with JavaMainClassNativeIma
7885
// adapted from https://github.com/VirtusLab/scala-cli/blob/b19086697401827a6f8185040ceb248d8865bf21/build.sc#L732-L744
7986

8087
val classpath = runClasspath().map(_.path).mkString(File.pathSeparator)
81-
val cache = T.dest / "native-cp"
88+
val cache = T.dest / "native-cp"
8289
// `scala3-graal-processor`.run() do not give me output and I cannot pass dynamically computed values like classpath
8390
System.err.println("Calling scala3 graal processor on")
8491
for (f <- classpath.split(File.pathSeparator))
8592
System.err.println(s" $f")
86-
val res = mill.modules.Jvm.callSubprocess(
93+
val res = mill.util.Jvm.callProcess(
8794
mainClass = `scala3-graal-processor`.finalMainClass(),
8895
classPath = `scala3-graal-processor`.runClasspath().map(_.path),
89-
mainArgs = Seq(cache.toNIO.toString, classpath),
90-
workingDir = os.pwd
96+
mainArgs = Seq(cache.toNIO.toString, classpath)
9197
)
9298
val cp = res.out.text.trim
99+
if (cp.isBlank) System.err.println("class path can't be empty!")
100+
assert(cp.nonEmpty)
93101
System.err.println("Processed class path:")
94102
for (f <- cp.split(File.pathSeparator))
95103
System.err.println(s" $f")
96104
cp.split(File.pathSeparator).toSeq.map(p => mill.PathRef(os.Path(p)))
97105
}
106+
98107
override def ivyDeps = super.ivyDeps() ++ jlineDeps ++ Agg(
99108
ivy"org.scala-lang::scala3-compiler:${Versions.scala}"
100109
)
110+
101111
override def compileIvyDeps = super.compileIvyDeps() ++ Agg(
102112
ivy"org.graalvm.nativeimage:svm:${Versions.graalVmVersion}"
103113
)
104114

105115
object static extends JavaMainClassNativeImage {
106116
def nameSuffix = "-static"
107-
def nativeImageClassPath = T{
117+
118+
def nativeImageClassPath = T {
108119
`java-class-name`.nativeImageClassPath()
109120
}
121+
110122
def buildHelperImage = T {
111123
os.proc("docker", "build", "-t", "scala-cli-base-musl:latest", ".")
112-
.call(cwd = os.pwd / "musl-image", stdout = os.Inherit)
124+
.call(cwd = T.workspace / "musl-image", stdout = os.Inherit)
113125
()
114126
}
115-
def nativeImageDockerParams = T{
127+
128+
def nativeImageDockerParams = T {
116129
buildHelperImage()
117130
Some(
118131
NativeImage.linuxStaticParams(
@@ -121,6 +134,7 @@ object `java-class-name` extends JavaClassNameModule with JavaMainClassNativeIma
121134
)
122135
)
123136
}
137+
124138
def writeNativeImageScript(scriptDest: String, imageDest: String = "") = T.command {
125139
buildHelperImage()
126140
super.writeNativeImageScript(scriptDest, imageDest)()
@@ -129,9 +143,10 @@ object `java-class-name` extends JavaClassNameModule with JavaMainClassNativeIma
129143

130144
object `mostly-static` extends JavaMainClassNativeImage {
131145
def nameSuffix = "-mostly-static"
132-
def nativeImageClassPath = T{
146+
def nativeImageClassPath = T {
133147
`java-class-name`.nativeImageClassPath()
134148
}
149+
135150
def nativeImageDockerParams = Some(
136151
NativeImage.linuxMostlyStaticParams(
137152
"ubuntu:18.04", // TODO Pin that?
@@ -148,18 +163,23 @@ object `java-class-name-tests` extends JavaClassNameModule with SbtModule {
148163
ivy"com.lihaoyi::os-lib:${Versions.osLib}",
149164
ivy"com.lihaoyi::utest:${Versions.uTest}"
150165
)
166+
151167
def testFramework = "utest.runner.Framework"
168+
152169
def forkEnv = super.forkEnv() ++ Seq(
153170
"JAVA_CLASS_NAME_CLI" -> launcher().path.toString
154171
)
155172
}
173+
156174
object test extends Tests {
157175
def launcher = `java-class-name`.nativeImage()
158176
}
177+
159178
object static extends Tests {
160179
def sources = T.sources(`java-class-name-tests`.test.sources())
161180
def launcher = `java-class-name`.static.nativeImage()
162181
}
182+
163183
object `mostly-static` extends Tests {
164184
def sources = T.sources(`java-class-name-tests`.test.sources())
165185
def launcher = `java-class-name`.`mostly-static`.nativeImage()
@@ -190,8 +210,11 @@ def publishVersion0 = T {
190210

191211
def ghOrg = "VirtusLab"
192212
def ghName = "java-class-name"
213+
193214
trait JavaClassNamePublishModule extends PublishModule {
215+
194216
import mill.scalalib.publish._
217+
195218
def pomSettings = PomSettings(
196219
description = artifactName(),
197220
organization = "org.virtuslab.scala-cli.java-class-name",
@@ -213,6 +236,7 @@ trait JavaClassNamePublishModule extends PublishModule {
213236
)
214237
)
215238
)
239+
216240
def publishVersion =
217241
publishVersion0()
218242
}
@@ -226,9 +250,9 @@ object ci extends Module {
226250
}
227251

228252
private def publishSonatype0(
229-
data: Seq[PublishModule.PublishData],
230-
log: mill.api.Logger
231-
): Unit = {
253+
data: Seq[PublishModule.PublishData],
254+
log: mill.api.Logger
255+
): Unit = {
232256

233257
val credentials = sys.env("SONATYPE_USERNAME") + ":" + sys.env("SONATYPE_PASSWORD")
234258
val pgpPassword = sys.env("PGP_PASSWORD")

0 commit comments

Comments
 (0)