forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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
- Loading branch information
1 parent
c3b686c
commit 59a0d07
Showing
1 changed file
with
151 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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" | ||
} |