Gentoo Archives: gentoo-commits

From: "M. B." <tomboy64@××××.cn>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/user/tbc:master commit in: dev-lang/nqp/, dev-lang/rakudo/
Date: Thu, 26 May 2016 15:45:05
Message-Id: 1464277459.92b5d006f7ab058c76be9a4846ba04da4e2ba857.tomboy64@gentoo
1 commit: 92b5d006f7ab058c76be9a4846ba04da4e2ba857
2 Author: Matthew Brewer <tomboy64 <AT> sina <DOT> cn>
3 AuthorDate: Thu May 26 15:44:19 2016 +0000
4 Commit: M. B. <tomboy64 <AT> sina <DOT> cn>
5 CommitDate: Thu May 26 15:44:19 2016 +0000
6 URL: https://gitweb.gentoo.org/repo/user/tbc.git/commit/?id=92b5d006
7
8 updated new versions of 2016.04; using multibuild with nqp
9
10 dev-lang/nqp/nqp-2016.04-r5.ebuild | 144 +++++++++++++++++++++++++++++++
11 dev-lang/rakudo/rakudo-2016.04-r3.ebuild | 26 ++----
12 2 files changed, 152 insertions(+), 18 deletions(-)
13
14 diff --git a/dev-lang/nqp/nqp-2016.04-r5.ebuild b/dev-lang/nqp/nqp-2016.04-r5.ebuild
15 new file mode 100644
16 index 0000000..82d2b2b
17 --- /dev/null
18 +++ b/dev-lang/nqp/nqp-2016.04-r5.ebuild
19 @@ -0,0 +1,144 @@
20 +# Copyright 1999-2016 Gentoo Foundation
21 +# Distributed under the terms of the GNU General Public License v2
22 +# $Id$
23 +
24 +EAPI=5
25 +
26 +inherit java-pkg-opt-2 multibuild
27 +
28 +if [[ ${PV} == "9999" ]]; then
29 + EGIT_REPO_URI="https://github.com/perl6/${PN}.git"
30 + inherit git-r3
31 + KEYWORDS=""
32 +else
33 + SRC_URI="https://github.com/perl6/${PN}/tarball/${PV} -> ${P}.tar.gz"
34 + inherit vcs-snapshot
35 + KEYWORDS="~amd64 ~x86"
36 +fi
37 +
38 +DESCRIPTION="Not Quite Perl, a Perl 6 bootstrapping compiler"
39 +HOMEPAGE="http://rakudo.org/"
40 +
41 +LICENSE="Artistic-2"
42 +SLOT="0"
43 +IUSE="doc clang java +moar test"
44 +REQUIRED_USE="|| ( java moar )"
45 +
46 +CDEPEND="java? (
47 + dev-java/asm:4
48 + dev-java/jline:0
49 + dev-java/jna:4
50 + )
51 + moar? ( ~dev-lang/moarvm-${PV}[clang=] )
52 + dev-libs/libffi"
53 +RDEPEND="${CDEPEND}
54 + java? ( >=virtual/jre-1.7 )"
55 +DEPEND="${CDEPEND}
56 + clang? ( sys-devel/clang )
57 + java? ( >=virtual/jdk-1.7 )
58 + dev-lang/perl"
59 +PATCHES=( "${FILESDIR}/enable-external-jars.patch" )
60 +
61 +java_prepare() {
62 + # Don't clean stage0 jars.
63 + einfo "Cleaning upstream jars"
64 + java-pkg_clean 3rdparty/
65 +
66 + # Don't use jars we just deleted.
67 + sed -i -r 's/(:3rdparty[^:]*)+/:${THIRDPARTY_JARS}/g' \
68 + src/vm/jvm/runners/nqp-j || die
69 +}
70 +
71 +src_prepare() {
72 + MULTIBUILD_VARIANTS=()
73 + use moar && MULTIBUILD_VARIANTS+=( moar )
74 + use java && MULTIBUILD_VARIANTS+=( jvm )
75 +
76 + multibuild_copy_sources
77 +
78 + # This will pull in conditional java_prepare
79 + default
80 +}
81 +
82 +nqp_configure() {
83 + pushd "${BUILD_DIR}" > /dev/null || die
84 + local myconfargs=(
85 + "--backend=${MULTIBUILD_VARIANT}"
86 + "--prefix=/usr" )
87 +
88 + perl Configure.pl "${myconfargs[@]}" || die
89 + popd || die
90 +}
91 +
92 +nqp_compile() {
93 + pushd "${BUILD_DIR}" > /dev/null || die
94 + if [[ "${MULTIBUILD_VARIANT}" = jvm ]]; then
95 + emake -j1 \
96 + THIRDPARTY_JARS=$(java-pkg_getjars --with-dependencies asm-4,jline,jna-4)
97 + JAVAC="$(java-pkg_get-javac) $(java-pkg_javac-args)"
98 + elif [[ "${MULTIBUILD_VARIANT}" = moar ]]; then
99 + emake -j1
100 + fi
101 + popd || die
102 +}
103 +
104 +nqp_test() {
105 + pushd "${BUILD_DIR}" > /dev/null || die
106 + emake -j1 test
107 + popd || die
108 +}
109 +
110 +nqp_install() {
111 + pushd "${BUILD_DIR}" > /dev/null || die
112 + # This is the actual reason we need multibuild.eclass.
113 + # We need to distinguish the install procedure for MoarVM and JVM backends.
114 + if [[ "${MULTIBUILD_VARIANT}" = moar ]]; then
115 + emake DESTDIR="${ED}" install
116 + elif [[ "${MULTIBUILD_VARIANT}" = jvm ]]; then
117 + # Set JAVA_PKG_JARDEST early.
118 + java-pkg_init_paths_
119 +
120 + # Upstream sets the classpath to this location. Perhaps it's
121 + # used to locate the additional libraries?
122 + java-pkg_addcp "${JAVA_PKG_JARDEST}"
123 +
124 + insinto "${JAVA_PKG_JARDEST}"
125 + local jar
126 +
127 + for jar in *.jar; do
128 + if has ${jar} ${PN}.jar ${PN}-runtime.jar; then
129 + # jars for NQP itself.
130 + java-pkg_dojar ${jar}
131 + else
132 + # jars used by NQP.
133 + doins ${jar}
134 + fi
135 + done
136 +
137 + # Upstream uses -Xbootclasspath/a, which is faster due to lack
138 + # of verification, but gjl isn't flexible enough yet. :(
139 + java-pkg_dolauncher ${PN}-j --main ${PN}
140 + dosym ${PN}-j /usr/bin/${PN}
141 + dobin tools/jvm/eval-client.pl
142 + fi
143 + popd || die
144 +}
145 +
146 +src_configure() {
147 + multibuild_foreach_variant nqp_configure
148 +}
149 +
150 +src_compile() {
151 + multibuild_foreach_variant nqp_compile
152 +}
153 +
154 +src_test() {
155 + multibuild_foreach_variant nqp_test
156 +}
157 +
158 +src_install() {
159 + multibuild_foreach_variant nqp_install
160 +
161 + dodoc CREDITS README.pod
162 + use doc && dodoc -r docs/*
163 +}
164
165 diff --git a/dev-lang/rakudo/rakudo-2016.04-r3.ebuild b/dev-lang/rakudo/rakudo-2016.04-r3.ebuild
166 index 7421cad..0255978 100644
167 --- a/dev-lang/rakudo/rakudo-2016.04-r3.ebuild
168 +++ b/dev-lang/rakudo/rakudo-2016.04-r3.ebuild
169 @@ -24,14 +24,12 @@ SLOT="0"
170 IUSE="clang java +moar test"
171 REQUIRED_USE="|| ( java moar )"
172
173 -CDEPEND="~dev-lang/nqp-${PV}:${SLOT}=[java=,moar=,clang=]"
174 -
175 +CDEPEND="~dev-lang/nqp-${PV}:${SLOT}=[java?,moar?,clang=]"
176 RDEPEND="${CDEPEND}
177 - java? ( >=virtual/jre-1.7:* )"
178 -
179 + java? ( >=virtual/jre-1.7 )"
180 DEPEND="${CDEPEND}
181 clang? ( sys-devel/clang )
182 - java? ( >=virtual/jdk-1.7:* )
183 + java? ( >=virtual/jdk-1.7 )
184 >=dev-lang/perl-5.10"
185
186 PATCHES=(
187 @@ -39,24 +37,16 @@ PATCHES=(
188 "${FILESDIR}/${PN}-jna-lib.patch"
189 )
190
191 -src_prepare() {
192 - eapply "${PATCHES[@]}"
193 -
194 - # yup, this is ugly. but emake doesn't respect DESTDIR.
195 - for i in Moar JVM; do
196 - echo "DESTDIR = ${D}" > "${T}/Makefile-${i}.in" || die
197 - cat "${S}/tools/build/Makefile-${i}.in" >> "${T}/Makefile-${i}.in" || die
198 - mv "${T}/Makefile-${i}.in" "${S}/tools/build/Makefile-${i}.in" || die
199 - done
200 -
201 - eapply_user
202 - java-pkg-opt-2_src_prepare
203 +pkg_pretend() {
204 + if has_version dev-lang/rakudo && use java; then
205 + die "Rakudo is known to fail compilation with the jvm backend if it's already installed."
206 + fi
207 }
208
209 src_configure() {
210 local backends
211 use java && backends+="jvm,"
212 - use moar && backends+="moar,"
213 + use moar && backends+="moar"
214
215 local myargs=(
216 "--prefix=/usr"