The kotlin source package builds a single binary package of 282 MB which
mixes the runtime libraries, the command line compiler, the embeddable
compiler and the build tool plugins. Every package depending on kotlin
pulls all of them, although only a small part is actually used: gradle
needs 13 of the 87 libraries (112 MB) and never runs the command line
compiler; Kotlin-based applications only need 23 MB of runtime libraries.
I suggest splitting the package along these lines:
libkotlin-runtime-java (16 JARs, 22.74 MB)
The libraries needed at runtime by a program compiled with Kotlin.
kotlin-android-extensions-runtime 0.00 MB
kotlin-annotations-android 0.00 MB
kotlin-annotations-jvm 0.00 MB
kotlin-daemon-client 0.67 MB
kotlin-mutability-annotations-compat 0.00 MB
kotlin-native-utils 0.12 MB
kotlin-osgi-bundle 4.73 MB
kotlin-reflect 9.16 MB
kotlin-reflect-api 0.85 MB
kotlin-stdlib 3.02 MB
kotlin-stdlib-common 0.27 MB
kotlin-stdlib-jdk7 0.00 MB
kotlin-stdlib-jdk8 0.02 MB
kotlin-test 0.06 MB
kotlinx-metadata 0.41 MB
kotlinx-metadata-jvm 3.40 MB
Depends: libjetbrains-annotations-java
libkotlin-scripting-java (5 JARs, 0.93 MB)
The Kotlin scripting API (script runtime JSR-223 engine)
kotlin-script-runtime 0.08 MB
kotlin-script-util 0.14 MB
kotlin-scripting-common 0.26 MB
kotlin-scripting-impl 0.29 MB
kotlin-scripting-jvm 0.16 MB
Depends: libkotlin-runtime-java,
libkotlinx-coroutines-java,
libtrove-intellij-java
libkotlin-compiler-java (14 JARs, 96.37 MB)
The compiler as a library: kotlin-compiler
and the compiler plugins.
kotlin-allopen-compiler-plugin 0.03 MB
kotlin-android-extensions-compiler 0.01 MB
kotlin-annotation-processing 0.95 MB
kotlin-annotation-processing-base 0.42 MB
kotlin-annotation-processing-cli 0.06 MB
kotlin-annotation-processing-runtime 0.00 MB
kotlin-compiler 93.30 MB
kotlin-descriptors.runtime 0.23 MB
kotlin-jvm-abi-gen 0.07 MB
kotlin-noarg-compiler-plugin 0.05 MB
kotlin-sam-with-receiver-compiler-plugin 0.02 MB
kotlin-scripting-compiler 0.07 MB
kotlin-source-sections-compiler-plugin 0.04 MB
kotlinx-serialization-compiler-plugin 1.13 MB
Depends: libkotlin-runtime-java,
libkotlin-scripting-java,
libjline3-java,
libjansi-java,
libvavr0-java,
libatinject-jsr330-api-java,
libgeronimo-annotation-1.3-spec-java
libkotlin-compiler-modules-java (35 JARs, 53.80 MB)
The modules embedded in kotlin-compiler.jar.
kotlin-backend 5.81 MB
kotlin-backend-common 0.11 MB
kotlin-backend.js 4.23 MB
kotlin-backend.jvm 1.80 MB
kotlin-build-common 0.73 MB
kotlin-cli 1.33 MB
kotlin-cli-common 0.63 MB
kotlin-container 0.14 MB
kotlin-daemon-common 0.36 MB
kotlin-descriptors 2.68 MB
kotlin-descriptors.jvm 1.70 MB
kotlin-deserialization 0.63 MB
kotlin-frontend 10.29 MB
kotlin-frontend.common 0.03 MB
kotlin-frontend.java 1.52 MB
kotlin-frontend.script 0.23 MB
kotlin-incremental-compilation-impl 0.34 MB
kotlin-ir.backend.common 2.51 MB
kotlin-ir.psi2ir 1.08 MB
kotlin-ir.tree 2.72 MB
kotlin-js.ast 0.41 MB
kotlin-js.dce 0.18 MB
kotlin-js.frontend 0.51 MB
kotlin-js.parser 0.26 MB
kotlin-js.serializer 2.21 MB
kotlin-js.translator 3.54 MB
kotlin-light-classes 1.28 MB
kotlin-metadata 0.99 MB
kotlin-metadata.jvm 0.35 MB
kotlin-plugin-api 0.03 MB
kotlin-psi 2.12 MB
kotlin-resolution 2.35 MB
kotlin-serialization 0.19 MB
kotlin-util 0.27 MB
kotlin-util.runtime 0.22 MB
Depends: libkotlin-runtime-java,
libkotlin-scripting-java,
libjline3-java,
libjansi-java,
libvavr0-java,
libatinject-jsr330-api-java,
libgeronimo-annotation-1.3-spec-java
The JARs of this package are entirely contained in
kotlin-compiler.jar. Nothing in Debian uses them separately (yet),
so moving them to a separate package saves 54 MB on every
installation that only needs the compiler, while leaving the Maven
artifacts complete for a project depending on a single module.
Dropping them is another option.
libkotlin-compiler-embeddable-java (3 JARs, 94.81 MB)
The compiler with the embedded (and relocated) dependencies.
This is what Gradle uses.
kotlin-android-extensions 0.01 MB
kotlin-compiler-embeddable 94.03 MB
kotlin-scripting-compiler-embeddable 0.77 MB
Depends: libkotlin-runtime-java,
libkotlin-scripting-java,
libtrove-intellij-java
kotlin-android-extensions and kotlin-scripting-compiler-embeddable
mirror kotlin-android-extensions-compiler and
kotlin-scripting-compiler in the libkotlin-compiler-java package.
They reference the relocated IntelliJ classes found in
kotlin-compiler-embeddable and are therefore packaged with it.
libkotlin-gradle-plugin-java (6 JARs, 4.57 MB)
The Gradle plugins and the related components.
kotlin-annotation-processing-gradle 0.96 MB
kotlin-compiler-runner 0.05 MB
kotlin-gradle-plugin 3.37 MB
kotlin-gradle-plugin-api 0.13 MB
kotlin-gradle-plugin-model 0.02 MB
kotlin-sam-with-receiver 0.05 MB
Depends: libkotlin-compiler-embeddable-java
kotlin-compiler-runner (used by the plugin to start the compiler)
declares a dependency on kotlin-build-common in its POM, but
kotlin-build-common is already embedded in
kotlin-compiler-embeddable. To avoid a dependency on
libkotlin-compiler-modules-java the POM will be patched to mark
the dependency on kotlin-build-common as 'provided'.
libkotlin-maven-plugin-java (1 JAR, 0.08 MB)
The Maven plugin.
kotlin-maven-plugin 0.08 MB
Depends: libkotlin-compiler-java,
libmaven3-core-java,
libmaven-plugin-tools-java,
libmaven-compiler-plugin-java
The package is fairly small but it pulls many dependencies
from the Maven ecosystem.
kotlin (5 JARs, 7.13 MB)
The command line tools (kotlin, kotlinc, kotlinc-js, kapt...),
the compile daemon and the Ant task.
kotlin-ant 0.05 MB
kotlin-daemon 0.48 MB
kotlin-main-kts 6.47 MB
kotlin-preloader 0.10 MB
kotlin-runner 0.03 MB
Depends: libkotlin-compiler-java
The Ant task launches the compiler through kotlin-preloader, so it
is packaged with the command line tools.