Gentoo Archives: gentoo-commits

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