mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-08-05 12:38:09 -07:00
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
This commit is contained in:
151
dev-java/sbt/sbt-0.13.8-r1.ebuild
Normal file
151
dev-java/sbt/sbt-0.13.8-r1.ebuild
Normal file
@@ -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 <list of files as described above>
|
||||
# 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"
|
||||
}
|
||||
Reference in New Issue
Block a user