Proguard `rt` jar not found in CI
Unfortunately cannot provide a reproducer as this happens on CI at $work.
Here's the stack trace :
java.io.IOException: Can't read [/root/.mill/ammonite/rt-17.0.14.jar] (No such file or directory: /root/.mill/ammonite/rt-17.0.14.jar)
at proguard.InputReader.readInput(InputReader.java:282) ~[proguard-base-7.3.2.jar:7.3.2]
at proguard.InputReader.readInput(InputReader.java:229) ~[proguard-base-7.3.2.jar:7.3.2]
at proguard.InputReader.readInput(InputReader.java:206) ~[proguard-base-7.3.2.jar:7.3.2]
at proguard.InputReader.execute(InputReader.java:157) ~[proguard-base-7.3.2.jar:7.3.2]
at proguard.pass.PassRunner.run(PassRunner.java:24) ~[proguard-base-7.3.2.jar:7.3.2]
at proguard.ProGuard.readInput(ProGuard.java:333) ~[proguard-base-7.3.2.jar:7.3.2]
at proguard.ProGuard.execute(ProGuard.java:124) ~[proguard-base-7.3.2.jar:7.3.2]
at proguard.ProGuard.main(ProGuard.java:651) ~[proguard-base-7.3.2.jar:7.3.2]
Caused by: java.io.IOException: No such file or directory: /root/.mill/ammonite/rt-17.0.14.jar
at proguard.io.DirectorySource.pumpDataEntries(DirectorySource.java:51) ~[proguard-core-9.0.8.jar:7.3.2]
at proguard.InputReader.readInput(InputReader.java:278) ~[proguard-base-7.3.2.jar:7.3.2]
... 7 more
Here's a potentially related change that could explain the regression : https://github.com/com-lihaoyi/mill/pull/3713/
@Baccata what Mill version are you on?
0.12.10
@Baccata do you have a longer error message? Does Mill say what task failed to produce that stack trace?
Hi @lihaoyi , The failure is reported while running the proguard task on a proguard mill object e.g. mill myproguardmodule.proguard
We don't get any more stack trace than reported:
[462] ProGuard, version 7.3.2
[462] Unexpected error
[462] java.io.IOException: Can't read [/root/.mill/ammonite/rt-17.0.14.jar] (No such file or directory: /root/.mill/ammonite/rt-17.0.14.jar)
[462] at proguard.InputReader.readInput(InputReader.java:282) ~[proguard-base-7.3.2.jar:7.3.2]
[462] at proguard.InputReader.readInput(InputReader.java:229) ~[proguard-base-7.3.2.jar:7.3.2]
[462] at proguard.InputReader.readInput(InputReader.java:206) ~[proguard-base-7.3.2.jar:7.3.2]
[462] at proguard.InputReader.execute(InputReader.java:157) ~[proguard-base-7.3.2.jar:7.3.2]
[462] at proguard.pass.PassRunner.run(PassRunner.java:24) ~[proguard-base-7.3.2.jar:7.3.2]
[462] at proguard.ProGuard.readInput(ProGuard.java:333) ~[proguard-base-7.3.2.jar:7.3.2]
[462] at proguard.ProGuard.execute(ProGuard.java:124) ~[proguard-base-7.3.2.jar:7.3.2]
[462] at proguard.ProGuard.main(ProGuard.java:651) ~[proguard-base-7.3.2.jar:7.3.2]
[462] Caused by: java.io.IOException: No such file or directory: /root/.mill/ammonite/rt-17.0.14.jar
[462] at proguard.io.DirectorySource.pumpDataEntries(DirectorySource.java:51) ~[proguard-core-9.0.8.jar:7.3.2]
[462] at proguard.InputReader.readInput(InputReader.java:278) ~[proguard-base-7.3.2.jar:7.3.2]
[462] ... 7 more
We're using Mill version 0.12.10, running inside a Docker container based on amazoncorretto:17 in our CI environment. It appears that ProGuard is trying to include the Ammonite runtime JAR, but it hasn't been downloaded or initialized, causing the failure.
We already run mill __.prepareOffline during image build, which preloads dependencies but does not seem to initialize or fetch the required Ammonite runtime JAR.
Is there a recommended way to ensure this runtime JAR (.mill/ammonite/rt-17.0.14.jar) is available ahead of time in headless/CI environments? Perhaps a specific command that triggers Ammonite setup?
@ali-at-github could you pass me a minimized repro? It's still not clear to me what code path is causing the problem, and I can't help much until I can figure out myself what's going on