[erlang-js/f15/master] build fix for js 1.8.5

Martin Stransky stransky at fedoraproject.org
Thu Apr 14 09:21:05 UTC 2011


commit 72570228e5fa85556080ff7e81b336d25599f617
Author: Martin Stransky <stransky at redhat.com>
Date:   Thu Apr 14 11:21:04 2011 +0200

    build fix for js 1.8.5

 erlang-js-0005-js-1.8.5.patch |   93 +++++++++++++++++++++++++++++++++++++++++
 erlang-js.spec                |    9 +++-
 2 files changed, 100 insertions(+), 2 deletions(-)
---
diff --git a/erlang-js-0005-js-1.8.5.patch b/erlang-js-0005-js-1.8.5.patch
new file mode 100644
index 0000000..a02ff7d
--- /dev/null
+++ b/erlang-js-0005-js-1.8.5.patch
@@ -0,0 +1,93 @@
+diff -up basho-erlang_js-5350ed2/c_src/Makefile.old basho-erlang_js-5350ed2/c_src/Makefile
+--- basho-erlang_js-5350ed2/c_src/Makefile.old	2011-04-13 17:33:06.000000000 +0200
++++ basho-erlang_js-5350ed2/c_src/Makefile	2011-04-13 16:40:46.000000000 +0200
+@@ -1,6 +1,6 @@
+ MAKE = make
+-CFLAGS ?= -g -Wall -O2
+-CC ?= gcc
++CFLAGS ?= -g -Wall -O2 -fpermissive
++CC = g++
+ OBJS = driver_comm.o spidermonkey.o spidermonkey_drv.o
+ ERLANG_ROOT := $(shell erl -eval 'io:format("~s", [code:root_dir()])' -s init stop -noshell)
+ ERL_INC_DIR = $(ERLANG_ROOT)/usr/include
+diff -up basho-erlang_js-5350ed2/c_src/spidermonkey.c.old basho-erlang_js-5350ed2/c_src/spidermonkey.c
+--- basho-erlang_js-5350ed2/c_src/spidermonkey.c.old	2011-04-13 17:33:06.090340661 +0200
++++ basho-erlang_js-5350ed2/c_src/spidermonkey.c	2011-04-13 17:31:40.000000000 +0200
+@@ -35,14 +35,14 @@ static JSClass global_class = {
+ 
+ char *copy_string(const char *source) {
+   int size = strlen(source) + 1;
+-  char *retval = driver_alloc(size);
++  char *retval = (char*)driver_alloc(size);
+   memset(retval, 0, size);
+   strncpy(retval, source, size - 1);
+   return retval;
+ }
+ 
+-char *copy_jsstring(JSString *source) {
+-  char *buf = JS_GetStringBytes(source);
++char *copy_jsstring(JSContext *cx, JSString *source) {
++  char *buf = JS_EncodeString(cx, source);
+   return copy_string(buf);
+ }
+ 
+@@ -78,7 +78,7 @@ void on_error(JSContext *context, const 
+   }
+ }
+ 
+-JSBool on_branch(JSContext *context, JSScript *script) {
++JSBool on_branch(JSContext *context) {
+   spidermonkey_state *state = (spidermonkey_state *) JS_GetContextPrivate(context);
+   state->branch_count++;
+   if (state->branch_count == 550) {
+@@ -110,8 +110,8 @@ JSBool js_log(JSContext *cx, uintN argc,
+     jsval *argv = JS_ARGV(cx, vp);
+     jsval jsfilename = argv[0];
+     jsval jsoutput = argv[1];
+-    char *filename = JS_GetStringBytes(JS_ValueToString(cx, jsfilename));
+-    char *output = JS_GetStringBytes(JS_ValueToString(cx, jsoutput));
++    char *filename = JS_EncodeString(cx, JS_ValueToString(cx, jsfilename));
++    char *output = JS_EncodeString(cx, JS_ValueToString(cx, jsoutput));
+     FILE *fd = fopen(filename, "a+");
+     if (fd != NULL) {
+       write_timestamp(fd);
+@@ -150,9 +150,9 @@ spidermonkey_vm *sm_initialize(long thre
+   vm->global = JS_NewObject(vm->context, &global_class, NULL, NULL);
+   JS_InitStandardClasses(vm->context, vm->global);
+   JS_SetErrorReporter(vm->context, on_error);
+-  JS_SetBranchCallback(vm->context, on_branch);
++  JS_SetOperationCallback(vm->context, on_branch);
+   JS_SetContextPrivate(vm->context, state);
+-  JSNative *funptr = (JSNative *) *js_log;
++  JSNative funptr = (JSNative ) js_log;
+   JS_DefineFunction(vm->context, JS_GetGlobalObject(vm->context), "ejsLog", funptr,
+ 		    0, JSFUN_INTERPRETED);
+   end_request(vm);
+@@ -236,7 +236,7 @@ void free_error(spidermonkey_state *stat
+ 
+ char *sm_eval(spidermonkey_vm *vm, const char *filename, const char *code, int handle_retval) {
+   char *retval = NULL;
+-  JSScript *script;
++  JSObject *script;
+   jsval result;
+ 
+   begin_request(vm);
+@@ -253,16 +253,15 @@ char *sm_eval(spidermonkey_vm *vm, const
+       if (handle_retval) {
+ 	if (JSVAL_IS_STRING(result)) {
+ 	  JSString *str = JS_ValueToString(vm->context, result);
+-	  retval = copy_jsstring(str);
++	  retval = copy_jsstring(vm->context, str);
+ 	}
+-	else if(strcmp(JS_GetStringBytes(JS_ValueToString(vm->context, result)), "undefined") == 0) {
++	else if(strcmp(JS_EncodeString(vm->context, JS_ValueToString(vm->context, result)), "undefined") == 0) {
+ 	  retval = copy_string("{\"error\": \"Expression returned undefined\", \"lineno\": 0, \"source\": \"unknown\"}");
+ 	}
+ 	else {
+ 	  retval = copy_string("{\"error\": \"non-JSON return value\", \"lineno\": 0, \"source\": \"unknown\"}");
+ 	}
+       }
+-      JS_DestroyScript(vm->context, script);
+     }
+     else {
+       retval = error_to_json(state->error);
diff --git a/erlang-js.spec b/erlang-js.spec
index 99a5198..00fc6fc 100644
--- a/erlang-js.spec
+++ b/erlang-js.spec
@@ -4,7 +4,7 @@
 
 Name:		erlang-%{realname}
 Version:	0.5.0
-Release:	2%{?dist}
+Release:	3%{?dist}
 Summary:	A Friendly Erlang to Javascript Binding
 Group:		Development/Libraries
 License:	ASL 2.0
@@ -15,6 +15,7 @@ Patch1:		erlang-js-0001-Fix-building-of-linked-in-driver.patch
 Patch2:		erlang-js-0002-Build-with-js-1.7.0.patch
 Patch3:		erlang-js-0003-Don-t-require-make-all-for-make-test.patch
 Patch4:		erlang-js-0004-Include-eunit-headers-only-when-necessary.patch
+Patch5:		erlang-js-0005-js-1.8.5.patch
 BuildRoot:	%(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
 BuildRequires:	erlang-erts
 BuildRequires:	erlang-eunit
@@ -39,10 +40,11 @@ A Friendly Erlang to Javascript Binding.
 %patch2 -p1 -b .building_with_js_1_7_0
 %patch3	-p1 -b .dont_require_make_all
 %patch4 -p1 -b .dont_require_eunit
+%patch5 -p1 -b .js_1_8_5
 
 
 %build
-cd c_src && CFLAGS="%{optflags} -fPIC" make %{?_smp_mflags} && mv erlang_js_drv.so ../priv && cd -
+cd c_src && CFLAGS="%{optflags} -fPIC -fpermissive" make %{?_smp_mflags} && mv erlang_js_drv.so ../priv && cd -
 erlc -o ebin +debug_info src/*.erl
 
 
@@ -80,6 +82,9 @@ make %{?_smp_mflags} test
 
 
 %changelog
+* Wed Apr 13 2011 Martin Stransky <stransky at redhat.com> - 0.5.0-3
+- build fix for js 1.8.5
+
 * Fri Jan 28 2011 Peter Lemenkov <lemenkov at gmail.com> - 0.5.0-2
 - Drop unneeded runtime dependency on eunit
 


More information about the scm-commits mailing list