diff --git a/dev-lang/spidermonkey/Manifest b/dev-lang/spidermonkey/Manifest new file mode 100644 --- /dev/null +++ b/dev-lang/spidermonkey/Manifest @@ -0,0 +1,27 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +AUX spidermonkey-1.5-build.patch 3457 RMD160 323b186d6be267bce42f15fe0694b8c17d1e927d SHA1 995708c8cbd03ed690505fab70a54349d4b94d09 SHA256 04a2b3b1b85825f463c6eb703d32e66747e2a8cca81b0026b958862eb1248fdb +AUX spidermonkey-1.6-header.patch 270 RMD160 ff656884925470695542b2b9412a130c72577f3a SHA1 6039b01f565b2bf2c20490a52b99b52796057b61 SHA256 e81acd7ba025214b2ecfa5918a1652e4590eaca39307c4e8d9f5d949d315373e +AUX spidermonkey-1.7.0-ldflags.patch 679 RMD160 8526ab33d971a4e6d836ace41d522e63c378d6f3 SHA1 929953bca09960d6f2762749f0cc969a5e58b6ba SHA256 bbea50178ad2569f9fbbf449f1727851cb51a67766568847cc2c208c45d43f29 +AUX spidermonkey-1.7.0-threadsafe.diff 513 RMD160 894fd8791cdf3156031e4cb370a0de40ce53cdf2 SHA1 cd4d61468ca2fdd1f90b6bb207ebf46427261166 SHA256 3e41354e093efce3fe897814bc490aa45e17c9d6d0ca6ae7f9f1550b85be89e9 +DIST js-1.7.0.tar.gz 1165607 RMD160 6eadf1ac7c10a13b3db3d499856c9e18ddbcdfdb SHA1 1a99e8e10cb6600a03ea98895583a8ed42136d1f SHA256 44363f0f3895800ee6010763eae90c0d15ed28e07d783bc7b3c607ce98d8668b +EBUILD spidermonkey-1.7.0-r2.ebuild 1675 RMD160 75845ebfbee8619ae5c68ae8e205ac53fccf9b0c SHA1 fcea2ee5b9b84470b2f7814ddb6bcab92b8bd953 SHA256 90322c330a144e4cb919c1046ea9deec26d148bfa233d129ddef7aab75c64216 +MISC metadata.xml 523 RMD160 b40a1ffd94bc32fd5045b99160481c2b95d69d30 SHA1 91eb56541e242621c81e38eb9e9f0c4dea6f099f SHA256 876e7996ea990b78088ea8ef1f0445658fea0bb7cf0a1e07cd1db2bae870307f +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.0.14 (GNU/Linux) + +iQIcBAEBCAAGBQJNK8QDAAoJEHQ6UuhrqBBQNWQQAKajQTpQY9TgXxQcafZKv4jA +Xq48b3fODBJB7zfbrRSgV26I4EtZFc+HI0FE//tgA21ifx3VDvw2O86vp1PVbsbJ +ISHljTSuRlP+YloKXfKeNQUnO4c1mTrK9J7/ZkNaO/YFoacwbIHrJQnMWQK3wefC +D0lH6do9F3Wtk7MGfejtdK/Eo3eZrj+rC1ncOvHYgqA6GmzUQM+8jKptFQQ9xxml +F7sZihiXMILAyJoqxVjPfNBapWp+N+Xhthzxn60crbDUKqsWDjyae+MoSefH67Ow +cjxkeuvkO9sG9ahDmzDTK7edUf9k40zAJYPxhZOW596qpHVdqMWqDbmU/Y1VmaE2 +3KujdHCXr+d+NSSCb86T2y0z4iWgTQMbsTX5AmQaglj3+TTg+Otz+i6Kkef7n+hv +L/xBl8ZC7aV0yOO/SDuK78Zq+JRSRC4cxPBusWGi2eZkgzhvdJaJ1fsSJrf7uNge +8mIrzOngnQxHJ9scAkYP4NUMq0Z1zBkeeMSbpa8i29/X8GAPt4IczWF4eTlyrewb +hQSKnZ3G2ocxTpvLoQA7/Y4YjTfhMRAkap6qr2pbmMObYTuwAdy2Qm1tJIkg4mjE +Mty7wku4OOBq2vdVBn+0M9Ic1exxBylfk4gBJ+EXkccK8Xy9ozHB+LJZxi/gPCXq +wTDuAHPKt6hR8t+WAnSr +=ASZ8 +-----END PGP SIGNATURE----- diff --git a/dev-lang/spidermonkey/files/spidermonkey-1.5-build.patch b/dev-lang/spidermonkey/files/spidermonkey-1.5-build.patch new file mode 100644 --- /dev/null +++ b/dev-lang/spidermonkey/files/spidermonkey-1.5-build.patch @@ -0,0 +1,138 @@ +--- js/src/Makefile.ref ++++ js/src/Makefile.ref +@@ -127,7 +127,7 @@ endif + ifdef JS_READLINE + # For those platforms with the readline library installed. + DEFINES += -DEDITLINE +-PROG_LIBS += -lreadline -ltermcap ++PROG_LIBS += -lreadline + else + ifdef JS_EDITLINE + # Use the editline library, built locally. +@@ -370,3 +370,16 @@ TARFILES = files `cat files` + SUFFIXES: .i + %.i: %.c + $(CC) -C -E $(CFLAGS) $< > $*.i ++ ++DESTDIR := ++PREFIX := /usr ++BINDIR := $(PREFIX)/bin ++MY_LIBDIR := $(PREFIX)/$(LIBDIR) ++INCLUDEDIR := $(PREFIX)/include/js ++INSTALL := install -g 0 -o root ++install: ++ $(INSTALL) -m 755 -d $(DESTDIR)$(INCLUDEDIR) $(DESTDIR)$(MY_LIBDIR) $(DESTDIR)$(BINDIR) ++ $(INSTALL) -m 755 $(SHARED_LIBRARY) $(DESTDIR)$(MY_LIBDIR) ++ $(INSTALL) -m 644 $(LIBRARY) $(DESTDIR)$(MY_LIBDIR) ++ $(INSTALL) -m 755 $(OBJDIR)/js $(OBJDIR)/jscpucfg $(DESTDIR)$(BINDIR) ++ $(INSTALL) -m 644 $(HFILES) $(DESTDIR)$(INCLUDEDIR) +--- js/src/config/Linux_All.mk ++++ js/src/config/Linux_All.mk +@@ -41,37 +41,15 @@ + # Config for all versions of Linux + # + +-CC = gcc +-CCC = g++ + 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 = $(LD) -shared $(XMKSHLIBOPTS) -soname $(notdir $@) + + #.c.o: + # $(CC) -c -MD $*.d $(CFLAGS) $< + +-CPU_ARCH = $(shell uname -m) +-# don't filter in x86-64 architecture +-ifneq (x86_64,$(CPU_ARCH)) +-ifeq (86,$(findstring 86,$(CPU_ARCH))) +-CPU_ARCH = x86 +-OS_CFLAGS+= -DX86_LINUX +- +-ifeq (gcc, $(CC)) +-# if using gcc on x86, check version for opt bug +-# (http://bugzilla.mozilla.org/show_bug.cgi?id=24892) +-GCC_VERSION := $(shell gcc -v 2>&1 | grep version | awk '{ print $$3 }') +-GCC_LIST:=$(sort 2.91.66 $(GCC_VERSION) ) +- +-ifeq (2.91.66, $(firstword $(GCC_LIST))) +-CFLAGS+= -DGCC_OPT_BUG +-endif +-endif +-endif +-endif +- + GFX_ARCH = x + + OS_LIBS = -lm -lc +@@ -88,16 +66,6 @@ + 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* +-OS_CFLAGS += -DPIC -fPIC +-endif +--- js/src/rules.mk ++++ js/src/rules.mk +@@ -82,6 +82,10 @@ $(OBJDIR)/%.o: %.c + @$(MAKE_OBJDIR) + $(CC) -o $@ -c $(CFLAGS) $*.c + ++$(OBJDIR)/%.lo: %.c ++ @$(MAKE_OBJDIR) ++ $(CC) -o $@ -c $(CFLAGS) $*.c -fPIC ++ + $(OBJDIR)/%.o: %.s + @$(MAKE_OBJDIR) + $(AS) -o $@ $(ASFLAGS) $*.s +@@ -111,11 +115,12 @@ $(SHARED_LIBRARY): $(LIB_OBJS) + /implib:"$(OBJDIR)/$(@F:.dll=.lib)" $^ + else + $(LIBRARY): $(LIB_OBJS) +- $(AR) rv $@ $? ++ $(AR) cr $@ $? + $(RANLIB) $@ + +-$(SHARED_LIBRARY): $(LIB_OBJS) +- $(MKSHLIB) -o $@ $(LIB_OBJS) $(LDFLAGS) $(OTHER_LIBS) ++SHARED_LIB_OBJS := $(LIB_OBJS:.o=.lo) ++$(SHARED_LIBRARY): $(SHARED_LIB_OBJS) ++ $(MKSHLIB) -o $@ $(SHARED_LIB_OBJS) $(LDFLAGS) $(OTHER_LIBS) + endif + endif + +--- js/src/fdlibm/Makefile.ref ++++ js/src/fdlibm/Makefile.ref +@@ -151,7 +151,7 @@ + + $(OBJDIR)/%.o: %.c + @$(MAKE_OBJDIR) +- $(CC) -o $@ -c $(CFLAGS) $*.c ++ $(CC) -o $@ -c $(CFLAGS) $*.c -fPIC + + $(OBJDIR)/%.o: %.s + @$(MAKE_OBJDIR) +--- js/src/config.mk ++++ js/src/config.mk +@@ -112,6 +112,8 @@ + CP = cp + endif + ++BUILD_OPT := 1 ++ + ifdef BUILD_OPT + OPTIMIZER = -O + DEFINES += -UDEBUG -DNDEBUG -UDEBUG_$(shell whoami) diff --git a/dev-lang/spidermonkey/files/spidermonkey-1.6-header.patch b/dev-lang/spidermonkey/files/spidermonkey-1.6-header.patch new file mode 100644 --- /dev/null +++ b/dev-lang/spidermonkey/files/spidermonkey-1.6-header.patch @@ -0,0 +1,13 @@ +Index: src/Makefile.ref +=================================================================== +--- src.orig/Makefile.ref ++++ src/Makefile.ref +@@ -185,6 +185,8 @@ JS_HFILES = \ + jsstr.h \ + jsxdrapi.h \ + jsxml.h \ ++ jsutil.h \ ++ jsprf.h \ + $(NULL) + + API_HFILES = \ diff --git a/dev-lang/spidermonkey/files/spidermonkey-1.7.0-ldflags.patch b/dev-lang/spidermonkey/files/spidermonkey-1.7.0-ldflags.patch new file mode 100644 --- /dev/null +++ b/dev-lang/spidermonkey/files/spidermonkey-1.7.0-ldflags.patch @@ -0,0 +1,24 @@ +Respect LDFLAGS + +http://bugs.gentoo.org/show_bug.cgi?id=331129 + +--- js/src/Makefile.ref ++++ js/src/Makefile.ref +@@ -338,7 +338,7 @@ + link.exe -out:"$@" $(EXE_LINK_FLAGS) $^ + else + $(PROGRAM): $(PROG_OBJS) $(LIBRARY) +- $(CC) -o $@ $(CFLAGS) $(PROG_OBJS) $(LIBRARY) $(LDFLAGS) $(OTHER_LIBS) \ ++ $(CC) $(HOST_LDFLAGS) -o $@ $(CFLAGS) $(PROG_OBJS) $(LIBRARY) $(LDFLAGS) $(OTHER_LIBS) \ + $(PROG_LIBS) + endif + +@@ -355,7 +355,7 @@ + $(OBJDIR)/jscpucfg > $@ + + $(OBJDIR)/jscpucfg: $(OBJDIR)/jscpucfg.o +- $(CC) -o $@ $(OBJDIR)/jscpucfg.o ++ $(CC) $(HOST_LDFLAGS) -o $@ $(OBJDIR)/jscpucfg.o + + # Add to TARGETS for clobber rule + TARGETS += $(OBJDIR)/jsautocfg.h $(OBJDIR)/jscpucfg \ diff --git a/dev-lang/spidermonkey/files/spidermonkey-1.7.0-threadsafe.diff b/dev-lang/spidermonkey/files/spidermonkey-1.7.0-threadsafe.diff new file mode 100644 --- /dev/null +++ b/dev-lang/spidermonkey/files/spidermonkey-1.7.0-threadsafe.diff @@ -0,0 +1,18 @@ +Index: src/Makefile.ref +=================================================================== +--- src.orig/Makefile.ref ++++ src/Makefile.ref +@@ -63,11 +63,11 @@ INCLUDES += -I$(OBJDIR) + + ifdef JS_THREADSAFE + DEFINES += -DJS_THREADSAFE +-INCLUDES += -I$(DIST)/include/nspr ++INCLUDES += -I/usr/include/nspr + ifdef USE_MSVC + OTHER_LIBS += $(DIST)/lib/libnspr$(NSPR_LIBSUFFIX).lib + else +-OTHER_LIBS += -L$(DIST)/lib -lnspr$(NSPR_LIBSUFFIX) ++OTHER_LIBS += -L/usr/$(LIBDIR)/nspr -lnspr$(NSPR_LIBSUFFIX) + endif + endif + diff --git a/dev-lang/spidermonkey/metadata.xml b/dev-lang/spidermonkey/metadata.xml new file mode 100644 --- /dev/null +++ b/dev-lang/spidermonkey/metadata.xml @@ -0,0 +1,20 @@ + + + + + djc@gentoo.org + Dirkjan Ochtman + + + anarchy@gentoo.org + Jory A. Pratt + + mozilla + + Stand-alone JavaScript C library + + + Build a threadsafe version of spidermonkey + + + diff --git a/dev-lang/spidermonkey/spidermonkey-1.7.0-r2.ebuild b/dev-lang/spidermonkey/spidermonkey-1.7.0-r2.ebuild new file mode 100644 --- /dev/null +++ b/dev-lang/spidermonkey/spidermonkey-1.7.0-r2.ebuild @@ -0,0 +1,52 @@ +# Copyright 1999-2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/dev-lang/spidermonkey/spidermonkey-1.7.0-r2.ebuild,v 1.1 2010/08/06 23:15:48 hwoarang Exp $ + +inherit eutils toolchain-funcs multilib flag-o-matic + +MY_P="js-${PV}" +DESCRIPTION="Stand-alone JavaScript C library" +HOMEPAGE="http://www.mozilla.org/js/spidermonkey/" +SRC_URI="ftp://ftp.mozilla.org/pub/mozilla.org/js/${MY_P}.tar.gz" + +LICENSE="NPL-1.1" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd" +IUSE="threadsafe unicode" + +S="${WORKDIR}/js/src" + +RDEPEND="threadsafe? ( dev-libs/nspr )" +DEPEND="${RDEPEND}" + +src_unpack() { + unpack ${A} + cd "${S}" + epatch "${FILESDIR}/${PN}-1.5-build.patch" + epatch "${FILESDIR}/${PN}-1.6-header.patch" + epatch "${FILESDIR}/${P}-threadsafe.diff" \ + "${FILESDIR}"/${P}-ldflags.patch + if [[ ${CHOST} == *-freebsd* ]]; then + # Don't try to be smart, this does not work in cross-compile anyway + ln -s "${S}/config/Linux_All.mk" "${S}/config/$(uname -s)$(uname -r).mk" + fi +} + +src_compile() { + use unicode && append-flags "-DJS_C_STRINGS_ARE_UTF8" + tc-export CC LD AR + if use threadsafe; then + emake -j1 -f Makefile.ref LIBDIR="$(get_libdir)" JS_THREADSAFE=1 \ + XLDFLAGS="$(raw-ldflags)" HOST_LDFLAGS="${LDFLAGS}" \ + || die "emake with threadsafe enabled failed"; + else + emake -j1 -f Makefile.ref LIBDIR="$(get_libdir)" XLDFLAGS="$(raw-ldflags)" \ + HOST_LDFLAGS="${LDFLAGS}" || die "emake without threadsafe enabled failed"; + fi +} + +src_install() { + emake -f Makefile.ref install DESTDIR="${D}" LIBDIR="$(get_libdir)" || die + dodoc ../jsd/README + dohtml README.html +}