123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- # Copyright 1999-2017 Gentoo Foundation
- # Distributed under the terms of the GNU General Public License v2
- 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/*
- }
|