Created
March 9, 2016 12:45
-
-
Save leon-anavi/ed9acc03f8daacd7f566 to your computer and use it in GitHub Desktop.
0002-cargo_0.7.0.bb-fix-dbus-rs-build-for-ARM.patch
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From 581e68553e7a4c724317fed79f943dcb467ed990 Mon Sep 17 00:00:00 2001 | |
From: Leon Anavi <[email protected]> | |
Date: Thu, 25 Feb 2016 20:08:06 +0200 | |
Subject: [PATCH 2/2] cargo_0.7.0.bb: fix dbus-rs build for ARM | |
Cast correctly c_char raw pointers to fix issues while | |
building version 0.1.2 of crate dbus-rs for ARM. | |
Signed-off-by: Leon Anavi <[email protected]> | |
--- | |
recipes-devtools/cargo/cargo_0.7.0.bb | 12 ++ | |
.../cargo/files/dbus-rs/dbus-rs-arm.patch | 129 +++++++++++++++++++++ | |
2 files changed, 141 insertions(+) | |
create mode 100644 recipes-devtools/cargo/files/dbus-rs/dbus-rs-arm.patch | |
diff --git a/recipes-devtools/cargo/cargo_0.7.0.bb b/recipes-devtools/cargo/cargo_0.7.0.bb | |
index 5dd94fc..0640288 100644 | |
--- a/recipes-devtools/cargo/cargo_0.7.0.bb | |
+++ b/recipes-devtools/cargo/cargo_0.7.0.bb | |
@@ -55,3 +55,15 @@ SRCREV_git2-rs = "19b6873c1fad7dc93c9c2dac4cba339dacf16efa" | |
SRCREV_FORMAT .= "_git2-rs" | |
EXTRA_OECARGO_PATHS += "${WORKDIR}/git2-rs" | |
+ | |
+## dbus-rs | |
+SRC_URI += "\ | |
+ git://github.com/diwic/dbus-rs.git;protocol=https;name=dbus-rs;destsuffix=dbus-rs \ | |
+ file://dbus-rs/dbus-rs-arm.patch;patchdir=../dbus-rs \ | |
+" | |
+ | |
+# 0.1.2 | |
+SRCREV_dbus-rs = "c2c4c98adcf9949992ac5b0050bf17afe10868c9" | |
+ | |
+SRCREV_FORMAT .= "_dbus-rs" | |
+EXTRA_OECARGO_PATHS += "${WORKDIR}/dbus-rs" | |
diff --git a/recipes-devtools/cargo/files/dbus-rs/dbus-rs-arm.patch b/recipes-devtools/cargo/files/dbus-rs/dbus-rs-arm.patch | |
new file mode 100644 | |
index 0000000..625c62c | |
--- /dev/null | |
+++ b/recipes-devtools/cargo/files/dbus-rs/dbus-rs-arm.patch | |
@@ -0,0 +1,129 @@ | |
+diff --git a/src/lib.rs b/src/lib.rs | |
+index aac9c0f..8134dc4 100644 | |
+--- a/src/lib.rs | |
++++ b/src/lib.rs | |
+@@ -60,7 +60,7 @@ unsafe impl Send for Error {} | |
+ | |
+ fn c_str_to_slice(c: & *const libc::c_char) -> Option<&str> { | |
+ if *c == ptr::null() { None } | |
+- else { std::str::from_utf8( unsafe { CStr::from_ptr(*c).to_bytes() }).ok() } | |
++ else { std::str::from_utf8( unsafe { CStr::from_ptr(*c as *const _).to_bytes() }).ok() } | |
+ } | |
+ | |
+ fn to_c_str(n: &str) -> CString { CString::new(n.as_bytes()).unwrap() } | |
+@@ -72,7 +72,7 @@ impl Error { | |
+ let m = to_c_str(&message.replace("%","%%")); | |
+ let mut e = Error::empty(); | |
+ | |
+- unsafe { ffi::dbus_set_error(e.get_mut(), n.as_ptr(), m.as_ptr()) }; | |
++ unsafe { ffi::dbus_set_error(e.get_mut(), n.as_ptr() as *const _, m.as_ptr() as *const _) }; | |
+ e | |
+ } | |
+ | |
+@@ -272,21 +272,21 @@ impl Connection { | |
+ }; | |
+ let r = unsafe { | |
+ let user_data: *mut libc::c_void = std::mem::transmute(&*self.i); | |
+- ffi::dbus_connection_try_register_object_path(self.conn(), p.as_ptr(), &vtable, user_data, e.get_mut()) | |
++ ffi::dbus_connection_try_register_object_path(self.conn(), p.as_ptr() as *const _, &vtable, user_data, e.get_mut()) | |
+ }; | |
+ if r == 0 { Err(e) } else { Ok(()) } | |
+ } | |
+ | |
+ pub fn unregister_object_path(&self, path: &str) { | |
+ let p = to_c_str(path); | |
+- let r = unsafe { ffi::dbus_connection_unregister_object_path(self.conn(), p.as_ptr()) }; | |
++ let r = unsafe { ffi::dbus_connection_unregister_object_path(self.conn(), p.as_ptr() as *const _) }; | |
+ if r == 0 { panic!("Out of memory"); } | |
+ } | |
+ | |
+ pub fn list_registered_object_paths(&self, path: &str) -> Vec<String> { | |
+ let p = to_c_str(path); | |
+ let mut clist: *mut *mut libc::c_char = ptr::null_mut(); | |
+- let r = unsafe { ffi::dbus_connection_list_registered(self.conn(), p.as_ptr(), &mut clist) }; | |
++ let r = unsafe { ffi::dbus_connection_list_registered(self.conn(), p.as_ptr() as *const _, &mut clist) }; | |
+ if r == 0 { panic!("Out of memory"); } | |
+ let mut v = Vec::new(); | |
+ let mut i = 0; | |
+@@ -306,28 +306,28 @@ impl Connection { | |
+ pub fn register_name(&self, name: &str, flags: u32) -> Result<RequestNameReply, Error> { | |
+ let mut e = Error::empty(); | |
+ let n = to_c_str(name); | |
+- let r = unsafe { ffi::dbus_bus_request_name(self.conn(), n.as_ptr(), flags, e.get_mut()) }; | |
++ let r = unsafe { ffi::dbus_bus_request_name(self.conn(), n.as_ptr() as *const _, flags, e.get_mut()) }; | |
+ if r == -1 { Err(e) } else { Ok(unsafe { std::mem::transmute(r) }) } | |
+ } | |
+ | |
+ pub fn release_name(&self, name: &str) -> Result<ReleaseNameReply, Error> { | |
+ let mut e = Error::empty(); | |
+ let n = to_c_str(name); | |
+- let r = unsafe { ffi::dbus_bus_release_name(self.conn(), n.as_ptr(), e.get_mut()) }; | |
++ let r = unsafe { ffi::dbus_bus_release_name(self.conn(), n.as_ptr() as *const _, e.get_mut()) }; | |
+ if r == -1 { Err(e) } else { Ok(unsafe { std::mem::transmute(r) }) } | |
+ } | |
+ | |
+ pub fn add_match(&self, rule: &str) -> Result<(), Error> { | |
+ let mut e = Error::empty(); | |
+ let n = to_c_str(rule); | |
+- unsafe { ffi::dbus_bus_add_match(self.conn(), n.as_ptr(), e.get_mut()) }; | |
++ unsafe { ffi::dbus_bus_add_match(self.conn(), n.as_ptr() as *const _, e.get_mut()) }; | |
+ if e.name().is_some() { Err(e) } else { Ok(()) } | |
+ } | |
+ | |
+ pub fn remove_match(&self, rule: &str) -> Result<(), Error> { | |
+ let mut e = Error::empty(); | |
+ let n = to_c_str(rule); | |
+- unsafe { ffi::dbus_bus_remove_match(self.conn(), n.as_ptr(), e.get_mut()) }; | |
++ unsafe { ffi::dbus_bus_remove_match(self.conn(), n.as_ptr() as *const _, e.get_mut()) }; | |
+ if e.name().is_some() { Err(e) } else { Ok(()) } | |
+ } | |
+ | |
+diff --git a/src/message.rs b/src/message.rs | |
+index 23871f8..e3dd021 100644 | |
+--- a/src/message.rs | |
++++ b/src/message.rs | |
+@@ -126,7 +126,7 @@ fn iter_append_array(i: &mut ffi::DBusMessageIter, a: &[MessageItem], t: TypeSig | |
+ let mut subiter = new_dbus_message_iter(); | |
+ let atype = to_c_str(&t); | |
+ | |
+- assert!(unsafe { ffi::dbus_message_iter_open_container(i, ffi::DBUS_TYPE_ARRAY, atype.as_ptr(), &mut subiter) } != 0); | |
++ assert!(unsafe { ffi::dbus_message_iter_open_container(i, ffi::DBUS_TYPE_ARRAY, atype.as_ptr() as *const _, &mut subiter) } != 0); | |
+ for item in a.iter() { | |
+ // assert!(item.type_sig() == t); | |
+ item.iter_append(&mut subiter); | |
+@@ -148,7 +148,7 @@ fn iter_append_struct(i: &mut ffi::DBusMessageIter, a: &[MessageItem]) { | |
+ fn iter_append_variant(i: &mut ffi::DBusMessageIter, a: &MessageItem) { | |
+ let mut subiter = new_dbus_message_iter(); | |
+ let atype = to_c_str(&format!("{}", a.array_type() as u8 as char)); | |
+- assert!(unsafe { ffi::dbus_message_iter_open_container(i, ffi::DBUS_TYPE_VARIANT, atype.as_ptr(), &mut subiter) } != 0); | |
++ assert!(unsafe { ffi::dbus_message_iter_open_container(i, ffi::DBUS_TYPE_VARIANT, atype.as_ptr() as *const _, &mut subiter) } != 0); | |
+ a.iter_append(&mut subiter); | |
+ assert!(unsafe { ffi::dbus_message_iter_close_container(i, &mut subiter) } != 0); | |
+ } | |
+@@ -481,7 +481,7 @@ impl Message { | |
+ init_dbus(); | |
+ let (d, p, i, m) = (to_c_str(destination), to_c_str(path), to_c_str(iface), to_c_str(method)); | |
+ let ptr = unsafe { | |
+- ffi::dbus_message_new_method_call(d.as_ptr(), p.as_ptr(), i.as_ptr(), m.as_ptr()) | |
++ ffi::dbus_message_new_method_call(d.as_ptr() as *const _, p.as_ptr() as *const _, i.as_ptr() as *const _, m.as_ptr() as *const _) | |
+ }; | |
+ if ptr == ptr::null_mut() { None } else { Some(Message { msg: ptr} ) } | |
+ } | |
+@@ -490,7 +490,7 @@ impl Message { | |
+ init_dbus(); | |
+ let (p, i, m) = (to_c_str(path), to_c_str(iface), to_c_str(method)); | |
+ let ptr = unsafe { | |
+- ffi::dbus_message_new_signal(p.as_ptr(), i.as_ptr(), m.as_ptr()) | |
++ ffi::dbus_message_new_signal(p.as_ptr() as *const _, i.as_ptr() as *const _, m.as_ptr() as *const _) | |
+ }; | |
+ if ptr == ptr::null_mut() { None } else { Some(Message { msg: ptr} ) } | |
+ } | |
+@@ -502,7 +502,7 @@ impl Message { | |
+ | |
+ pub fn new_error(m: &Message, error_name: &str, error_message: &str) -> Option<Message> { | |
+ let (en, em) = (to_c_str(error_name), to_c_str(error_message)); | |
+- let ptr = unsafe { ffi::dbus_message_new_error(m.msg, en.as_ptr(), em.as_ptr()) }; | |
++ let ptr = unsafe { ffi::dbus_message_new_error(m.msg, en.as_ptr() as *const _, em.as_ptr() as *const _) }; | |
+ if ptr == ptr::null_mut() { None } else { Some(Message { msg: ptr} ) } | |
+ } | |
+ | |
-- | |
2.1.4 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment