[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