diff --git a/meta-genivi-dev/recipes-sota/rvi-sota-client/files/dbus-rs/0001-Cast-correctly-c_char-raw-pointers-for-ARM.patch b/meta-genivi-dev/recipes-sota/rvi-sota-client/files/dbus-rs/0001-Cast-correctly-c_char-raw-pointers-for-ARM.patch deleted file mode 100644 index 2d3dbed..0000000 --- a/meta-genivi-dev/recipes-sota/rvi-sota-client/files/dbus-rs/0001-Cast-correctly-c_char-raw-pointers-for-ARM.patch +++ /dev/null @@ -1,146 +0,0 @@ -From 768202d3223813e71848758ecafcfeab276d9101 Mon Sep 17 00:00:00 2001 -From: Leon Anavi -Date: Sat, 12 Mar 2016 17:52:02 +0200 -Subject: [PATCH] Cast correctly c_char raw pointers for ARM - -Fix the build of crate dbus-rs (version 0.1.2) for ARM -with correct casts of c_char raw pointers. - -Signed-off-by: Leon Anavi ---- - src/lib.rs | 18 +++++++++--------- - src/message.rs | 10 +++++----- - 2 files changed, 14 insertions(+), 14 deletions(-) - -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 { - 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 { - 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 { - 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 { - 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 - diff --git a/meta-genivi-dev/recipes-sota/rvi-sota-client/rvi-sota-client/rvi-sota-client.service b/meta-genivi-dev/recipes-sota/rvi-sota-client/rvi-sota-client/rvi-sota-client.service deleted file mode 100644 index d99f9d6..0000000 --- a/meta-genivi-dev/recipes-sota/rvi-sota-client/rvi-sota-client/rvi-sota-client.service +++ /dev/null @@ -1,9 +0,0 @@ -[Unit] -Description=RVI SOTA Client - -[Service] -User=root -ExecStart=/usr/bin/run.sh - -[Install] -WantedBy=multi-user.target diff --git a/meta-genivi-dev/recipes-sota/rvi-sota-client/rvi-sota-client_git.bb b/meta-genivi-dev/recipes-sota/rvi-sota-client/rvi-sota-client_git.bb index 710a279..7949491 100644 --- a/meta-genivi-dev/recipes-sota/rvi-sota-client/rvi-sota-client_git.bb +++ b/meta-genivi-dev/recipes-sota/rvi-sota-client/rvi-sota-client_git.bb @@ -1,58 +1,145 @@ -DESCRIPTION = "SOTA Reference Implementation project - Client" +DESCRIPTION = "sota-client rust recipe" HOMEPAGE = "https://github.com/advancedtelematic/rvi_sota_client" + LICENSE = "MPL-2.0" +LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=65d26fcc2f35ea6a181ac777e42db1ea" inherit cargo systemd -SRC_URI = "git://github.com/advancedtelematic/rvi_sota_client.git;protocol=https \ - file://rvi-sota-client.service \ - " -SRCREV="f4904e085b29092e3ff6c2accfd2fb59ef049290" -LIC_FILES_CHKSUM="file://LICENSE;md5=65d26fcc2f35ea6a181ac777e42db1ea" - S = "${WORKDIR}/git" -BBCLASSEXTEND = "native" +SRCREV = "72e6096d9122cde2d9ece4e2693bd470e2b57abe" -DEPENDS += "dbus openssl" -RDEPENDS_${PN} += "dbus-lib libcrypto libssl" +# Generate with: +# git describe --tags | cut -b2- +PV = "v0.2.22-4-g72e6096" -SYSTEMD_SERVICE_${PN} = "rvi-sota-client.service" - -do_install_append() { - install -m 0755 -p -D ${S}/client.toml ${D}/var/sota/client.toml - install -m 0755 -p -D ${S}/docker/run.sh ${D}${bindir}/run.sh - if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then - install -p -D ${WORKDIR}/rvi-sota-client.service ${D}${systemd_unitdir}/system/rvi-sota-client.service - fi -} +BBCLASSEXTEND = "native" -## dbus-rs -SRC_URI += "\ - git://github.com/diwic/dbus-rs.git;protocol=https;name=dbus-rs;destsuffix=dbus-rs \ - file://dbus-rs/0001-Cast-correctly-c_char-raw-pointers-for-ARM.patch;patchdir=../dbus-rs \ +FILES_${PN} = " \ + ${bindir}/sota_client \ + ${bindir}/system_info.sh \ + ${sysconfdir}/sota_client.version \ + ${sysconfdir}/sota_certificates \ + ${systemd_unitdir}/system/sota_client.service \ + ${bindir}/sota_ostree.sh \ + " + +SRC_URI = " \ +crate://crates.io/aho-corasick/0.5.3 \ +crate://crates.io/time/0.1.35 \ +crate://crates.io/url/1.2.1 \ +crate://crates.io/ws2_32-sys/0.2.1 \ +crate://crates.io/hyper/0.9.4 \ +crate://crates.io/log/0.3.6 \ +crate://crates.io/unicase/1.4.0 \ +crate://crates.io/bitflags/0.7.0 \ +crate://crates.io/bit-set/0.2.0 \ +crate://crates.io/lazy_static/0.2.1 \ +crate://crates.io/rust-crypto/0.2.36 \ +crate://crates.io/typeable/0.1.2 \ +crate://crates.io/pkg-config/0.3.8 \ +crate://crates.io/httparse/1.1.2 \ +crate://crates.io/openssl/0.8.3 \ +crate://crates.io/user32-sys/0.2.0 \ +crate://crates.io/regex/0.1.77 \ +crate://crates.io/unicode-normalization/0.1.2 \ +crate://crates.io/idna/0.1.0 \ +crate://crates.io/unicode-bidi/0.2.3 \ +crate://crates.io/rand/0.3.14 \ +crate://crates.io/gcc/0.3.37 \ +crate://crates.io/chan/0.1.18 \ +crate://crates.io/kernel32-sys/0.2.2 \ +crate://crates.io/winapi/0.2.8 \ +crate://crates.io/crossbeam/0.2.10 \ +crate://crates.io/bitflags/0.4.0 \ +crate://crates.io/thread-id/2.0.0 \ +crate://crates.io/mime/0.2.2 \ +crate://crates.io/thread_local/0.2.7 \ +crate://crates.io/utf8-ranges/0.1.3 \ +crate://crates.io/net2/0.2.26 \ +crate://crates.io/dbus/0.4.1 \ +crate://crates.io/winapi-build/0.1.1 \ +crate://crates.io/chan-signal/0.1.7 \ +crate://crates.io/bit-vec/0.4.3 \ +crate://crates.io/toml/0.2.1 \ +crate://crates.io/quick-error/0.2.2 \ +crate://crates.io/ws/0.5.3 \ +crate://crates.io/traitobject/0.0.1 \ +crate://crates.io/cfg-if/0.1.0 \ +crate://crates.io/matches/0.1.3 \ +crate://crates.io/getopts/0.2.14 \ +crate://crates.io/sha1/0.2.0 \ +crate://crates.io/openssl-sys/0.7.17 \ +crate://crates.io/cookie/0.2.5 \ +crate://crates.io/libressl-pnacl-sys/2.1.6 \ +crate://crates.io/language-tags/0.2.2 \ +crate://crates.io/semver/0.1.20 \ +crate://crates.io/unix_socket/0.5.0 \ +crate://crates.io/memchr/0.1.11 \ +crate://crates.io/gdi32-sys/0.2.0 \ +crate://crates.io/nom/1.2.4 \ +crate://crates.io/mio/0.5.1 \ +crate://crates.io/tempdir/0.3.5 \ +crate://crates.io/miow/0.1.3 \ +crate://crates.io/pnacl-build-helper/1.4.10 \ +crate://crates.io/libc/0.2.17 \ +crate://crates.io/nix/0.5.1 \ +crate://crates.io/rustc_version/0.1.7 \ +crate://crates.io/slab/0.1.3 \ +crate://crates.io/rustc-serialize/0.3.19 \ +crate://crates.io/env_logger/0.3.5 \ +crate://crates.io/vecio/0.1.0 \ +crate://crates.io/rotor/0.6.3 \ +crate://crates.io/openssl-sys-extras/0.7.14 \ +crate://crates.io/regex-syntax/0.3.7 \ +crate://crates.io/bytes/0.3.0 \ +crate://crates.io/void/1.0.2 \ +crate://crates.io/spmc/0.2.1 \ +crate://crates.io/openssl-verify/0.1.0 \ +crate-index://crates.io/7670a5aa394d0dcd7598905b352d1634ca74d84a \ +git://github.com/advancedtelematic/rvi_sota_client.git;protocol=https \ " -# 0.1.2 -SRCREV_dbus-rs = "c2c4c98adcf9949992ac5b0050bf17afe10868c9" +#git://github.com/advancedtelematic/rvi_sota_client -SRCREV_FORMAT .= "_dbus-rs" -EXTRA_OECARGO_PATHS += "${WORKDIR}/dbus-rs" +SRC_URI[index.md5sum] = "79f10f436dbf26737cc80445746f16b4" +SRC_URI[index.sha256sum] = "86114b93f1f51aaf0aec3af0751d214b351f4ff9839ba031315c1b19dcbb1913" -## rust-openssl -SRC_URI += "git://github.com/sfackler/rust-openssl.git;protocol=https;name=rust-openssl;destsuffix=rust-openssl " +SYSTEMD_SERVICE_${PN} = "sota_client.service" -# 0.7.10 -SRCREV_rust-openssl = "d6bc3bb16f2673f610e9310041fc030ea9b90187" +DEPENDS += " openssl " +RDEPENDS_${PN} = " libcrypto \ + libssl \ + dbus \ + bash \ + lshw \ + jq \ + " +export SOTA_VERSION = "${PV}" -SRCREV_FORMAT .= "_rust-openssl" -EXTRA_OECARGO_PATHS += "${WORKDIR}/rust-openssl" +do_compile_prepend() { + # Fetch and build the specific build of hyper that is specified in cargo.toml. + # meta-rust doesn't support fetching crates that don't point to a specific tag + # and rvi-sota-client needs a specific work-around to function correctly. + make rust-openssl +} -## hyper -SRC_URI += "git://github.com/hyperium/hyper.git;protocol=https;name=hyper;destsuffix=hyper " +do_compile_append() { + # Ensure that the 'make rust-openssl' above resulted in the local build of + # rust-openssl being used rather than the default one. + strings target/${TARGET_SYS}/release/sota_client | grep ${EXTENDPE}${PV}-${PR}/git/rust-openssl -q || (bberror "local rust-open ssl package not used"; exit 1) +} -# 0.9.1 -SRCREV_hyper = "4828437551c7f5ed3f54acb1c1bf1fd50a6a3516" +do_install() { + install -d ${D}${bindir} + install -m 0755 target/${TARGET_SYS}/release/sota_client ${D}${bindir} + install -m 0755 run/system_info.sh ${D}${bindir} + install -m 0755 run/sota_ostree.sh ${D}${bindir} -SRCREV_FORMAT .= "_hyper" -EXTRA_OECARGO_PATHS += "${WORKDIR}/hyper" + install -d ${D}${systemd_unitdir}/system + install -c ${S}/run/sota_client.service ${D}${systemd_unitdir}/system + + install -d ${D}${sysconfdir} + install -c ${S}/run/sota_certificates ${D}${sysconfdir} +}