Преглед изворни кода

fix issue 241: use internal spidermonkey

Sergei Ilinykh пре 1 година
родитељ
комит
a0500956dc

+ 1 - 0
games-action/oolite/Manifest

@@ -1,3 +1,4 @@
 DIST oolite-1.90.tar.gz 13909244 BLAKE2B c9518c09464f180bfaf1282aa8db81743a8575794069c4e22f1e3fd265a92d171cad9487606d4c6522a591f551e3435426d5aa44c0948068960b9c2f23d9b5f1 SHA512 05dce547528314fd2d1868f9a8b2eff9ad22f154f2690211432f1d82f843d57ae8e25cec7c24a2ab3b91fd7c19222748b5d6deb66946f1357a087cc7f9cc9ac1
 DIST oolite-binary-resources-1.90.tar.gz 99088607 BLAKE2B 568b1a3542b2ca6627743930ba4d26b8258f302ffc1af90716a75538e8c51c1e609f1e03fe132cd96a1b8b4e8fce20387c86d31ee8740c393b14e8d8a3890a0c SHA512 4a647c9f5990faeff8d3259ab248a68e7ea02bd8fec4df40088dfd36863bfde6463e3fda835dc63a63359df23dc8e62b53919b0ee0c3de738d8a6e5f15e455b9
 DIST oolite-sdl-dependencies-1.90.tar.gz 566021 BLAKE2B fcab3357c579514ae9af49bcee58f9e9f89fb5fdef128ad4d277a586dbae2897657287a11df14d194024ee3ca6a25153dfc5480149ba2f3f53045ae1baa4aa91 SHA512 6167f2ae855f4c24623371ccc40b12b1fbbebc51d2b166746c9b5d9222ab62e9242ef787febec5704141104287124c8b728ff68ce533e53869f8d69cde211459
+DIST oolite-spidermonkey-1.90.tar.gz 7873831 BLAKE2B 96546e998d2f049b3c6d1f680516480251653e004184bc5b0e449836a0cc4dfff8cd5c7a08734dc8d6148500009d3b0904acb237246bd5e6aa55d62890d056eb SHA512 3893b40cd40179a16a8d997b584a32cad084a6eb41d95f2aee12cb31d73d48c7718d9ad077b0e83ee72be2f66010b69fa56dfdda543b453e4b09ca8edf2a9795

+ 0 - 135
games-action/oolite/files/external-mozjs.patch

@@ -1,135 +0,0 @@
---- a/src/Core/Scripting/OOJSEngineTimeManagement.m
-+++ b/src/Core/Scripting/OOJSEngineTimeManagement.m
-@@ -236,7 +236,7 @@ static JSBool OperationCallback(JSContext *context)
- 	return NO;
- }
- 
--
-+#ifndef EXTERNAL_MOZJS
- static JSBool ContextCallback(JSContext *context, uintN contextOp)
- {
- 	if (contextOp == JSCONTEXT_NEW)
-@@ -249,6 +249,7 @@ static JSBool ContextCallback(JSContext *context, uintN contextOp)
- 	}
- 	return YES;
- }
-+#endif
- 
- 
- void OOJSTimeManagementInit(OOJavaScriptEngine *engine, JSRuntime *runtime)
-@@ -257,7 +258,11 @@ void OOJSTimeManagementInit(OOJavaScriptEngine *engine, JSRuntime *runtime)
- 							 toTarget:engine
- 						   withObject:nil];
- 	
-+#ifdef EXTERNAL_MOZJS
-+# warning "JS_SetFunctionCallback does not work wit external mojs. See https://bugzilla.mozilla.org/show_bug.cgi?id=1103269"
-+#else
- 	JS_SetContextCallback(runtime, ContextCallback);
-+#endif
- }
- 
- 
-diff --git a/src/Core/Scripting/OOJSScript.m b/src/Core/Scripting/OOJSScript.m
-index 5d4801b..e27ddba 100644
---- a/src/Core/Scripting/OOJSScript.m
-+++ b/src/Core/Scripting/OOJSScript.m
-@@ -47,6 +46,12 @@ MA 02110-1301, USA.
- #import "OOCacheManager.h"
- #endif
- 
-+#ifdef EXTERNAL_MOZJS
-+# define JS_XDRScript JS_XDRScriptObject
-+typedef JSObject JSScriptType;
-+#else
-+typedef JSScript JSScriptType;
-+#endif
- 
- typedef struct RunningStack RunningStack;
- struct RunningStack
-@@ -62,11 +67,11 @@ static RunningStack		*sRunningStack = NULL;
- 
- static void AddStackToArrayReversed(NSMutableArray *array, RunningStack *stack);
- 
--static JSScript *LoadScriptWithName(JSContext *context, NSString *path, JSObject *object, JSObject **outScriptObject, NSString **outErrorMessage);
-+static JSScriptType *LoadScriptWithName(JSContext *context, NSString *path, JSObject *object, JSObject **outScriptObject, NSString **outErrorMessage);
- 
- #if OO_CACHE_JS_SCRIPTS
--static NSData *CompiledScriptData(JSContext *context, JSScript *script);
--static JSScript *ScriptWithCompiledData(JSContext *context, NSData *data);
-+static NSData *CompiledScriptData(JSContext *context, JSScriptType *script);
-+static JSScriptType *ScriptWithCompiledData(JSContext *context, NSData *data);
- #endif
- 
- static NSString *StrippedName(NSString *string);
-@@ -119,7 +124,7 @@ static JSFunctionSpec sScriptMethods[] =
- {
- 	JSContext				*context = NULL;
- 	NSString				*problem = nil;		// Acts as error flag.
--	JSScript				*script = NULL;
-+	JSScriptType				*script = NULL;
- 	JSObject				*scriptObject = NULL;
- 	jsval					returnValue = JSVAL_VOID;
- 	NSEnumerator			*keyEnum = nil;
-@@ -231,9 +236,10 @@ static JSFunctionSpec sScriptMethods[] =
- 				problem = @"could not run script";
- 			}
- 			OOJSStopTimeLimiter();
--			
-+#ifndef EXTERNAL_MOZJS			
- 			// We don't need the script any more - the event handlers hang around as long as the JS object exists.
- 			JS_DestroyScript(context, script);
-+#endif
- 		}
- 		
- 		JS_RemoveObjectRoot(context, &scriptObject);
-@@ -695,14 +701,14 @@ static void AddStackToArrayReversed(NSMutableArray *array, RunningStack *stack)
- }
- 
- 
--static JSScript *LoadScriptWithName(JSContext *context, NSString *path, JSObject *object, JSObject **outScriptObject, NSString **outErrorMessage)
-+static JSScriptType *LoadScriptWithName(JSContext *context, NSString *path, JSObject *object, JSObject **outScriptObject, NSString **outErrorMessage)
- {
- #if OO_CACHE_JS_SCRIPTS
- 	OOCacheManager				*cache = nil;
- #endif
- 	NSString					*fileContents = nil;
- 	NSData						*data = nil;
--	JSScript					*script = NULL;
-+	JSScriptType					*script = NULL;
- 	
- 	NSCParameterAssert(outScriptObject != NULL && outErrorMessage != NULL);
- 	*outErrorMessage = nil;
-@@ -745,7 +751,11 @@ static JSScript *LoadScriptWithName(JSContext *context, NSString *path, JSObject
- 		else
- 		{
- 			script = JS_CompileUCScript(context, object, [data bytes], [data length] / sizeof(unichar), [path UTF8String], 1);
-+#ifdef EXTERNAL_MOZJS
-+			if (script != NULL)  *outScriptObject = script;
-+#else
- 			if (script != NULL)  *outScriptObject = JS_NewScriptObject(context, script);
-+#endif
- 			else  *outErrorMessage = @"compilation failed";
- 		}
- 		
-@@ -764,7 +774,7 @@ static JSScript *LoadScriptWithName(JSContext *context, NSString *path, JSObject
- 
- 
- #if OO_CACHE_JS_SCRIPTS
--static NSData *CompiledScriptData(JSContext *context, JSScript *script)
-+static NSData *CompiledScriptData(JSContext *context, JSScriptType *script)
- {
- 	JSXDRState					*xdr = NULL;
- 	NSData						*result = nil;
-@@ -789,10 +799,10 @@ static NSData *CompiledScriptData(JSContext *context, JSScript *script)
- }
- 
- 
--static JSScript *ScriptWithCompiledData(JSContext *context, NSData *data)
-+static JSScriptType *ScriptWithCompiledData(JSContext *context, NSData *data)
- {
- 	JSXDRState					*xdr = NULL;
--	JSScript					*result = NULL;
-+	JSScriptType					*result = NULL;
- 	
- 	if (data == nil)  return NULL;
- 	

+ 0 - 43
games-action/oolite/files/oolite-gentoo.patch

@@ -1,43 +0,0 @@
-diff --git a/GNUmakefile b/GNUmakefile
-index 95b4b28..4a700ea 100644
---- a/GNUmakefile
-+++ b/GNUmakefile
-@@ -153,9 +153,7 @@ oolite_C_FILES = \
-     legacy_random.c \
-     strlcpy.c \
-     OOTCPStreamDecoder.c \
--    OOPlanetData.c \
--	ioapi.c \
--	unzip.c
-+    OOPlanetData.c
- 
- 
- OOLITE_DEBUG_FILES = \
-diff --git a/GNUmakefile.postamble b/GNUmakefile.postamble
-index 5d97459..f09ca5b 100644
---- a/GNUmakefile.postamble
-+++ b/GNUmakefile.postamble
-@@ -4,10 +4,6 @@
- # to live (Contents/Resources)
- #
- CP_FLAGS                         = -rf
--
--ifeq ($(debug),yes)
--    EXT                          =.dbg
--endif
-                                  
- ifeq ($(findstring -gnu,$(GNUSTEP_HOST_OS)),-gnu)
-     CP_FLAGS                     += -u
-diff --git a/Makefile b/Makefile
-index 5d93c57..8af1d91 100644
---- a/Makefile
-+++ b/Makefile
-@@ -65,7 +65,7 @@ debug: $(DEPS_DBG)
- 
- .PHONY: release
- release: $(DEPS)
--	$(MAKE) -f GNUmakefile debug=no strip=yes
-+	$(MAKE) -f GNUmakefile debug=no strip=no
- 	mkdir -p AddOns && rm -rf AddOns/Basic-debug.oxp && cp -rf DebugOXP/Debug.oxp AddOns/Basic-debug.oxp
- 
- .PHONY: release-deployment

+ 19 - 8
games-action/oolite/oolite-1.90.ebuild

@@ -7,13 +7,14 @@ inherit gnustep-2 desktop
 
 DESCRIPTION="Elite space trading & warfare remake"
 HOMEPAGE="http://oolite.space/"
-FF_JS_URI="http://jens.ayton.se/oolite/deps/firefox-4.0.source.js-only.tbz"
 BINRES_REV=1fe395fe185611b2de54b027cda6c29f15a9f3a0
 OOLITE_REV=1.90
 SDLDEL_REV=dd17796b2ee1257bea04aeffaec660f6c75eadf2
+SM_REV=c463e95ea5d1d780301e7f3792783771381125f0
 SRC_URI="https://github.com/OoliteProject/oolite/archive/${OOLITE_REV}.tar.gz -> ${P}.tar.gz
 	https://github.com/OoliteProject/oolite-binary-resources/archive/${BINRES_REV}.tar.gz -> oolite-binary-resources-${PV}.tar.gz
 	https://github.com/OoliteProject/oolite-sdl-dependencies/archive/${SDLDEL_REV}.tar.gz -> oolite-sdl-dependencies-${PV}.tar.gz
+	https://github.com/OoliteProject/spidermonkey-ff4/archive/${SM_REV}.tar.gz -> oolite-spidermonkey-${PV}.tar.gz
 "
 S="${WORKDIR}/${PN}-${OOLITE_REV}"
 OOLITE_VER_GITREV=6897 # git rev-list --count HEAD # depends on OOLITE_REV
@@ -27,29 +28,28 @@ RDEPEND="virtual/opengl
 		gnustep-base/gnustep-gui
 		media-libs/sdl-mixer
 		media-libs/sdl-image
-		app-accessibility/espeak
+		app-accessibility/espeak-ng
 		media-libs/libvorbis
 		dev-libs/nspr
 		media-libs/libpng:0
 		media-libs/openal
-		dev-lang/spidermonkey:0
 		sys-libs/zlib[minizip]"
 
 DEPEND="${RDEPEND}
 		gnustep-base/gnustep-make[-libobjc2]"
 
-PATCHES=( "${FILESDIR}/${P}-gentoo.patch" "${FILESDIR}/external-mozjs.patch" )
+PATCHES=( "${FILESDIR}/${P}-gentoo.patch" )
 
 src_prepare() {
 	gnustep-base_src_prepare
 	mv "${WORKDIR}/oolite-binary-resources-${BINRES_REV}"/* "${S}"/Resources/Binary/
 	mv "${WORKDIR}/oolite-sdl-dependencies-${SDLDEL_REV}"/* "${S}"/deps/Cross-platform-deps/
 	sed -i -e 's:.*STRIP.*:	true:' \
-		-e "/ADDITIONAL_OBJCFLAGS *=/aADDITIONAL_OBJCFLAGS += -fobjc-exceptions $(pkg-config --cflags mozjs185) -DEXTERNAL_MOZJS" \
+		-e "/ADDITIONAL_OBJCFLAGS *=/aADDITIONAL_OBJCFLAGS += -fobjc-exceptions" \
 		-e '/ADDITIONAL_OBJC_LIBS *=/aADDITIONAL_OBJC_LIBS += -lminizip' \
 		-e 's|:src/Core/MiniZip||g' \
 		-e 's|-Isrc/Core/MiniZip|-I/usr/include/minizip|' \
-		-e 's|LIBJS *= js_static|LIBJS = mozjs185|' \
+		-e 's|lespeak|lespeak-ng|' \
 		"${S}"/GNUmakefile || die
 	sed "/void png_error/d" -i src/Core/Materials/OOPNGTextureLoader.m
 	rm -rf src/Core/MiniZip/
@@ -57,8 +57,19 @@ src_prepare() {
 
 src_compile() {
 	egnustep_env
-	# explicit Makefile because there are many and Makefile is choosen by default
-	emake -f Makefile $(use debug && echo debug || echo release) DEPS= VER_GITHASH=${OOLITE_REV:0:7} VER_GITREV=${OOLITE_VER_GITREV}
+	local SM_SRC="${WORKDIR}/spidermonkey-ff4-${SM_REV}/js/src"
+	local LIBJS_DIR="${SM_SRC}/build"
+	emake -f libjs.make \
+		debug=$(usex debug yes no) \
+		LIBJS_BUILD_DIR="${LIBJS_DIR}"
+	# explicit Makefile because there are many and "Makefile" is not choosen by default
+	emake -f Makefile \
+		$(use debug && echo debug || echo release) \
+		DEPS= \
+		VER_GITHASH=${OOLITE_REV:0:7} \
+		VER_GITREV=${OOLITE_VER_GITREV} \
+		LIBJS_DIR="${LIBJS_DIR}" \
+		LIBJS_INC_DIR="${LIBJS_DIR}/dist/include"
 }
 
 src_install() {