Long awaited update to Spidermonkey 1.9.2.16, needed by upcoming GJS.

Note that this is not js185-1.0.0 distributed by upstream (which is
based on mozilla-2.0), but rather js/src built from firefox 3.6.16
source tarball, so that it works on sparc64 (hence the 1.9.2.16 branch
ersion).
- use patches from www/firefox36 port, remove local patches
- lib got renamed to mozjs, depending ports will be fixed shortly
- use the provided install target instead of rolling our own
- enable ctypes/readline
- regress tests happy on ppc/sparc64/amd64.

After leeeengthy discussion with martynas@ (maintainer)
ok jasper@ martynas@
This commit is contained in:
landry 2011-04-10 17:24:38 +00:00
parent 9ec2d09887
commit db888385c2
20 changed files with 86 additions and 333 deletions

View File

@ -1,53 +1,68 @@
# $OpenBSD: Makefile,v 1.15 2011/04/04 22:36:27 fgsch Exp $
# $OpenBSD: Makefile,v 1.16 2011/04/10 17:24:38 landry Exp $
SHARED_ONLY= Yes
COMMENT= Mozilla's C implementation of JavaScript
COMMENT = Mozilla C implementation of JavaScript
V= 1.7.0
DISTNAME= js-${V}
PKGNAME= spidermonkey-${V}
REVISION = 1
MOZILLA_VERSION = 1.9.2.16
FFX_VERSION = 3.6.16
MOZILLA_BRANCH = 1.9.2
MOZILLA_PROJECT = spidermonkey
DISTNAME = firefox-${FFX_VERSION}.source
PKGNAME = ${MOZILLA_PROJECT}-${MOZILLA_VERSION}
EPOCH = 0
SHARED_LIBS= js 3.0
CATEGORIES= lang
HOMEPAGE= http://www.mozilla.org/js/spidermonkey/
SO_VERSION = 0.0
SHARED_LIBS = mozjs ${SO_VERSION}
CATEGORIES = lang
MAINTAINER= Martynas Venckus <martynas@openbsd.org>
# Mozilla Public License
MAINTAINER = Martynas Venckus <martynas@openbsd.org>
# MPL
PERMIT_PACKAGE_CDROM= Yes
PERMIT_PACKAGE_FTP= Yes
PERMIT_DISTFILES_CDROM= Yes
PERMIT_DISTFILES_FTP= Yes
MASTER_SITES= http://ftp.mozilla.org/pub/mozilla.org/js/ \
http://ftp.mozilla.org/pub/mozilla.org/js/older-packages/
.if ${MACHINE_ARCH} == "i386"
PKG_ARGS+= -Djit=1 -Damd64=0
.elif ${MACHINE_ARCH} == "amd64"
PKG_ARGS+= -Djit=1 -Damd64=1
.else
PKG_ARGS+= -Djit=0 -Damd64=0
.endif
WANTLIB= c m pthread readline termcap nspr4
HOMEPAGE = http://www.mozilla.org/js/spidermonkey/
LIB_DEPENDS= devel/nspr>=4.6.3
MASTER_SITES = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/${FFX_VERSION}/source/
EXTRACT_SUFX = .tar.bz2
WRKDIST= ${WRKDIR}/js
WRKSRC= ${WRKDIST}/src
MAKE_FILE= Makefile.ref
MAKE_FLAGS= SO_SUFFIX=so.${LIBjs_VERSION} \
JS_THREADSAFE=YES \
JS_NO_THIN_LOCKS=YES \
XLDFLAGS="-L${LOCALBASE}/lib -pthread" \
XCFLAGS="-I${LOCALBASE}/include/nspr -DJS_C_STRINGS_ARE_UTF8" \
CC=${CC} \
CCC=${CXX}
# use patches from www/firefox36
PATCHDIR = ${PORTSDIR}/www/firefox36/patches
PATCH_LIST = patch-js_src*
PATCH_STRIP = -p2
USE_GMAKE= Yes
NO_REGRESS= Yes
MODULES = lang/python
MODPY_RUNDEP = No
BUILD_DEPENDS = archivers/zip archivers/unzip
LIB_DEPENDS = devel/nspr
WANTLIB = c m pthread readline nspr4 ncurses plc4 plds4 stdc++
WRKDIST = ${WRKDIR}/mozilla-${MOZILLA_BRANCH}/js/src
USE_GMAKE = yes
CONFIGURE_STYLE = autoconf no-autoheader
CONFIGURE_ARGS = --with-pthread \
--with-system-nspr \
--enable-readline \
--enable-ctypes \
--enable-threadsafe
CONFIGURE_ENV += SO_VERSION="${SO_VERSION}" \
LIBS=-lncurses \
MOZILLA_VERSION="${MOZILLA_VERSION}" \
CPPFLAGS=-DJS_C_STRINGS_ARE_UTF8
post-install:
${INSTALL_PROGRAM} ${WRKSRC}/js ${PREFIX}/bin/
do-install:
${INSTALL_PROGRAM} ${WRKSRC}/Linux_All_DBG.OBJ/js ${PREFIX}/bin
${INSTALL_DATA} ${WRKSRC}/Linux_All_DBG.OBJ/libjs.so.${LIBjs_VERSION} ${PREFIX}/lib
${INSTALL_DATA_DIR} ${PREFIX}/include/js
@cd ${WRKSRC} && ${INSTALL_DATA} js*.{h,tbl} \
${WRKSRC}/Linux_All_DBG.OBJ/jsautocfg.h ${PREFIX}/include/js/
.include <bsd.port.mk>

View File

@ -1,5 +1,5 @@
MD5 (js-1.7.0.tar.gz) = VXETTDhjaGtiPr5Oax9v5g==
RMD160 (js-1.7.0.tar.gz) = bq3xrHwQoTs9s9SZhWyeGN2839s=
SHA1 (js-1.7.0.tar.gz) = Gpno4Qy2YAoD6piJVYOo7UITbR8=
SHA256 (js-1.7.0.tar.gz) = RDY/DziVgA7mAQdj6ukMDRXtKOB9eDvHs8YHzpjYZos=
SIZE (js-1.7.0.tar.gz) = 1165607
MD5 (firefox-3.6.16.source.tar.bz2) = Iyo8AWDNHL49yqr35K5Rwg==
RMD160 (firefox-3.6.16.source.tar.bz2) = /be0HyWluLpuscVnLsxmjJYrCvg=
SHA1 (firefox-3.6.16.source.tar.bz2) = OBJFl0QLfWCqVore7yNllXWEHpI=
SHA256 (firefox-3.6.16.source.tar.bz2) = 4KVttDlIRTjXoRVjBLdCSajxEIviP7Sw3E+5R3euKcw=
SIZE (firefox-3.6.16.source.tar.bz2) = 51492728

View File

@ -1,12 +0,0 @@
$OpenBSD: patch-src_Makefile_ref,v 1.3 2009/05/05 21:01:55 martynas Exp $
--- src/Makefile.ref.orig Sun Feb 1 09:53:09 2009
+++ src/Makefile.ref Sun Feb 1 09:54:00 2009
@@ -336,7 +336,7 @@ $(PROGRAM): $(PROG_OBJS) $(LIBRARY)
link.exe -out:"$@" $(EXE_LINK_FLAGS) $^
else
$(PROGRAM): $(PROG_OBJS) $(LIBRARY)
- $(CC) -o $@ $(CFLAGS) $(PROG_OBJS) $(LIBRARY) $(LDFLAGS) $(OTHER_LIBS) \
+ $(CC) -o $@ $(CFLAGS) $(PROG_OBJS) -L$(OBJDIR) -ljs $(LDFLAGS) $(OTHER_LIBS) \
$(PROG_LIBS)
endif

View File

@ -1,42 +0,0 @@
$OpenBSD: patch-src_config_Linux_All_mk,v 1.2 2007/04/10 13:03:09 martynas Exp $
--- src/config/Linux_All.mk.orig Tue May 10 22:53:44 2005
+++ src/config/Linux_All.mk Mon Apr 9 21:54:28 2007
@@ -47,7 +47,7 @@ CFLAGS += -Wall -Wno-format
OS_CFLAGS = -DXP_UNIX -DSVR4 -DSYSV -D_BSD_SOURCE -DPOSIX_SOURCE -DHAVE_LOCALTIME_R
RANLIB = echo
-MKSHLIB = $(LD) -shared $(XMKSHLIBOPTS)
+MKSHLIB = $(CC) -shared $(XMKSHLIBOPTS)
#.c.o:
# $(CC) -c -MD $*.d $(CFLAGS) $<
@@ -74,7 +74,7 @@ endif
GFX_ARCH = x
-OS_LIBS = -lm -lc
+OS_LIBS = -lm
ASFLAGS += -x assembler-with-cpp
@@ -88,16 +88,12 @@ OS_CFLAGS += -mieee
endif
# Use the editline library to provide line-editing support.
-JS_EDITLINE = 1
+JS_READLINE = 1
-ifeq ($(CPU_ARCH),x86_64)
-# Use VA_COPY() standard macro on x86-64
-# FIXME: better use it everywhere
OS_CFLAGS += -DHAVE_VA_COPY -DVA_COPY=va_copy
-endif
-ifeq ($(CPU_ARCH),x86_64)
-# We need PIC code for shared libraries
-# FIXME: better patch rules.mk & fdlibm/Makefile*
+ifeq ($(CPU_ARCH),sparc64)
OS_CFLAGS += -DPIC -fPIC
+else
+OS_CFLAGS += -DPIC -fpic
endif

View File

@ -1,30 +0,0 @@
$OpenBSD: patch-src_config_mk,v 1.3 2009/05/05 21:01:55 martynas Exp $
--- src/config.mk.orig Sun Feb 1 09:25:52 2009
+++ src/config.mk Sun Feb 1 09:26:40 2009
@@ -94,6 +94,9 @@ endif
ifeq ($(OS_ARCH),Linux)
OS_CONFIG := Linux_All
else
+ifeq ($(OS_ARCH),OpenBSD)
+OS_CONFIG := Linux_All
+else
ifeq ($(OS_ARCH),dgux)
OS_CONFIG := dgux
else
@@ -104,6 +107,7 @@ OS_CONFIG := $(OS_ARCH)$(OS_OBJTYPE)$(OS_RELEASE
endif
endif
endif
+endif
ASFLAGS =
DEFINES =
@@ -126,7 +130,7 @@ OPTIMIZER = -Zi
else
OPTIMIZER = -g
endif
-DEFINES += -DDEBUG -DDEBUG_$(USER)
+DEFINES += -DDEBUG
OBJDIR_TAG = _DBG
endif

View File

@ -1,30 +0,0 @@
$OpenBSD: patch-src_js_c,v 1.3 2009/05/05 21:01:55 martynas Exp $
--- src/js.c.orig Sun Feb 1 09:27:41 2009
+++ src/js.c Sun Feb 1 09:30:25 2009
@@ -978,7 +978,7 @@ SrcNotes(JSContext *cx, JSScript *script)
}
}
}
- fprintf(gOutFile, "%3u: %5u [%4u] %-8s",
+ fprintf(gOutFile, "%3tu: %5u [%4u] %-8s",
PTRDIFF(sn, notes, jssrcnote), offset, delta, name);
switch (type) {
case SRC_SETLINE:
@@ -1073,7 +1073,7 @@ TryNotes(JSContext *cx, JSScript *script)
return JS_TRUE;
fprintf(gOutFile, "\nException table:\nstart\tend\tcatch\n");
while (tn->start && tn->catchStart) {
- fprintf(gOutFile, " %d\t%d\t%d\n",
+ fprintf(gOutFile, " %td\t%td\t%td\n",
tn->start, tn->start + tn->length, tn->catchStart);
tn++;
}
@@ -1297,7 +1297,7 @@ DumpScope(JSContext *cx, JSObject *obj, FILE *fp)
DUMP_ATTR(SETTER);
#undef DUMP_ATTR
- fprintf(fp, " slot %lu flags %x shortid %d\n",
+ fprintf(fp, " slot %u flags %x shortid %d\n",
(unsigned long)sprop->slot, sprop->flags, sprop->shortid);
}
}

View File

@ -1,32 +0,0 @@
$OpenBSD: patch-src_jsapi_c,v 1.3 2009/05/05 21:01:55 martynas Exp $
--- src/jsapi.c.orig Wed Oct 3 17:36:48 2007
+++ src/jsapi.c Sun May 3 23:07:02 2009
@@ -134,7 +134,7 @@ JS_GetEmptyStringValue(JSContext *cx)
static JSBool
TryArgumentFormatter(JSContext *cx, const char **formatp, JSBool fromJS,
- jsval **vpp, va_list *app)
+ jsval **vpp, va_list app)
{
const char *format;
JSArgumentFormatMap *map;
@@ -263,8 +263,7 @@ JS_ConvertArgumentsVA(JSContext *cx, uintN argc, jsval
break;
default:
format--;
- if (!TryArgumentFormatter(cx, &format, JS_TRUE, &sp,
- JS_ADDRESSOF_VA_LIST(ap))) {
+ if (!TryArgumentFormatter(cx, &format, JS_TRUE, &sp, ap)) {
return JS_FALSE;
}
/* NB: the formatter already updated sp, so we continue here. */
@@ -366,8 +365,7 @@ JS_PushArgumentsVA(JSContext *cx, void **markp, const
break;
default:
format--;
- if (!TryArgumentFormatter(cx, &format, JS_FALSE, &sp,
- JS_ADDRESSOF_VA_LIST(ap))) {
+ if (!TryArgumentFormatter(cx, &format, JS_FALSE, &sp, ap)) {
goto bad;
}
/* NB: the formatter already updated sp, so we continue here. */

View File

@ -1,13 +0,0 @@
$OpenBSD: patch-src_jslock_c,v 1.2 2009/05/05 21:01:55 martynas Exp $
--- src/jslock.c.orig Fri Mar 30 00:55:35 2007
+++ src/jslock.c Sun May 3 23:07:02 2009
@@ -224,7 +224,9 @@ js_FinishLock(JSThinLock *tl)
#endif
}
+#ifndef NSPR_LOCK
static void js_Dequeue(JSThinLock *);
+#endif
#ifdef DEBUG_SCOPE_COUNT

View File

@ -1,13 +0,0 @@
$OpenBSD: patch-src_jsnum_h,v 1.1 2009/02/03 22:23:19 martynas Exp $
--- src/jsnum.h.orig Thu Dec 9 03:32:19 2004
+++ src/jsnum.h Tue Feb 3 03:35:58 2009
@@ -61,7 +61,9 @@ JS_BEGIN_EXTERN_C
*/
#if defined(__arm) || defined(__arm32__) || defined(__arm26__) || defined(__arm__)
+#ifndef __OpenBSD__ /* Armel ABI */
#define CPU_IS_ARM
+#endif
#endif
typedef union jsdpun {

View File

@ -1,34 +0,0 @@
$OpenBSD: patch-src_jsopcode_c,v 1.3 2009/05/05 21:01:55 martynas Exp $
--- src/jsopcode.c.orig Thu Sep 27 21:30:18 2007
+++ src/jsopcode.c Sun May 3 23:07:02 2009
@@ -208,7 +208,7 @@ js_Disassemble1(JSContext *cx, JSScript *script, jsbyt
case JOF_JUMP:
case JOF_JUMPX:
off = GetJumpOffset(pc, pc);
- fprintf(fp, " %u (%d)", loc + off, off);
+ fprintf(fp, " %tu (%td)", loc + off, off);
break;
case JOF_CONST:
@@ -239,10 +239,10 @@ js_Disassemble1(JSContext *cx, JSScript *script, jsbyt
pc2 += JUMP_OFFSET_LEN;
high = GET_JUMP_OFFSET(pc2);
pc2 += JUMP_OFFSET_LEN;
- fprintf(fp, " defaultOffset %d low %d high %d", off, low, high);
+ fprintf(fp, " defaultOffset %td low %d high %d", off, low, high);
for (i = low; i <= high; i++) {
off = GetJumpOffset(pc, pc2);
- fprintf(fp, "\n\t%d: %d", i, off);
+ fprintf(fp, "\n\t%d: %td", i, off);
pc2 += jmplen;
}
len = 1 + pc2 - pc;
@@ -262,7 +262,7 @@ js_Disassemble1(JSContext *cx, JSScript *script, jsbyt
pc2 += jmplen;
npairs = GET_ATOM_INDEX(pc2);
pc2 += ATOM_INDEX_LEN;
- fprintf(fp, " offset %d npairs %u", off, (uintN) npairs);
+ fprintf(fp, " offset %td npairs %u", off, (uintN) npairs);
while (npairs) {
atom = GET_ATOM(cx, script, pc2);
pc2 += ATOM_INDEX_LEN;

View File

@ -1,12 +0,0 @@
$OpenBSD: patch-src_jsosdep_h,v 1.3 2009/05/05 21:01:55 martynas Exp $
--- src/jsosdep.h.orig Fri Jul 7 05:12:02 2006
+++ src/jsosdep.h Sun May 3 23:07:02 2009
@@ -89,7 +89,7 @@
#elif defined(SOLARIS)
#define JS_HAVE_LONG_LONG
-#elif defined(FREEBSD)
+#elif defined(FREEBSD) || defined(__OpenBSD__)
#define JS_HAVE_LONG_LONG
#elif defined(SUNOS4)

View File

@ -1,12 +0,0 @@
$OpenBSD: patch-src_jsprf_c,v 1.2 2007/04/10 13:03:09 martynas Exp $
--- src/jsprf.c.orig Thu Nov 30 02:34:45 2006
+++ src/jsprf.c Mon Apr 9 21:26:10 2007
@@ -57,7 +57,7 @@
** and requires array notation.
*/
#ifdef HAVE_VA_COPY
-#define VARARGS_ASSIGN(foo, bar) VA_COPY(foo,bar)
+#define VARARGS_ASSIGN(foo, bar) va_copy(foo,bar)
#elif defined(HAVE_VA_LIST_AS_ARRAY)
#define VARARGS_ASSIGN(foo, bar) foo[0] = bar[0]
#else

View File

@ -1,12 +0,0 @@
$OpenBSD: patch-src_jspubtd_h,v 1.3 2009/05/05 21:01:55 martynas Exp $
--- src/jspubtd.h.orig Sat Jun 23 02:13:21 2007
+++ src/jspubtd.h Sun May 3 23:07:02 2009
@@ -616,7 +616,7 @@ typedef const JSErrorFormatString *
typedef JSBool
(* JS_DLL_CALLBACK JSArgumentFormatter)(JSContext *cx, const char *format,
JSBool fromJS, jsval **vpp,
- va_list *app);
+ va_list app);
#endif
typedef JSBool

View File

@ -1,12 +0,0 @@
$OpenBSD: patch-src_jsstr_c,v 1.1 2009/05/05 21:01:55 martynas Exp $
--- src/jsstr.c.orig Sun Feb 1 11:26:35 2009
+++ src/jsstr.c Sun Feb 1 11:27:13 2009
@@ -1815,6 +1815,8 @@ str_split(JSContext *cx, JSObject *obj, uintN argc, js
jsint i, j;
uint32 len, limit;
+ memset(&tmp, 0, sizeof(tmp));
+
str = js_ValueToString(cx, OBJECT_TO_JSVAL(obj));
if (!str)
return JS_FALSE;

View File

@ -1,15 +0,0 @@
$OpenBSD: patch-src_jstypes_h,v 1.3 2009/05/05 21:01:55 martynas Exp $
--- src/jstypes.h.orig Sun Feb 1 09:30:58 2009
+++ src/jstypes.h Sun Feb 1 09:33:44 2009
@@ -409,8 +409,9 @@ typedef JSUint8 JSPackedBool;
typedef JSInt64 JSWord;
typedef JSUint64 JSUword;
#else
-typedef long JSWord;
-typedef unsigned long JSUword;
+#include <inttypes.h>
+typedef intptr_t JSWord;
+typedef uintptr_t JSUword;
#endif
#include "jsotypes.h"

View File

@ -1,12 +0,0 @@
$OpenBSD: patch-src_rules_mk,v 1.1.1.1 2006/10/01 23:02:12 steven Exp $
--- src/rules.mk.orig Sun Oct 1 17:58:25 2006
+++ src/rules.mk Sun Oct 1 17:58:50 2006
@@ -58,7 +58,7 @@ ifdef USE_MSVC
# TARGETS = $(LIBRARY) # $(PROGRAM) not supported for MSVC yet
TARGETS += $(SHARED_LIBRARY) $(PROGRAM) # it is now
else
-TARGETS += $(LIBRARY) $(SHARED_LIBRARY) $(PROGRAM)
+TARGETS += $(SHARED_LIBRARY) $(PROGRAM)
endif
all:

View File

@ -0,0 +1,2 @@
@comment $OpenBSD: PFRAG.amd64,v 1.1 2011/04/10 17:24:38 landry Exp $
include/js/NativeX64.h

View File

@ -0,0 +1,12 @@
@comment $OpenBSD: PFRAG.jit,v 1.1 2011/04/10 17:24:38 landry Exp $
include/js/Allocator.h
include/js/Assembler.h
include/js/CodeAlloc.h
include/js/Containers.h
include/js/Fragmento.h
include/js/LIR.h
include/js/Native.h
include/js/RegAlloc.h
include/js/avmplus.h
include/js/jsbuiltins.h
include/js/nanojit.h

View File

@ -1,2 +0,0 @@
@comment $OpenBSD: PFRAG.shared,v 1.1.1.1 2006/10/01 23:02:12 steven Exp $
@lib lib/libjs.so.${LIBjs_VERSION}

View File

@ -1,41 +1,42 @@
@comment $OpenBSD: PLIST,v 1.3 2010/06/21 17:51:27 bernd Exp $
%%SHARED%%
@comment $OpenBSD: PLIST,v 1.4 2011/04/10 17:24:38 landry Exp $
%%jit%%
%%amd64%%
@bin bin/js
bin/js-config
include/js/
include/js/js-config.h
include/js/js.msg
include/js/jsapi.h
include/js/jsarena.h
include/js/jsarray.h
include/js/jsatom.h
include/js/jsautocfg.h
include/js/jsautokw.h
include/js/jsbit.h
include/js/jsbool.h
include/js/jsclist.h
include/js/jscntxt.h
include/js/jscompat.h
include/js/jsconfig.h
include/js/jscpucfg.h
include/js/jsdate.h
include/js/jsdbgapi.h
include/js/jsdhash.h
include/js/jsdtoa.h
include/js/jsemit.h
include/js/jsexn.h
include/js/jsfile.h
include/js/jsfun.h
include/js/jsgc.h
include/js/jshash.h
include/js/jsinterp.h
include/js/jsinttypes.h
include/js/jsiter.h
include/js/jskeyword.tbl
include/js/jslibmath.h
include/js/jslock.h
include/js/jslong.h
include/js/jsmath.h
include/js/jsnum.h
include/js/jsobj.h
include/js/jsobjinlines.h
include/js/json.h
include/js/jsopcode.h
include/js/jsopcode.tbl
include/js/jsosdep.h
include/js/jsotypes.h
include/js/jsparse.h
include/js/jsprf.h
@ -46,9 +47,15 @@ include/js/jsregexp.h
include/js/jsscan.h
include/js/jsscope.h
include/js/jsscript.h
include/js/jsstddef.h
include/js/jsscriptinlines.h
include/js/jsstaticcheck.h
include/js/jsstr.h
include/js/jstask.h
include/js/jstracer.h
include/js/jstypes.h
include/js/jsutil.h
include/js/jsversion.h
include/js/jsxdrapi.h
include/js/jsxml.h
lib/libjs_static.a
@lib lib/libmozjs.so.${LIBmozjs_VERSION}