From: Mark Wright Date: Sat, 5 Sep 2015 12:08:08 +0000 (+1000) Subject: dev-java/sbt: Add sbt-0.13.8-r1 that builds with jdk 1.7 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=59a0d07ac6423dc541e3e0e0b9275a96b368cbf7;p=gentoo.git dev-java/sbt: Add sbt-0.13.8-r1 that builds with jdk 1.7 Try to fix: Bug 558142 - =dev-java/sbt-0.13.8: fails to compile thanks to Patrice Clement (monsieurp) for reporting. Fix Bug 558848 - dev-java/sbt-0.13.8 : java.lang.NoClassDefFoundError: Could not initialize class scala.tools.nsc.Main$ Thanks to Toralf Forster for reporting. Package-Manager: portage-2.2.20.1 --- diff --git a/dev-java/sbt/sbt-0.13.8-r1.ebuild b/dev-java/sbt/sbt-0.13.8-r1.ebuild new file mode 100644 index 000000000000..3c3360f20210 --- /dev/null +++ b/dev-java/sbt/sbt-0.13.8-r1.ebuild @@ -0,0 +1,151 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI="5" + +# repoman gives LIVEVCS.unmasked even with EGIT_COMMIT, so create snapshot +inherit eutils java-pkg-2 # git-r3 + +L_PN="sbt-launch" +L_P="${L_PN}-${PV}" + +B_PV="0.13.7" +BL_P="${L_PN}-${B_PV}" +B_P="${PN}-${B_PV}" + +SV="2.10" + +# creating the sbt src snapshot: +# git clone https://github.com/sbt/sbt.git sbt-0.13.8 +# cd sbt-0.13.8 +# git checkout v0.13.8 +# cd .. +# tar --owner=portage --group=portage -cjf sbt-0.13.8-src.tar.bz2 sbt-0.13.8 + +# creating the binary: +# cd $WORDKIR +# tar -cjf sbt-0.13.8-gentoo-binary.tar.bz2 sbt-0.13.8/sbt-launch/target/sbt-launch.jar + +DESCRIPTION="sbt is a build tool for Scala and Java projects that aims to do the basics well" +HOMEPAGE="http://www.scala-sbt.org/" +EGIT_COMMIT="v${PV}" +EGIT_REPO_URI="https://github.com/sbt/sbt.git" +SRC_URI="!binary? +( + https://dev.gentoo.org/~gienah/snapshots/${P}-src.tar.bz2 + https://dev.gentoo.org/~gienah/snapshots/${P}-ivy2-deps.tar.bz2 + https://dev.gentoo.org/~gienah/snapshots/${P}-sbt-deps.tar.bz2 + https://dev.gentoo.org/~gienah/snapshots/${P}-test-deps.tar.bz2 + http://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/${L_PN}/${PV}/${L_PN}.jar -> ${BL_P}.jar +) +binary? ( https://dev.gentoo.org/~gienah/files/dist/${P}-gentoo-binary.tar.bz2 )" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="binary" + +DEPEND="=virtual/jdk-1.7* + >=dev-lang/scala-2.10.4-r1:${SV}" +RDEPEND=">=virtual/jre-1.7 + dev-lang/scala:*" + +# test hangs or fails +RESTRICT="test" + +src_unpack() { + # if ! use binary; then + # git-r3_src_unpack + # fi + # Unpack tar files only. + for f in ${A} ; do + [[ ${f} == *".tar."* ]] && unpack ${f} + done +} + +java_prepare() { + if ! use binary; then + # Note: to bump sbt, some things to try are: + # 1. remove the https://dev.gentoo.org/~gienah/snapshots/${P}-ivy2-deps.tar.bz2 + # https://dev.gentoo.org/~gienah/snapshots/${P}-sbt-deps.tar.bz2 and + # https://dev.gentoo.org/~gienah/snapshots/${P}-test-deps.tar.bz2 from SRC_URI + # 2. Comment the sbt publishLocal line in src_compile. + # 3. try: + # FEATURES='noclean -test' emerge -v 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 (with jdk 1.6): + # cd to ${S} + # export EROOT=/ + # export WORKDIR='/var/tmp/portage/dev-java/sbt-0.13.8/work' + # export SV="2.10" + # export B_P=sbt-0.13.7 + # export PATH="/usr/share/scala-${SV}/bin:${WORKDIR}/${B_P}:${PATH}" + # sbt compile + # cd ${WORKDIR} + # find .ivy2 .sbt -uid 0 -exec chown portage:portage {} \; + # 5. cd ${WORKDIR} + # tar -cjf sbt-0.13.8-ivy2-deps.tar.bz2 .ivy2 + # tar -cjf sbt-0.13.8-sbt-deps.tar.bz2 .sbt + # 6. It downloads 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. Note: src_test creates some files in ${WORKDIR}/.m2 which are can + # hopefully be ignored. As root: + # cd ${S} + # sbt test + # cd ${WORKDIR} + # find .ivy2 .sbt -uid 0 -print + # Then add those files to sbt-0.13.8-ivy2-test-deps.tar.bz2 except the files in the directories + # .ivy2/local + # .ivy2/cache/org.scala-sbt + # Something like: + # tar --owner=portage --group=portage -cjf sbt-0.13.8-test-deps.tar.bz2 + # 7. Undo the earlier temporary edits to the ebuild. + + mkdir "${WORKDIR}/${B_P}" || die + cp -p "${DISTDIR}/${BL_P}.jar" "${WORKDIR}/${B_P}/${L_PN}.jar" || die + cat <<- EOF > "${WORKDIR}/${B_P}/sbt" + #!/bin/sh + SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=512M" + java -Djavac.args="-encoding UTF-8" -Duser.home="${WORKDIR}" \${SBT_OPTS} -jar "${WORKDIR}/${B_P}/sbt-launch.jar" "\$@" + EOF + chmod u+x "${WORKDIR}/${B_P}/sbt" || die + local SCALA_PVR="$(java-config --query=PVR --package=scala-${SV})" + local SFV="${SCALA_PVR/-*}" + sed -e "s@scalaVersion := \"2.10.4\",@scalaVersion := \"${SFV}\",\n scalaHome := Some(file(\"/usr/share/scala-${SV}\")),@" \ + -i "${S}/build.sbt" || die + fi +} + +src_compile() { + if ! use binary; then + export PATH="${EROOT}usr/share/scala-${SV}/bin:${WORKDIR}/${B_P}:${PATH}" + einfo "=== sbt compile ..." + "${WORKDIR}/${B_P}/sbt" -Dsbt.log.noformat=true compile || die + einfo "=== sbt publishLocal ..." + cat <<- EOF | "${WORKDIR}/${B_P}/sbt" -Dsbt.log.noformat=true || die + set every javaVersionPrefix in javaVersionCheck := Some("1.7") + publishLocal + EOF + fi +} + +src_test() { + if ! use binary; then + export PATH="${EROOT}usr/share/scala-${SV}/bin:${WORKDIR}/${B_P}:${PATH}" + "${WORKDIR}/${B_P}/sbt" -Dsbt.log.noformat=true test || die + fi +} + +src_install() { + if ! use binary; then + pushd sbt-launch/target || die + mv ${L_P}.jar ${L_PN}.jar || die + popd + fi + java-pkg_dojar sbt-launch/target/${L_PN}.jar + java-pkg_dolauncher sbt --main xsbt.boot.Boot --java_args "-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=512M" +}