From 5635e51e89c5ff7e645dc1ce9f4f9ae38471e052 Mon Sep 17 00:00:00 2001 From: Leon Anavi Date: Mon, 12 Dec 2016 15:35:00 +0200 Subject: [PATCH 1/4] libgit2: Add to recipes The latest version of RVI SOTA Client depends on the Git linkable library and the SOTA client cannot be built without libgit2. [GDP-517] rvi-sota-client-git-r0 compiling failed Signed-off-by: Leon Anavi --- .../libgit2/libgit2-release.inc | 2 ++ .../recipes-support/libgit2/libgit2.inc | 19 +++++++++++++++++++ .../recipes-support/libgit2/libgit2_0.24.1.bb | 4 ++++ 3 files changed, 25 insertions(+) create mode 100644 meta-genivi-dev/recipes-support/libgit2/libgit2-release.inc create mode 100644 meta-genivi-dev/recipes-support/libgit2/libgit2.inc create mode 100644 meta-genivi-dev/recipes-support/libgit2/libgit2_0.24.1.bb diff --git a/meta-genivi-dev/recipes-support/libgit2/libgit2-release.inc b/meta-genivi-dev/recipes-support/libgit2/libgit2-release.inc new file mode 100644 index 0000000..62a13cf --- /dev/null +++ b/meta-genivi-dev/recipes-support/libgit2/libgit2-release.inc @@ -0,0 +1,2 @@ +require libgit2.inc +SRC_URI = "https://github.com/libgit2/libgit2/archive/v${PV}.tar.gz" diff --git a/meta-genivi-dev/recipes-support/libgit2/libgit2.inc b/meta-genivi-dev/recipes-support/libgit2/libgit2.inc new file mode 100644 index 0000000..fe0f647 --- /dev/null +++ b/meta-genivi-dev/recipes-support/libgit2/libgit2.inc @@ -0,0 +1,19 @@ +SUMMARY = "the Git linkable library" +HOMEPAGE = "http://libgit2.github.com/" +LICENSE = "GPL-2.0-with-GCC-exception" + +DEPENDS = "openssl zlib" + +inherit cmake + +# CLAR = tests, needs python-native +EXTRA_OECMAKE = "\ + -DTHREADSAFE=ON \ + -DBUILD_CLAR=OFF \ + -DSHA1_TYPE="builtin" \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DBUILD_SHARED_LIBS=OFF \ + -DBUILD_EXAMPLES=OFF \ +" + +BBCLASSEXTEND = "native" diff --git a/meta-genivi-dev/recipes-support/libgit2/libgit2_0.24.1.bb b/meta-genivi-dev/recipes-support/libgit2/libgit2_0.24.1.bb new file mode 100644 index 0000000..2d0c6ff --- /dev/null +++ b/meta-genivi-dev/recipes-support/libgit2/libgit2_0.24.1.bb @@ -0,0 +1,4 @@ +LIC_FILES_CHKSUM = "file://COPYING;md5=34197a479f637beb9e09e56893f48bc2" +SRC_URI[md5sum] = "3674ca2d40388b1175e25b6f5a3a82ad" +SRC_URI[sha256sum] = "60198cbb34066b9b5c1613d15c0479f6cd25f4aef42f7ec515cd1cc13a77fede" +require libgit2-release.inc From f156a64c8583879452d71d3c5c2d9d7397a01a8b Mon Sep 17 00:00:00 2001 From: Leon Anavi Date: Mon, 12 Dec 2016 15:38:24 +0200 Subject: [PATCH 2/4] libssh2: Add to recipes The latest version of RVI SOTA Client depends on libssh2 therefore it has to be added to the recipes. [GDP-517] rvi-sota-client-git-r0 compiling failed Signed-off-by: Leon Anavi --- meta-genivi-dev/recipes-support/libssh2/libssh2_%.bbappend | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 meta-genivi-dev/recipes-support/libssh2/libssh2_%.bbappend diff --git a/meta-genivi-dev/recipes-support/libssh2/libssh2_%.bbappend b/meta-genivi-dev/recipes-support/libssh2/libssh2_%.bbappend new file mode 100644 index 0000000..ce4807e --- /dev/null +++ b/meta-genivi-dev/recipes-support/libssh2/libssh2_%.bbappend @@ -0,0 +1,2 @@ +# meta-oe/recipes-support/libssh2 +BBCLASSEXTEND = "native" From d100e4caff045f84c8ab2080baee76acb7662216 Mon Sep 17 00:00:00 2001 From: Leon Anavi Date: Mon, 12 Dec 2016 15:40:30 +0200 Subject: [PATCH 3/4] lshw: Add to recipes The latest version of RVI SOTA Client depends on hardware lister and the SOTA client cannot be built without lshw. [GDP-517] rvi-sota-client-git-r0 compiling failed Signed-off-by: Leon Anavi --- .../lshw/files/cross-compile.patch | 39 +++++++++++++++++++ .../recipes-support/lshw/lshw_02.16.bb | 36 +++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 meta-genivi-dev/recipes-support/lshw/files/cross-compile.patch create mode 100644 meta-genivi-dev/recipes-support/lshw/lshw_02.16.bb diff --git a/meta-genivi-dev/recipes-support/lshw/files/cross-compile.patch b/meta-genivi-dev/recipes-support/lshw/files/cross-compile.patch new file mode 100644 index 0000000..221b7e5 --- /dev/null +++ b/meta-genivi-dev/recipes-support/lshw/files/cross-compile.patch @@ -0,0 +1,39 @@ +--- + src/Makefile | 2 +- + src/core/Makefile | 2 +- + src/gui/Makefile | 4 ++-- + 3 files changed, 4 insertions(+), 4 deletions(-) + +--- a/src/Makefile ++++ b/src/Makefile +@@ -18,7 +18,7 @@ export MANDIR + export DATADIR + export SQLITE + +-CXX?=c++ ++CXX?=$(CROSS_COMPILE)c++ + INCLUDES=-I./core/ + DEFINES=-DPREFIX=\"$(PREFIX)\" -DSBINDIR=\"$(SBINDIR)\" -DMANDIR=\"$(MANDIR)\" -DDATADIR=\"$(DATADIR)\" + CXXFLAGS=-g -Wall -g $(INCLUDES) $(DEFINES) $(RPM_OPT_FLAGS) +--- a/src/core/Makefile ++++ b/src/core/Makefile +@@ -1,6 +1,6 @@ + PACKAGENAME?=lshw + +-CXX=c++ ++CXX?=$(CROSS_COMPILE)c++ + INCLUDES= + DEFINES=-DPREFIX=\"$(PREFIX)\" -DSBINDIR=\"$(SBINDIR)\" -DMANDIR=\"$(MANDIR)\" -DDATADIR=\"$(DATADIR)\" + CXXFLAGS?=-g -Wall $(INCLUDES) $(DEFINES) $(RPM_OPT_FLAGS) +--- a/src/gui/Makefile ++++ b/src/gui/Makefile +@@ -1,7 +1,7 @@ + PACKAGENAME?=lshw + +-CXX?=c++ +-CC?=cc ++CXX?=$(CROSS_COMPILE)c++ ++CC?=$(CROSS_COMPILE)cc + STRIP?=strip + OBJCOPY?=objcopy + diff --git a/meta-genivi-dev/recipes-support/lshw/lshw_02.16.bb b/meta-genivi-dev/recipes-support/lshw/lshw_02.16.bb new file mode 100644 index 0000000..3a61dab --- /dev/null +++ b/meta-genivi-dev/recipes-support/lshw/lshw_02.16.bb @@ -0,0 +1,36 @@ +# From meta-linaro +# http://git.linaro.org/openembedded/meta-linaro.git + +DESCRIPTION = "A small tool to provide detailed information on the hardware \ +configuration of the machine. It can report exact memory configuration, \ +firmware version, mainboard configuration, CPU version and speed, cache \ +configuration, bus speed, etc. on DMI-capable or EFI systems." +SUMMARY = "Hardware lister" +HOMEPAGE = "http://ezix.org/project/wiki/HardwareLiSter" +SECTION = "console/tools" +LICENSE = "GPLv2+" +LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f" +DEPENDS = "pciutils \ + usbutils" +COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux" + +PR="r1" + +SRC_URI="http://ezix.org/software/files/lshw-B.${PV}.tar.gz \ + file://cross-compile.patch" + +SRC_URI[md5sum] = "67479167add605e8f001097c30e96d0d" +SRC_URI[sha256sum] = "809882429555b93259785cc261dbff04c16c93d064db5f445a51945bc47157cb" + +S="${WORKDIR}/lshw-B.${PV}" + +do_compile() { + # build core only - don't ship gui + oe_runmake -C src core +} + +do_install() { + oe_runmake install DESTDIR=${D} + # data files provided by dependencies + rm -rf ${D}/usr/share/lshw +} From 8bfe75086c654f6b56dda267d45eb937a097d84f Mon Sep 17 00:00:00 2001 From: Leon Anavi Date: Mon, 12 Dec 2016 15:41:35 +0200 Subject: [PATCH 4/4] rvi-sota-client: Update version Update the version of RVI SOTA Client to the one used in Automotive Grade Linux (AGL). This version includes numerous fixes and improvements. Please check the git log of the project for details. Please note that this patch depends on the update of the version of meta-rust in repository genivi-dev-platform. [GDP-517] rvi-sota-client-git-r0 compiling failed Signed-off-by: Leon Anavi --- ...orrectly-c_char-raw-pointers-for-ARM.patch | 146 --------------- .../rvi-sota-client/rvi-sota-client.service | 9 - .../rvi-sota-client/rvi-sota-client_git.bb | 169 +++++++++++++----- 3 files changed, 127 insertions(+), 197 deletions(-) delete mode 100644 meta-genivi-dev/recipes-sota/rvi-sota-client/files/dbus-rs/0001-Cast-correctly-c_char-raw-pointers-for-ARM.patch delete mode 100644 meta-genivi-dev/recipes-sota/rvi-sota-client/rvi-sota-client/rvi-sota-client.service 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..8a565d2 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,143 @@ -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" - -DEPENDS += "dbus openssl" -RDEPENDS_${PN} += "dbus-lib libcrypto libssl" +SRCREV = "72e6096d9122cde2d9ece4e2693bd470e2b57abe" -SYSTEMD_SERVICE_${PN} = "rvi-sota-client.service" +# Generate with: +# git describe --tags | cut -b2- +PV = "v0.2.22-4-g72e6096" -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" - -SRCREV_FORMAT .= "_dbus-rs" -EXTRA_OECARGO_PATHS += "${WORKDIR}/dbus-rs" - -## rust-openssl -SRC_URI += "git://github.com/sfackler/rust-openssl.git;protocol=https;name=rust-openssl;destsuffix=rust-openssl " - -# 0.7.10 -SRCREV_rust-openssl = "d6bc3bb16f2673f610e9310041fc030ea9b90187" +SRC_URI[index.md5sum] = "79f10f436dbf26737cc80445746f16b4" +SRC_URI[index.sha256sum] = "86114b93f1f51aaf0aec3af0751d214b351f4ff9839ba031315c1b19dcbb1913" + +SYSTEMD_SERVICE_${PN} = "sota_client.service" + +DEPENDS += " openssl " +RDEPENDS_${PN} = " libcrypto \ + libssl \ + dbus \ + bash \ + lshw \ + jq \ + " +export SOTA_VERSION = "${PV}" + +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 +} -SRCREV_FORMAT .= "_rust-openssl" -EXTRA_OECARGO_PATHS += "${WORKDIR}/rust-openssl" +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) +} -## hyper -SRC_URI += "git://github.com/hyperium/hyper.git;protocol=https;name=hyper;destsuffix=hyper " +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} -# 0.9.1 -SRCREV_hyper = "4828437551c7f5ed3f54acb1c1bf1fd50a6a3516" + install -d ${D}${systemd_unitdir}/system + install -c ${S}/run/sota_client.service ${D}${systemd_unitdir}/system -SRCREV_FORMAT .= "_hyper" -EXTRA_OECARGO_PATHS += "${WORKDIR}/hyper" + install -d ${D}${sysconfdir} + install -c ${S}/run/sota_certificates ${D}${sysconfdir} +}