You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
161 lines
3.5 KiB
161 lines
3.5 KiB
# 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"
|
|
|
|
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/*
|
|
}
|