commit:     57b73b8034e374fe7b963ff34086c1b6d327008c
Author:     Volkmar W. Pogatzki <gentoo <AT> pogatzki <DOT> net>
AuthorDate: Wed Jun  8 05:10:50 2022 +0000
Commit:     Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Wed Jun  8 08:12:12 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=57b73b80

dev-java/sbt: EAPI 8, restrict to jdk:1.8

Closes: https://bugs.gentoo.org/831297
Signed-off-by: Volkmar W. Pogatzki <gentoo <AT> pogatzki.net>
Closes: https://github.com/gentoo/gentoo/pull/25802
Signed-off-by: Florian Schmaus <flow <AT> gentoo.org>

 dev-java/sbt/sbt-0.13.18-r1.ebuild | 147 +++++++++++++++++++++++++++++++++++++
 1 file changed, 147 insertions(+)

diff --git a/dev-java/sbt/sbt-0.13.18-r1.ebuild 
b/dev-java/sbt/sbt-0.13.18-r1.ebuild
new file mode 100644
index 000000000000..13fbc7b910f9
--- /dev/null
+++ b/dev-java/sbt/sbt-0.13.18-r1.ebuild
@@ -0,0 +1,147 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit java-pkg-2
+
+L_PN="sbt-launch"
+L_P="${L_PN}-${PV}"
+
+DESCRIPTION="sbt is a build tool for Scala and Java projects that aims to do 
the basics well"
+HOMEPAGE="https://www.scala-sbt.org/";
+EGIT_COMMIT="v${PV}"
+EGIT_REPO_URI="https://github.com/sbt/sbt.git";
+SRC_URI="
+       !binary? (
+               https://github.com/sbt/sbt/archive/v${PV}.tar.gz -> ${P}.tar.gz
+               https://dev.gentoo.org/~gienah/snapshots/${P}-ivy2-deps.tar.xz
+               https://dev.gentoo.org/~gienah/snapshots/${P}-sbt-deps.tar.xz
+               
https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/${L_PN}/${PV}/${L_PN}.jar
 -> ${L_P}.jar
+       )
+       binary? (
+               
https://dev.gentoo.org/~gienah/files/dist/${P}-gentoo-binary.tar.xz
+       )"
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="binary"
+
+# Restrict to jdk:1.8
+# Missing dependency 'object java.lang.Object in compiler mirror', bug #831297
+DEPEND="
+       virtual/jdk:1.8
+"
+
+RDEPEND="
+       >=virtual/jre-1.8:*
+"
+
+# test hangs or fails
+RESTRICT="test"
+
+# Note: to bump sbt, some things to try are:
+# 1. remove the https://dev.gentoo.org/~gienah/snapshots/${P}-ivy2-deps.tar.xz
+# https://dev.gentoo.org/~gienah/snapshots/${P}-sbt-deps.tar.xz and
+# binary? ( 
https://dev.gentoo.org/~gienah/files/dist/${P}-gentoo-binary.tar.xz )
+# from SRC_URI
+# 2. Comment the sbt publishLocal line in src_compile.
+# 3. try:
+# FEATURES='noclean -test' emerge -v -1 dev-java/sbt
+# It should fail in src_install since the sbt publishLocal is not done.
+# Check if it downloads more stuff in
+# src_compile to ${WORKDIR}/.ivy2 and ${WORKDIR}/.sbt.
+# 4. If some of the downloads fail, it might be necessary to run the sbt 
compile
+# again manually to obtain all the dependencies, if so:
+# cd to ${S}
+# export EROOT=/
+# export WORKDIR='/var/tmp/portage/dev-java/${P}/work'
+# export L_P=${P}
+# export PATH="${WORKDIR}/${L_P}:${PATH}"
+# sbt compile
+# cd ${WORKDIR}
+# find .ivy2 .sbt -uid 0 -exec chown portage:portage {} \;
+# 5. cd ${WORKDIR}
+# XZ_OPT=-9 tar --owner=portage --group=portage \
+# -cJf /usr/portage/distfiles/${P}-ivy2-deps.tar.xz .ivy2/cache
+# XZ_OPT=-9 tar --owner=portage --group=portage \
+# -cJf /usr/portage/distfiles/${P}-sbt-deps.tar.xz .sbt
+# Uncomment the sbt publishLocal line in src_compile.
+# 6. It *might* download more dependencies for src_test, however the presence
+# of some of these may cause the src_compile to fail.  So download them
+# seperately as root so we can identify the
+# additional files.  As root:
+# cd ${S}
+# ${S}/${P} test
+# cd ${WORKDIR}
+# XZ_OPT=-9 tar --owner=portage --group=portage \
+# -cJf /usr/portage/distfiles/${P}-test-deps.tar.xz \
+# $(find .ivy2/cache .sbt -uid 0 -type f -print)
+# Note: It might not download anything in src_test, in which case
+# ${P}-test-deps.tar.xz is not required.
+# 7. Create the binary
+# cd $WORDKIR
+# XZ_OPT=-9 tar --owner=portage --group=portage \
+# -cJf /usr/portage/distfiles/${P}-gentoo-binary.tar.xz ${P} .ivy2/local
+# 9. Undo the earlier temporary edits to the ebuild.
+
+src_unpack() {
+       # Unpack tar files only.
+       for f in ${A} ; do
+               [[ ${f} == *".tar."* ]] && unpack ${f}
+       done
+}
+
+src_prepare() {
+       default
+       if ! use binary; then
+               mkdir "${WORKDIR}/${L_P}" || die
+               cp -p "${DISTDIR}/${L_P}.jar" "${WORKDIR}/${L_P}/${L_PN}.jar" 
|| die
+               cat <<- EOF > "${WORKDIR}/${L_P}/sbt"
+                       #!/bin/sh
+                       SBT_OPTS="-Xms512M -Xmx3072M -Xss1M 
-XX:+CMSClassUnloadingEnabled"
+                       java -Djavac.args="-encoding UTF-8" 
-Duser.home="${WORKDIR}" \${SBT_OPTS} -jar "${WORKDIR}/${L_P}/sbt-launch.jar" 
"\$@"
+               EOF
+               cat <<- EOF > "${S}/${P}"
+                       #!/bin/sh
+                       SBT_OPTS="-Xms512M -Xmx3072M -Xss1M 
-XX:+CMSClassUnloadingEnabled"
+                       java -Djavac.args="-encoding UTF-8" 
-Duser.home="${WORKDIR}" \${SBT_OPTS} -jar "${S}/launch/target/sbt-launch.jar" 
"\$@"
+               EOF
+               chmod u+x "${WORKDIR}/${L_P}/sbt" "${S}/${P}" || die
+
+               # suppress this warning in build.log:
+               # [warn] Credentials file 
/var/tmp/portage/dev-java/${P}/work/.bintray/.credentials does not exist
+               mkdir -p "${WORKDIR}/.bintray" || die
+               cat <<- EOF > "${WORKDIR}/.bintray/.credentials"
+                       realm = Bintray API Realm
+                       host = api.bintray.com
+                       user =
+                       password =
+               EOF
+       fi
+}
+
+src_compile() {
+       if ! use binary; then
+               einfo "=== sbt compile ..."
+               local vm_version="$(java-config -g PROVIDES_VERSION)"
+               "${WORKDIR}/${L_P}/sbt" -Dsbt.log.noformat=true compile || die
+               einfo "=== sbt publishLocal with jdk ${vm_version} ..."
+               cat <<- EOF | "${WORKDIR}/${L_P}/sbt" -Dsbt.log.noformat=true 
|| die
+                       set every javaVersionPrefix in javaVersionCheck := 
Some("${vm_version}")
+                       publishLocal
+               EOF
+       fi
+}
+
+src_test() {
+       "${S}/${P}" -Dsbt.log.noformat=true test || die
+}
+
+src_install() {
+       # Place sbt-launch.jar at the end of the CLASSPATH
+       java-pkg_dojar $(find "${WORKDIR}"/.ivy2/local -name \*.jar -print | 
grep -v sbt-launch.jar) \
+               $(find "${WORKDIR}"/.ivy2/local -name sbt-launch.jar -print)
+       local ja="-Dsbt.version=${PV} -Xms512M -Xmx1536M -Xss1M 
-XX:+CMSClassUnloadingEnabled"
+       java-pkg_dolauncher sbt --jar sbt-launch.jar --java_args "${ja}"
+}

Reply via email to