Beginning of the end

Work done

Hey all, since the last page of this post we have come so far into packaging Kotlin 1.3.30. I am glad to announce that Kotlin 1.3.30's dependencies are completely packaged and only refining work on intellij-community-java (which is the source package of the IntelliJ related JARs that Kotlin depended on) and Kotlin remain.

I have roughly packaged Kotlin, the debian folder is pretty much done, and have pushed it here. Also the bootstrap package can be found here.

The links to all the dependencies of Kotlin 1.3.30 can be found in my previous blog pages, but I’ll list them here for convinience of the reader.

  1. → java-compatibility-1.0.1 → https://github.com/JetBrains/intellij-deps-java-compatibility (DONE: here)
  2. → jps-model → https://github.com/JetBrains/intellij-community/tree/master/jps (DONE: here)
  3. → intellij-core → https://github.com/JetBrains/intellij-community/tree/183.5153 (DONE: here)
  4. → streamex-0.6.7 → https://github.com/amaembo/streamex/tree/streamex-0.6.7 (DONE: here)
  5. → guava-25.1 → https://github.com/google/guava/tree/v25.1 (DONE: Used guava-19 from libguava-java)
  6. → lz4-java → https://github.com/lz4/lz4-java/blob/1.3.0/build.xml (DONE: here)
  7. → libjna-java & libjna-platform-java recompiled in jdk 8. → https://salsa.debian.org/java-team/libjna-java (DONE: commit)
  8. → liboro-java recompiled in jdk8 → https://salsa.debian.org/java-team/liboro-java (DONE: commit)
  9. → picocontainer-1.3 refining → https://salsa.debian.org/java-team/libpicocontainer-1-java (DONE: here)
  10. → platform-api → https://github.com/JetBrains/intellij-community/tree/183.5153/platform (DONE: here)
  11. → util → https://github.com/JetBrains/intellij-community/tree/183.5153/platform (DONE: here)
  12. → platform-impl → https://github.com/JetBrains/intellij-community/tree/183.5153/platform (DONE: here)
  13. → extensions → https://github.com/JetBrains/intellij-community/tree/183.5153/platform (DONE: here)
  14. → jengeleman:shadow:4.0.3 -→ https://github.com/johnrengelman/shadow (DONE)
  15. → trove4j 1.x → https://github.com/JetBrains/intellij-deps-trove4j (DONE)
  16. → proguard:6.0.3 in jdk8 (DONE: released as libproguard-java 6.0.3-2)
  17. → io.javaslang:2.0.6 → https://github.com/vavr-io/vavr/tree/javaslang-v2.0.6 (DONE)
  18. → jline 3.0.3 → https://github.com/jline/jline3/tree/jline-3.3.1 (DONE)
  19. → protobuf-2.6.1 in jdk8 (DONE)
  20. → com.jcabi:jcabi-aether:1.0 → the file that requires this is commented out; can be seen here and here
  21. → org.sonatype.aether:aether-api:1.13.1 → the file that requires this is commented out; can be seen here and here

Important Notes

It should be noted that at this point in time, 8th September 2019, the kotlin package only aims to package the jars generated by the ":dist" task of the kotlin build scripts. This task builds the kotlin home. So thats all we have, we don't have the kotlin-gradle-plugins or kotlinx or anything that isn't part of the kotlin home.

It can be noted that the kotlin boostrap package has kotlin-gradle-plugin, kotlinx and kotlin-dsl jars. The eventual plan is to build kotlin-gradle-plugins and kotlinx from kotlin source itself and to build kotlindsl from gradle source using kotlin as a dependency for gradle. After we do that we can get rid of the kotlin bootstrap package.

It should also be noted that this kotlin package as of 8th September 2019 may not be perfect and might contain a ton of bugs, this is because of 2 reasons; partly because I have ignored some code that depended on jcabi-aether(mentioned above with link to commit) and mostly because the platform-api.jar and patform-impl.jar from intellij-community-idea are not the same as their upstream counterpart but minimum files that are required to make kotlin compile without errors; I did this because they needed packaging new dependencies and at this time it didn't look like it was worth it.

Work left to be done

Now I believe most of the building blocks of packaging kotlin are done and whats left is to remove this pesky bootstrap. I believe this can be counted as the completion of my GSoC (officially ended in August 26). The tasks left are as follows:

Major Tasks

  1. Make kotlin build just using openjdk-11-jdk; now it builds iwth openjdk-8-jdk and openjdk-11-jdk.
  2. Build kotlin-gradle-plugins.
  3. Build kotlinx.
  4. Build kotlindsl from gradle.
  5. Do 2, 3 and 4 and make Kotlin build without bootstrap.

Things that will help the kotlin effort

  1. refine intellij-community-idea and do its copyrights file proper.
  2. import kotlin 1.3.30 into a new debian-java-maintainers repository.
  3. move kotlin changes(now maintained as git commits) to quilt patches. link to kotlin → here.
  4. do kotlin's copyrights file.
  5. refine kotlin.

Authors Notes.

Hey guys its been a wonderful ride so far. I hope to keep doing this and maintain kotlin in debian. I am only a final year student and my career fare starts this october 17nth 2019 so I have to prepare for coding interviews and start searching jobs. So until late November 2019 I'll only be taking on the smaller tasks and be doing them. Please note that I won't be doing it as fast as I used to up until now since I am going to be a little busy during this period. I hope I can land a job that lets me keep doing this :)

I would love to take this section to thank _hc, ebourg, andrewsh and seamlik for helping and mentoring me trough all this.

So if any of you want to help please kindly take on any of these tasks.

NOTE — ping me if you want to build kotlin in your system and are stuck!

You can find me as m36 or m36[m] on #debian-mobile and #debian-java on OFTC.

I’ll try to maintain this blog and post the major updates.

Tweet Share