From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id CE3DD1382C5 for ; Mon, 21 Jun 2021 06:15:10 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 26B82E07DB; Mon, 21 Jun 2021 06:15:10 +0000 (UTC) Received: from mail-vs1-xe33.google.com (mail-vs1-xe33.google.com [IPv6:2607:f8b0:4864:20::e33]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id BECA4E07DB for ; Mon, 21 Jun 2021 06:15:09 +0000 (UTC) Received: by mail-vs1-xe33.google.com with SMTP id l26so442812vsm.9 for ; Sun, 20 Jun 2021 23:15:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=9Wcpa6jDSQO5u3QjhLa3GSYihGT5A6MGTa/nnoY7hzY=; b=A7xSJX+cMdr9ZUeEXt9kHziq7E1KadsVC9RxdMeX+oZguiQ0Ma1NvBAHoJXOd+KHUQ /Pm0uFdgC5AutXruHZ229r6p74J78MYC+WPOiQJODuXJELMzHhKFMEkn0lki3vh8pcut FCSBzFGtDZZ2euCHx4ZubfCLTeksUYgo29BnFUkGMMUU/IrOG69CddR+vEVb8dci/KMo /a3acriPgIK/2EXflslzR7N/Gab0DtfNIzp3TzRJbE8dlAZ1ws4jxaggqeO3/Vx0qehZ r+sHuUE++GFZt6A2pRP+i+X361F8JBEOsSQAxFh9siN5M6lwGAnKAaqYH8KSwIwFv5ag o7Aw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=9Wcpa6jDSQO5u3QjhLa3GSYihGT5A6MGTa/nnoY7hzY=; b=NNABqg0cW7ihcuCxsjbZ30yKgKgBjlscNhrXtiDyPgD5NEenj0DmNt78zsEeqmxHxo SKg+KeXeLeHYcxwMXCoNS75onNH41a64NDkNCWNjrRaqHH30XWoOfANu/QhTdKuWD8uo 1JAb0h3O16RXgnxAS7IFVA7T7phA5rvQrPzLbksvavcgRA2tpaJSZ7LRmx3UMjb+AfEt Nx/RpN/yo7TJ0ai6UcSLzBAT1BJZ+HANJPYOlyspQ+Eq7rjN5lVDOyyXX8I0cZxstYfE yIGUkHkybmvAVwd6EaqiZChwXsVnTBeAMMY00275oQb26g2xaUv4Fqkq/8gBD/d1XxX/ e4mQ== X-Gm-Message-State: AOAM531DX2erO6rILpKcLpqZCa7no/tnZaROKpOP87l16L1weORwiJGI DBlUY4o03YasXHKuR+Wt1D8QBhjOKx6VPeUswqHmYwsM6Lv35Q== X-Google-Smtp-Source: ABdhPJySbRuMaE7K+oBG440+/qyYK2nqTgrUTAbt2UO89YOAQ6LK6MnTaKg4Ox2N1AqPfnz8n1kCbkhUgXaCVvBJP5I= X-Received: by 2002:a67:2f83:: with SMTP id v125mr15751633vsv.8.1624256108608; Sun, 20 Jun 2021 23:15:08 -0700 (PDT) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-soc@lists.gentoo.org Reply-to: gentoo-soc@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply MIME-Version: 1.0 From: "Yuan Liao (Leo)" Date: Sun, 20 Jun 2021 23:14:32 -0700 Message-ID: Subject: [gentoo-soc] Week 2 Report for Big Data Infrastructure and H2O ebuilds Project To: gentoo-soc@lists.gentoo.org Content-Type: text/plain; charset="UTF-8" X-Archives-Salt: 623a3339-1d63-4263-b647-e3a9fe6f7d87 X-Archives-Hash: f0264bb42ede94f66a080399c7701162 Hi folks, The second week of my project has come to an end. This week started with a wrap-up of my last week's work on java-ebuilder. Since Tuesday, I have been working on the Kotlin ebuilds in the Spark overlay created by Zongyu Zhang last year to improve their quality, and bumped the ebuilds to Kotlin 1.4 and 1.5. Meanwhile, I added another new feature for java-ebuilder that was deemed helpful in maintenance of those Kotlin ebuilds: support for ebuild variable expansions in MAVEN_PROVIDES and SLOT. The first thing I did for my project this week was to submit a pull request that fixed a bug in java-ebuilder. I mentioned it once before in my communication with fordfrog in this mailing list after the previous weekly report, and I would like to thank fordfrog again for contacting me and merging my pull request in time. I have also made a blog post [1] on my personal website which contains a description of how I investigated the issue's root cause, some alternative methods to fix the bug which I considered but did not use, and a low-level explanation of the issue. Make sure to check it out if you are interested! After that, I wrapped up all the work pertaining to multi-line MAVEN_PROVIDES support and merged related code into the master branch of my java-ebuilder fork. Next, I made a fork [2] of the Spark overlay to improve on the Kotlin ebuilds in it. The original Spark overlay provides two Kotlin ebuilds: dev-lang/kotlin-bin for the Kotlin compiler and runtime, and dev-java/kotlin-common-bin as a dummy package for the Kotlin core libraries. The latter ebuild contains a MAVEN_PROVIDES definition with Maven coordinates of some Kotlin artifacts, and I believe its main purpose is to be used by other ebuilds that require the Kotlin libraries as a dependency, especially when java-ebuilder is requested to generate ebuilds for a Maven artifact that depends on Kotlin. I really like the idea of separating the compiler plus runtime and the libraries into two packages. If someone wants to use the Kotlin libraries but does not need the Kotlin compiler, which is totally possible thanks to interoperability between Java and Kotlin, they can install dev-java/kotlin-common-bin only and use it as a normal Java library. Unfortunately, in the original Spark overlay, dev-java/kotlin-common-bin depended on dev-lang/kotlin-bin, so it had been impossible to install the libraries only and skip the Kotlin compiler. This week, I have successfully reversed the dependency relationship so users can install dev-java/kotlin-common-bin without pulling dev-lang/kotlin-bin. Then, I worked on removing bundled dependencies shipped within the Kotlin package provided by JetBrains. The upstream package contains a few JARs that are merely dependencies of the Kotlin compiler rather than components of the compiler itself, namely JetBrains' annotations library, JetBrains' fork of GNU Trove, and KotlinX Coroutines core library. For each of them, I created a separate ebuild and let dev-lang/kotlin-bin depend on it, so dev-lang/kotlin-bin would be a cohesive package whose files are all tightly coupled with the Kotlin compiler. In addition, I also updated the Kotlin ebuilds for Kotlin 1.4.x and 1.5.x series since the only version provided by the original Spark overlay is 1.3.72. During the version bump process for dev-java/kotlin-common-bin, I noticed that all Kotlin version numbers in the value of the ebuild's MAVEN_PROVIDES must be changed for the new Kotlin version. This would not be a hard thing to do, but any maintainers of this package would have to remember to do this manually for every version bump, and it would be quite easy for humans to forget such a small thing. However, if ${PV} could be used as a token for the version number in MAVEN_PROVIDES, then this would not be an issue at all, so I looked into any possibility of making java-ebuilder to support variables like ${PV} in MAVEN_PROVIDES. It turned out that this was very easy to implement. I also implemented similar support for the SLOT variable, because the slot of a package often depends on the version number too. In my opinion, support for ebuild variable expansions in MAVEN_PROVIDES and SLOT will make it easier to maintain complicated ebuilds that must be created by hand, and dev-java/kotlin-common-bin is a perfect example of such kind of ebuilds. The implementation of this feature has been pushed to the 'ebuild-var-expansions' branch in my java-ebuilder fork. Thanks for reading this report and my new blog post if you happened to read it. I am looking forward to coming back with more good news regarding the Kotlin ebuilds next week. Sincerely, Leo [1]: https://leo3418.github.io/2021/06/20/java-processbuilder-stdout.html [2]: https://github.com/Leo3418/spark-overlay