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.
- enabled proper use of jna:4 (by Chewi) - using multibuild.eclass to enable custom java install procedure - minor qa corrections - warn before installation with NQP and Rakudo present - drop system-libs use-flag (from ebuilds and metadata.xml)
- Loading branch information
Showing
3 changed files
with
161 additions
and
100 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
This file was deleted.
Oops, something went wrong.
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,161 @@ | ||
# Copyright 1999-2016 Gentoo Foundation | ||
# Distributed under the terms of the GNU General Public License v2 | ||
# $Id$ | ||
|
||
EAPI=5 | ||
|
||
inherit java-pkg-opt-2 multibuild | ||
|
||
if [[ ${PV} == "9999" ]]; then | ||
EGIT_REPO_URI="https://github.com/perl6/${PN}.git" | ||
inherit git-r3 | ||
KEYWORDS="" | ||
else | ||
SRC_URI="https://github.com/perl6/${PN}/tarball/${PV} -> ${P}.tar.gz" | ||
inherit vcs-snapshot | ||
KEYWORDS="~amd64 ~x86" | ||
fi | ||
|
||
DESCRIPTION="Not Quite Perl, a Perl 6 bootstrapping compiler" | ||
HOMEPAGE="http://rakudo.org/" | ||
|
||
LICENSE="Artistic-2" | ||
SLOT="0" | ||
IUSE="doc clang java +moar test" | ||
REQUIRED_USE="|| ( java moar )" | ||
|
||
CDEPEND="java? ( | ||
dev-java/asm:4 | ||
dev-java/jline:0 | ||
dev-java/jna:4 | ||
) | ||
moar? ( ~dev-lang/moarvm-${PV}[clang=] )" | ||
RDEPEND="${CDEPEND} | ||
java? ( >=virtual/jre-1.7 )" | ||
DEPEND="${CDEPEND} | ||
clang? ( sys-devel/clang ) | ||
java? ( >=virtual/jdk-1.7 ) | ||
dev-lang/perl" | ||
PATCHES=( "${FILESDIR}/enable-external-jars.patch" ) | ||
|
||
pkg_pretend() { | ||
if has_version dev-lang/rakudo || has_version dev-lang/nqp; then | ||
ewarn "NQP is known to fail compilation/installation with Rakudo and/or NQP" | ||
ewarn "already being installed. So if it fails, try uninstalling both" | ||
ewarn "dev-lang/nqp and dev-lang/rakudo, then do a new installation." | ||
ewarn "(see Bug #584394)" | ||
fi | ||
} | ||
|
||
java_prepare() { | ||
# Don't clean stage0 jars. | ||
einfo "Cleaning upstream jars" | ||
java-pkg_clean 3rdparty/ | ||
|
||
# Don't use jars we just deleted. | ||
sed -i -r 's/(:3rdparty[^:]*)+/:${THIRDPARTY_JARS}/g' \ | ||
src/vm/jvm/runners/nqp-j || die | ||
} | ||
|
||
src_prepare() { | ||
MULTIBUILD_VARIANTS=() | ||
use moar && MULTIBUILD_VARIANTS+=( moar ) | ||
use java && MULTIBUILD_VARIANTS+=( jvm ) | ||
|
||
multibuild_copy_sources | ||
|
||
# This will pull in conditional java_prepare | ||
default | ||
} | ||
|
||
nqp_configure() { | ||
pushd "${BUILD_DIR}" > /dev/null || die | ||
local myconfargs=( | ||
"--backend=${MULTIBUILD_VARIANT}" | ||
"--prefix=/usr" ) | ||
|
||
perl Configure.pl "${myconfargs[@]}" || die | ||
popd || die | ||
} | ||
|
||
nqp_compile() { | ||
if [[ "${MULTIBUILD_VARIANT}" = jvm ]]; then | ||
emake -j1 \ | ||
-C "${BUILD_DIR}" \ | ||
THIRDPARTY_JARS=$(java-pkg_getjars --with-dependencies asm-4,jline,jna-4) \ | ||
JAVAC="$(java-pkg_get-javac) $(java-pkg_javac-args)" | ||
elif [[ "${MULTIBUILD_VARIANT}" = moar ]]; then | ||
emake -j1 \ | ||
-C "${BUILD_DIR}" | ||
fi | ||
} | ||
|
||
nqp_test() { | ||
emake -j1 \ | ||
-C "${BUILD_DIR}" \ | ||
test | ||
} | ||
|
||
nqp_install() { | ||
# This is the actual reason we need multibuild.eclass. | ||
# We need to distinguish the install procedure for MoarVM and JVM backends. | ||
case "${MULTIBUILD_VARIANT}" in | ||
moar) | ||
emake \ | ||
DESTDIR="${ED}" \ | ||
-C "${BUILD_DIR}" \ | ||
install | ||
;; | ||
jvm) | ||
pushd "${BUILD_DIR}" > /dev/null || die | ||
# Set JAVA_PKG_JARDEST early. | ||
java-pkg_init_paths_ | ||
|
||
# Upstream sets the classpath to this location. Perhaps it's | ||
# used to locate the additional libraries? | ||
java-pkg_addcp "${JAVA_PKG_JARDEST}" | ||
|
||
insinto "${JAVA_PKG_JARDEST}" | ||
local jar | ||
|
||
for jar in *.jar; do | ||
if has ${jar} ${PN}.jar ${PN}-runtime.jar; then | ||
# jars for NQP itself. | ||
java-pkg_dojar ${jar} | ||
else | ||
# jars used by NQP. | ||
doins ${jar} | ||
fi | ||
done | ||
|
||
# Upstream uses -Xbootclasspath/a, which is faster due to lack | ||
# of verification, but gjl isn't flexible enough yet. :( | ||
java-pkg_dolauncher ${PN}-j --main ${PN} | ||
dosym ${PN}-j /usr/bin/${PN} | ||
dobin tools/jvm/eval-client.pl | ||
popd > /dev/null || die | ||
;; | ||
*) | ||
die "Unknown MULTIBUILD_VARIANT ${MULTIBUILD_VARIANT}." | ||
;; | ||
esac | ||
} | ||
|
||
src_configure() { | ||
multibuild_foreach_variant nqp_configure | ||
} | ||
|
||
src_compile() { | ||
multibuild_foreach_variant nqp_compile | ||
} | ||
|
||
src_test() { | ||
multibuild_foreach_variant nqp_test | ||
} | ||
|
||
src_install() { | ||
multibuild_foreach_variant nqp_install | ||
|
||
dodoc CREDITS README.pod | ||
use doc && dodoc -r docs/* | ||
} |