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.
Package-Manager: Portage-2.3.83, Repoman-2.3.20 Signed-off-by: Patrick Lauer <[email protected]>
- Loading branch information
1 parent
cf06a65
commit ebd84f0
Showing
2 changed files
with
161 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
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,160 @@ | ||
# Copyright 1999-2019 Gentoo Authors | ||
# Distributed under the terms of the GNU General Public License v2 | ||
|
||
EAPI=7 | ||
|
||
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}/releases/download/${PV}/${P}.tar.gz" | ||
KEYWORDS="~amd64 ~x86" | ||
fi | ||
|
||
DESCRIPTION="Not Quite Perl, a Perl 6 bootstrapping compiler" | ||
HOMEPAGE="https://rakudo.org" | ||
|
||
LICENSE="Artistic-2" | ||
SLOT="0" | ||
IUSE="doc clang java +moar test" | ||
RESTRICT="!test? ( 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.8 )" | ||
DEPEND="${CDEPEND}" | ||
BDEPEND="${CDEPEND} | ||
clang? ( sys-devel/clang ) | ||
java? ( >=virtual/jdk-1.8 ) | ||
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=${EPREFIX%/}/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/* | ||
} |