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 |
+} |