Gentoo Archives: gentoo-commits

From: Ian Stakenvicius <axs@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-lang/spidermonkey/files/, dev-lang/spidermonkey/
Date: Thu, 01 Sep 2016 21:03:40
Message-Id: 1472763809.436f1eed9e302d8b5e0711803f980bc72c81e0d5.axs@gentoo
1 commit: 436f1eed9e302d8b5e0711803f980bc72c81e0d5
2 Author: Ian Stakenvicius <axs <AT> gentoo <DOT> org>
3 AuthorDate: Wed Aug 31 23:09:20 2016 +0000
4 Commit: Ian Stakenvicius <axs <AT> gentoo <DOT> org>
5 CommitDate: Thu Sep 1 21:03:29 2016 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=436f1eed
7
8 dev-lang/spidermonkey: patch 1.8.5 to build with gcc6
9
10 Bug: http://bugs.gentoo.org/582478
11
12 Package-Manager: portage-2.2.28
13
14 .../files/spidermonkey-1.8.5-gcc6.patch | 144 ++++++++++++++++++++
15 dev-lang/spidermonkey/spidermonkey-1.8.5-r6.ebuild | 149 +++++++++++++++++++++
16 2 files changed, 293 insertions(+)
17
18 diff --git a/dev-lang/spidermonkey/files/spidermonkey-1.8.5-gcc6.patch b/dev-lang/spidermonkey/files/spidermonkey-1.8.5-gcc6.patch
19 new file mode 100644
20 index 00000000..ab2181f
21 --- /dev/null
22 +++ b/dev-lang/spidermonkey/files/spidermonkey-1.8.5-gcc6.patch
23 @@ -0,0 +1,144 @@
24 +diff -upr a/js/src/jsapi.cpp b/js/src/jsapi.cpp
25 +--- a/js/src/jsapi.cpp 2011-03-31 14:08:36.000000000 -0500
26 ++++ b/js/src/jsapi.cpp 2016-02-29 18:10:49.302307353 -0600
27 +@@ -3985,7 +3985,7 @@ JS_Enumerate(JSContext *cx, JSObject *ob
28 + AutoIdVector props(cx);
29 + JSIdArray *ida;
30 + if (!GetPropertyNames(cx, obj, JSITER_OWNONLY, &props) || !VectorToIdArray(cx, props, &ida))
31 +- return false;
32 ++ return NULL;
33 + for (size_t n = 0; n < size_t(ida->length); ++n)
34 + JS_ASSERT(js_CheckForStringIndex(ida->vector[n]) == ida->vector[n]);
35 + return ida;
36 +diff -upr a/js/src/jsfun.cpp b/js/src/jsfun.cpp
37 +--- a/js/src/jsfun.cpp 2011-03-31 14:08:36.000000000 -0500
38 ++++ b/js/src/jsfun.cpp 2016-02-29 18:21:45.249674890 -0600
39 +@@ -2051,7 +2051,7 @@ fun_toStringHelper(JSContext *cx, JSObje
40 +
41 + JSString *str = JS_DecompileFunction(cx, fun, indent);
42 + if (!str)
43 +- return false;
44 ++ return NULL;
45 +
46 + if (!indent)
47 + cx->compartment->toSourceCache.put(fun, str);
48 +@@ -2657,7 +2657,7 @@ LookupInterpretedFunctionPrototype(JSCon
49 + const Shape *shape = funobj->nativeLookup(id);
50 + if (!shape) {
51 + if (!ResolveInterpretedFunctionPrototype(cx, funobj))
52 +- return false;
53 ++ return NULL;
54 + shape = funobj->nativeLookup(id);
55 + }
56 + JS_ASSERT(!shape->configurable());
57 +diff -upr a/js/src/jsiter.cpp b/js/src/jsiter.cpp
58 +--- a/js/src/jsiter.cpp 2011-03-31 14:08:36.000000000 -0500
59 ++++ b/js/src/jsiter.cpp 2016-02-29 18:24:22.494659919 -0600
60 +@@ -425,7 +425,7 @@ NewIteratorObject(JSContext *cx, uintN f
61 + */
62 + JSObject *obj = js_NewGCObject(cx, FINALIZE_OBJECT0);
63 + if (!obj)
64 +- return false;
65 ++ return NULL;
66 + obj->init(cx, &js_IteratorClass, NULL, NULL, NULL, false);
67 + obj->setMap(cx->compartment->emptyEnumeratorShape);
68 + return obj;
69 +diff -upr a/js/src/jsparse.cpp b/js/src/jsparse.cpp
70 +--- a/js/src/jsparse.cpp 2011-03-31 14:08:36.000000000 -0500
71 ++++ b/js/src/jsparse.cpp 2016-02-29 18:29:03.997437475 -0600
72 +@@ -3352,7 +3352,7 @@ Parser::functionDef(JSAtom *funAtom, Fun
73 + if (!outertc->inFunction() && bodyLevel && funAtom && !lambda && outertc->compiling()) {
74 + JS_ASSERT(pn->pn_cookie.isFree());
75 + if (!DefineGlobal(pn, outertc->asCodeGenerator(), funAtom))
76 +- return false;
77 ++ return NULL;
78 + }
79 +
80 + pn->pn_blockid = outertc->blockid();
81 +diff -upr a/js/src/jsstr.cpp b/js/src/jsstr.cpp
82 +--- a/js/src/jsstr.cpp 2011-03-31 14:08:36.000000000 -0500
83 ++++ b/js/src/jsstr.cpp 2016-02-29 19:01:45.857779836 -0600
84 +@@ -1734,7 +1734,7 @@ class RegExpGuard
85 + if (flat) {
86 + patstr = flattenPattern(cx, fm.patstr);
87 + if (!patstr)
88 +- return false;
89 ++ return NULL;
90 + } else {
91 + patstr = fm.patstr;
92 + }
93 +@@ -3400,7 +3400,7 @@ js_InitStringClass(JSContext *cx, JSObje
94 + UndefinedValue(), NULL, NULL,
95 + JSPROP_READONLY | JSPROP_PERMANENT | JSPROP_SHARED, 0, 0,
96 + NULL)) {
97 +- return JS_FALSE;
98 ++ return NULL;
99 + }
100 +
101 + return proto;
102 +diff -upr a/js/src/jstypedarray.cpp b/js/src/jstypedarray.cpp
103 +--- a/js/src/jstypedarray.cpp 2011-03-31 14:08:36.000000000 -0500
104 ++++ b/js/src/jstypedarray.cpp 2016-02-29 19:08:53.541136191 -0600
105 +@@ -1334,7 +1334,7 @@ class TypedArrayTemplate
106 + if (size != 0 && count >= INT32_MAX / size) {
107 + JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL,
108 + JSMSG_NEED_DIET, "size and count");
109 +- return false;
110 ++ return NULL;
111 + }
112 +
113 + int32 bytelen = size * count;
114 +@@ -1668,7 +1668,7 @@ TypedArrayConstruct(JSContext *cx, jsint
115 +
116 + default:
117 + JS_NOT_REACHED("shouldn't have gotten here");
118 +- return false;
119 ++ return NULL;
120 + }
121 + }
122 +
123 +diff -upr a/js/src/jsxml.cpp b/js/src/jsxml.cpp
124 +--- a/js/src/jsxml.cpp 2011-03-31 14:08:36.000000000 -0500
125 ++++ b/js/src/jsxml.cpp 2016-02-29 19:17:10.363279731 -0600
126 +@@ -282,7 +282,7 @@ NewXMLNamespace(JSContext *cx, JSLinearS
127 +
128 + obj = NewBuiltinClassInstanceXML(cx, &js_NamespaceClass);
129 + if (!obj)
130 +- return JS_FALSE;
131 ++ return NULL;
132 + JS_ASSERT(JSVAL_IS_VOID(obj->getNamePrefixVal()));
133 + JS_ASSERT(JSVAL_IS_VOID(obj->getNameURIVal()));
134 + JS_ASSERT(JSVAL_IS_VOID(obj->getNamespaceDeclared()));
135 +@@ -431,7 +431,7 @@ ConvertQNameToString(JSContext *cx, JSOb
136 + size_t length = str->length();
137 + jschar *chars = (jschar *) cx->malloc((length + 2) * sizeof(jschar));
138 + if (!chars)
139 +- return JS_FALSE;
140 ++ return NULL;
141 + *chars = '@';
142 + const jschar *strChars = str->getChars(cx);
143 + if (!strChars) {
144 +diff -upr a/js/src/methodjit/InvokeHelpers.cpp b/js/src/methodjit/InvokeHelpers.cpp
145 +--- a/js/src/methodjit/InvokeHelpers.cpp 2011-03-31 14:08:36.000000000 -0500
146 ++++ b/js/src/methodjit/InvokeHelpers.cpp 2016-02-29 20:34:14.496983346 -0600
147 +@@ -728,7 +728,7 @@ AtSafePoint(JSContext *cx)
148 + {
149 + JSStackFrame *fp = cx->fp();
150 + if (fp->hasImacropc())
151 +- return false;
152 ++ return NULL;
153 +
154 + JSScript *script = fp->script();
155 + return script->maybeNativeCodeForPC(fp->isConstructing(), cx->regs->pc);
156 +diff -upr a/js/src/nanojit/NativeX64.cpp b/js/src/nanojit/NativeX64.cpp
157 +--- a/js/src/nanojit/NativeX64.cpp 2011-03-31 14:08:36.000000000 -0500
158 ++++ b/js/src/nanojit/NativeX64.cpp 2016-02-29 20:19:56.487934808 -0600
159 +@@ -1899,7 +1899,7 @@ namespace nanojit
160 + }
161 + }
162 +
163 +- static const AVMPLUS_ALIGN16(int64_t) negateMask[] = {0x8000000000000000LL,0};
164 ++ static const AVMPLUS_ALIGN16(int64_t) negateMask[] = {int64_t(0x8000000000000000LL),0};
165 +
166 + void Assembler::asm_fneg(LIns *ins) {
167 + Register rr, ra;
168
169 diff --git a/dev-lang/spidermonkey/spidermonkey-1.8.5-r6.ebuild b/dev-lang/spidermonkey/spidermonkey-1.8.5-r6.ebuild
170 new file mode 100644
171 index 00000000..aa91c29
172 --- /dev/null
173 +++ b/dev-lang/spidermonkey/spidermonkey-1.8.5-r6.ebuild
174 @@ -0,0 +1,149 @@
175 +# Copyright 1999-2016 Gentoo Foundation
176 +# Distributed under the terms of the GNU General Public License v2
177 +# $Id$
178 +
179 +EAPI=5
180 +WANT_AUTOCONF="2.1"
181 +PYTHON_COMPAT=( python2_7 )
182 +PYTHON_REQ_USE="threads"
183 +inherit autotools eutils toolchain-funcs multilib python-any-r1 versionator pax-utils
184 +
185 +MY_PN="js"
186 +TARBALL_PV="$(replace_all_version_separators '' $(get_version_component_range 1-3))"
187 +MY_P="${MY_PN}-${PV}"
188 +TARBALL_P="${MY_PN}${TARBALL_PV}-1.0.0"
189 +DESCRIPTION="Stand-alone JavaScript C library"
190 +HOMEPAGE="http://www.mozilla.org/js/spidermonkey/"
191 +SRC_URI="https://ftp.mozilla.org/pub/mozilla.org/js/${TARBALL_P}.tar.gz"
192 +
193 +LICENSE="NPL-1.1"
194 +SLOT="0/mozjs185"
195 +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~x64-macos"
196 +IUSE="debug minimal static-libs test"
197 +
198 +S="${WORKDIR}/${MY_P}"
199 +BUILDDIR="${S}/js/src"
200 +
201 +RDEPEND=">=dev-libs/nspr-4.7.0
202 + sys-libs/readline:0
203 + x64-macos? ( dev-libs/jemalloc )"
204 +DEPEND="${RDEPEND}
205 + ${PYTHON_DEPS}
206 + app-arch/zip
207 + virtual/pkgconfig"
208 +
209 +pkg_setup(){
210 + if [[ ${MERGE_TYPE} != "binary" ]]; then
211 + export LC_ALL="C"
212 + fi
213 +}
214 +
215 +src_prepare() {
216 + # https://bugzilla.mozilla.org/show_bug.cgi?id=628723#c43
217 + epatch "${FILESDIR}/${P}-fix-install-symlinks.patch"
218 + # https://bugzilla.mozilla.org/show_bug.cgi?id=638056#c9
219 + epatch "${FILESDIR}/${P}-fix-ppc64.patch"
220 + # https://bugs.gentoo.org/show_bug.cgi?id=400727
221 + # https://bugs.gentoo.org/show_bug.cgi?id=420471
222 + epatch "${FILESDIR}/${P}-arm_respect_cflags-3.patch"
223 + # https://bugs.gentoo.org/show_bug.cgi?id=438746
224 + epatch "${FILESDIR}"/${PN}-1.8.7-freebsd-pthreads.patch
225 + # https://bugs.gentoo.org/show_bug.cgi?id=441928
226 + epatch "${FILESDIR}"/${PN}-1.8.5-perf_event-check.patch
227 + # https://bugs.gentoo.org/show_bug.cgi?id=439260
228 + epatch "${FILESDIR}"/${P}-symbol-versions.patch
229 + # https://bugs.gentoo.org/show_bug.cgi?id=441934
230 + epatch "${FILESDIR}"/${PN}-1.8.5-ia64-fix.patch
231 + epatch "${FILESDIR}"/${PN}-1.8.5-ia64-static-strings.patch
232 + # https://bugs.gentoo.org/show_bug.cgi?id=431560
233 + epatch "${FILESDIR}"/${PN}-1.8.5-isfinite.patch
234 + # https://bugs.gentoo.org/show_bug.cgi?id=552786
235 + epatch "${FILESDIR}"/${PN}-perl-defined-array-check.patch
236 + # https://bugs.gentoo.org/show_bug.cgi?id=439558
237 + epatch "${FILESDIR}"/${PN}-1.8.7-x32.patch
238 + # https://bugs.gentoo.org/show_bug.cgi?id=582478
239 + epatch "${FILESDIR}"/${PN}-1.8.5-gcc6.patch
240 +
241 + epatch_user
242 +
243 + cd "${BUILDDIR}" || die
244 + eautoconf
245 +}
246 +
247 +src_configure() {
248 + cd "${BUILDDIR}" || die
249 +
250 + CC="$(tc-getCC)" CXX="$(tc-getCXX)" \
251 + AR="$(tc-getAR)" RANLIB="$(tc-getRANLIB)" \
252 + LD="$(tc-getLD)" \
253 + econf \
254 + ${myopts} \
255 + --enable-jemalloc \
256 + --enable-readline \
257 + --enable-threadsafe \
258 + --with-system-nspr \
259 + --disable-optimize \
260 + --disable-profile-guided-optimization \
261 + $(use_enable debug) \
262 + $(use_enable static-libs static) \
263 + $(use_enable test tests)
264 +}
265 +
266 +cross_make() {
267 + emake \
268 + CFLAGS="${BUILD_CFLAGS}" \
269 + CXXFLAGS="${BUILD_CXXFLAGS}" \
270 + AR="${BUILD_AR}" \
271 + CC="${BUILD_CC}" \
272 + CXX="${BUILD_CXX}" \
273 + RANLIB="${BUILD_RANLIB}" \
274 + "$@"
275 +}
276 +src_compile() {
277 + cd "${BUILDDIR}" || die
278 + if tc-is-cross-compiler; then
279 + tc-export_build_env BUILD_{AR,CC,CXX,RANLIB}
280 + cross_make jscpucfg host_jsoplengen host_jskwgen
281 + cross_make -C config nsinstall
282 + mv {,native-}jscpucfg || die
283 + mv {,native-}host_jskwgen || die
284 + mv {,native-}host_jsoplengen || die
285 + mv config/{,native-}nsinstall || die
286 + sed -i \
287 + -e 's@./jscpucfg@./native-jscpucfg@' \
288 + -e 's@./host_jskwgen@./native-host_jskwgen@' \
289 + -e 's@./host_jsoplengen@./native-host_jsoplengen@' \
290 + Makefile || die
291 + sed -i -e 's@/nsinstall@/native-nsinstall@' config/config.mk || die
292 + rm -f config/host_nsinstall.o \
293 + config/host_pathsub.o \
294 + host_jskwgen.o \
295 + host_jsoplengen.o || die
296 + fi
297 + emake
298 +}
299 +
300 +src_test() {
301 + cd "${BUILDDIR}/jsapi-tests" || die
302 + # for bug 415791
303 + pax-mark mr jsapi-tests
304 + emake check
305 +}
306 +
307 +src_install() {
308 + cd "${BUILDDIR}" || die
309 + emake DESTDIR="${D}" install
310 + # bug 437520 , exclude js shell for small systems
311 + if ! use minimal ; then
312 + dobin shell/js
313 + pax-mark m "${ED}/usr/bin/js"
314 + fi
315 + dodoc ../../README
316 + dohtml README.html
317 +
318 + if ! use static-libs; then
319 + # We can't actually disable building of static libraries
320 + # They're used by the tests and in a few other places
321 + find "${D}" -iname '*.a' -delete || die
322 + fi
323 +}