[gjs/f16] add fix for failure on PPC, bugzilla 749604
Karsten Hopp
karsten at fedoraproject.org
Fri Dec 2 17:13:10 UTC 2011
commit d5c4503ba79c9ab9414fb6958e19ed8e04f5a222
Author: Karsten Hopp <karsten at redhat.com>
Date: Fri Dec 2 18:14:03 2011 +0100
add fix for failure on PPC, bugzilla 749604
gjs-1.30.0-749604.patch | 120 +++++++++++++++++++++++++++++++++++++++++++++++
gjs.spec | 7 ++-
2 files changed, 126 insertions(+), 1 deletions(-)
---
diff --git a/gjs-1.30.0-749604.patch b/gjs-1.30.0-749604.patch
new file mode 100644
index 0000000..b35b38d
--- /dev/null
+++ b/gjs-1.30.0-749604.patch
@@ -0,0 +1,120 @@
+diff -up newer-but-still-old/gi/function.c.fix-ffi-on-big-endian newer-but-still-old/gi/function.c
+--- newer-but-still-old/gi/function.c.fix-ffi-on-big-endian 2011-11-28 15:24:07.453082729 -0600
++++ newer-but-still-old/gi/function.c 2011-11-29 12:25:58.317567749 -0600
+@@ -166,6 +166,8 @@ gjs_callback_closure(ffi_cif *cif,
+ int i, n_args, n_jsargs;
+ jsval *jsargs, rval;
+ GITypeInfo ret_type;
++ GITypeTag return_tag;
++ GArgument return_value;
+ gboolean success = FALSE;
+
+ trampoline = data;
+@@ -215,10 +217,55 @@ gjs_callback_closure(ffi_cif *cif,
+ GJS_ARGUMENT_RETURN_VALUE,
+ FALSE,
+ TRUE,
+- result)) {
++ &return_value)) {
+ goto out;
+ }
+
++ return_tag = g_type_info_get_tag(&ret_type);
++ switch (return_tag) {
++ case GI_TYPE_TAG_INT8:
++ *(ffi_sarg *) result = (gint8) return_value.v_int8;
++ case GI_TYPE_TAG_UINT8:
++ *(ffi_arg *) result = (guint8) return_value.v_uint8;
++ break;
++ case GI_TYPE_TAG_INT16:
++ *(ffi_sarg *) result = (gint16) return_value.v_int16;
++ break;
++ case GI_TYPE_TAG_UINT16:
++ *(ffi_arg *) result = (guint16) return_value.v_uint16;
++ break;
++ case GI_TYPE_TAG_INT32:
++ *(ffi_sarg *) result = (gint32) return_value.v_int32;
++ break;
++ case GI_TYPE_TAG_UINT32:
++ case GI_TYPE_TAG_BOOLEAN:
++ case GI_TYPE_TAG_UNICHAR:
++ *(ffi_arg *) result = (guint32) return_value.v_uint32;
++
++ break;
++ case GI_TYPE_TAG_INTERFACE:
++ {
++ GIBaseInfo* interface_info;
++ GIInfoType interface_type;
++
++ interface_info = g_type_info_get_interface(&ret_type);
++ interface_type = g_base_info_get_type(interface_info);
++
++ switch (interface_type) {
++ case GI_INFO_TYPE_ENUM:
++ case GI_INFO_TYPE_FLAGS:
++ *(ffi_sarg *) result = (gint32) return_value.v_long;
++ break;
++ default:
++ *(ffi_arg *) result = (ffi_arg) return_value.v_pointer;
++ break;
++ }
++ }
++ default:
++ *(ffi_arg *) result = (ffi_arg) return_value.v_pointer;
++ break;
++ }
++
+ success = TRUE;
+
+ out:
+@@ -673,6 +720,50 @@ gjs_invoke_c_function(JSContext *co
+
+ g_assert_cmpuint(next_rval, <, function->js_out_argc);
+
++ switch (return_tag) {
++ case GI_TYPE_TAG_INT8:
++ return_value.v_int8 = (gint8) return_value.v_long;
++ case GI_TYPE_TAG_UINT8:
++ return_value.v_uint8 = (guint8) return_value.v_ulong;
++ break;
++ case GI_TYPE_TAG_INT16:
++ return_value.v_int16 = (gint16) return_value.v_long;
++ break;
++ case GI_TYPE_TAG_UINT16:
++ return_value.v_uint16 = (guint16) return_value.v_ulong;
++ break;
++ case GI_TYPE_TAG_INT32:
++ return_value.v_int32 = (gint32) return_value.v_long;
++ break;
++ case GI_TYPE_TAG_UINT32:
++ case GI_TYPE_TAG_BOOLEAN:
++ case GI_TYPE_TAG_UNICHAR:
++ return_value.v_uint32 = (guint32) return_value.v_ulong;
++
++ break;
++ case GI_TYPE_TAG_INTERFACE:
++ {
++ GIBaseInfo* interface_info;
++ GIInfoType interface_type;
++
++ interface_info = g_type_info_get_interface(&return_info);
++ interface_type = g_base_info_get_type(interface_info);
++
++
++ switch(interface_type) {
++ case GI_INFO_TYPE_ENUM:
++ case GI_INFO_TYPE_FLAGS:
++ return_value.v_int32 = (gint32) return_value.v_long;
++ break;
++ default:
++ break;
++ }
++ }
++ break;
++ default:
++ break;
++ }
++
+ array_length_pos = g_type_info_get_array_length(&return_info);
+ if (array_length_pos >= 0) {
+ GIArgInfo array_length_arg;
diff --git a/gjs.spec b/gjs.spec
index 757c9f8..b7575d7 100644
--- a/gjs.spec
+++ b/gjs.spec
@@ -1,6 +1,6 @@
Name: gjs
Version: 1.30.0
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Javascript Bindings for GNOME
Group: System Environment/Libraries
@@ -12,6 +12,7 @@ License: MIT and (MPLv1.1 or GPLv2+ or LGPLv2+)
URL: http://live.gnome.org/Gjs/
#VCS: git://git.gnome.org/gjs
Source0: http://download.gnome.org/sources/%{name}/1.29/%{name}-%{version}.tar.xz
+Patch0: gjs-1.30.0-749604.patch
BuildRequires: js-devel
BuildRequires: cairo-devel
@@ -39,6 +40,7 @@ Files for development with %{name}.
%prep
%setup -q
+%patch0 -p1 -b .749604
rm -f configure
@@ -80,6 +82,9 @@ find %{buildroot} -name '*.la' -exec rm -f {} ';'
%{_libdir}/*.so
%changelog
+* Fri Dec 02 2011 Karsten Hopp <karsten at redhat.com> 1.30.0-2
+- add fix for failure on PPC, bugzilla 749604
+
* Tue Sep 27 2011 Ray <rstrode at redhat.com> - 1.30.0-1
- Update to 1.30.0
More information about the scm-commits
mailing list