summaryrefslogtreecommitdiffstats
path: root/meta-sota
diff options
context:
space:
mode:
authorAnton Gerasimov <anton@advancedtelematic.com>2016-10-28 14:08:40 +0200
committerAnton Gerasimov <anton@advancedtelematic.com>2016-10-31 18:21:26 +0100
commitbbe9cf8fe9b1377e6f08c391df4308776d29e141 (patch)
tree01d309f441b157b4a42751825ff6efe282dcb730 /meta-sota
parent9df92779f86367df2dc0a794b1fb4ae954609b7d (diff)
Update rvi-sota-client
Change-Id: I1d5ceb776427298d46ab26dab2c822041dff00e0 Signed-off-by: Anton Gerasimov <anton@advancedtelematic.com>
Diffstat (limited to 'meta-sota')
-rw-r--r--meta-sota/recipes-sota/rvi-sota-client/files/dbus-rs/0001-Cast-correctly-c_char-raw-pointers-for-ARM.patch146
-rw-r--r--meta-sota/recipes-sota/rvi-sota-client/rvi-sota-client/rvi-sota-client.service9
-rw-r--r--meta-sota/recipes-sota/rvi-sota-client/rvi-sota-client_git.bb166
-rw-r--r--meta-sota/recipes-support/libgit2/libgit2-release.inc2
-rw-r--r--meta-sota/recipes-support/libgit2/libgit2.inc19
-rw-r--r--meta-sota/recipes-support/libgit2/libgit2_0.24.1.bb4
-rw-r--r--meta-sota/recipes-support/libssh2/libssh2_%.bbappend2
-rw-r--r--meta-sota/recipes-support/lshw/files/cross-compile.patch39
-rw-r--r--meta-sota/recipes-support/lshw/lshw_02.16.bb36
9 files changed, 220 insertions, 203 deletions
diff --git a/meta-sota/recipes-sota/rvi-sota-client/files/dbus-rs/0001-Cast-correctly-c_char-raw-pointers-for-ARM.patch b/meta-sota/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-sota/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 <leon.anavi@konsulko.com>
-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 <leon.anavi@konsulko.com>
----
- 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<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
-
diff --git a/meta-sota/recipes-sota/rvi-sota-client/rvi-sota-client/rvi-sota-client.service b/meta-sota/recipes-sota/rvi-sota-client/rvi-sota-client/rvi-sota-client.service
deleted file mode 100644
index d99f9d6..0000000
--- a/meta-sota/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-sota/recipes-sota/rvi-sota-client/rvi-sota-client_git.bb b/meta-sota/recipes-sota/rvi-sota-client/rvi-sota-client_git.bb
index b990272..c6cb0bb 100644
--- a/meta-sota/recipes-sota/rvi-sota-client/rvi-sota-client_git.bb
+++ b/meta-sota/recipes-sota/rvi-sota-client/rvi-sota-client_git.bb
@@ -1,58 +1,128 @@
-DESCRIPTION = "SOTA Reference Implementation project - Client"
+DESCRIPTION = "sota-client rust recipe"
HOMEPAGE = "https://github.com/advancedtelematic/rvi_sota_client"
+
LICENSE = "MPL-2.0"
-inherit cargo systemd
+LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=65d26fcc2f35ea6a181ac777e42db1ea"
-SRC_URI = "git://github.com/advancedtelematic/rvi_sota_client.git;protocol=https \
- file://rvi-sota-client.service \
- "
-SRCREV="825be11b03f89c52e5441b3d26e1cbf63fd313dd"
-LIC_FILES_CHKSUM="file://LICENSE;md5=65d26fcc2f35ea6a181ac777e42db1ea"
+inherit cargo systemd
S = "${WORKDIR}/git"
-BBCLASSEXTEND = "native"
-
-DEPENDS += "dbus openssl"
-RDEPENDS_${PN} += "dbus-lib libcrypto libssl bash"
+SRCREV = "484e98981f5ddbf61a9e4ca6190c9f2c2fcdec4c"
+PV = "0.2.17.5.g484e989"
+PR = "${SRCPV}"
-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} = " \
+ /usr/bin/sota_client \
+ /usr/bin/system_info.sh \
+ /etc/sota_client.version \
+ /etc/sota_certificates \
+ ${base_libdir}/systemd/system/sota_client.service \
+ "
+
+SRC_URI = " \
+crate://crates.io/aho-corasick/0.5.2 \
+crate://crates.io/time/0.1.35 \
+crate://crates.io/url/1.1.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.5.0 \
+crate://crates.io/bit-set/0.2.0 \
+crate://crates.io/lazy_static/0.1.16 \
+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.7.13 \
+crate://crates.io/user32-sys/0.2.0 \
+crate://crates.io/regex/0.1.71 \
+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.28 \
+crate://crates.io/chan/0.1.18 \
+crate://crates.io/kernel32-sys/0.2.2 \
+crate://crates.io/winapi/0.2.7 \
+crate://crates.io/crossbeam/0.2.9 \
+crate://crates.io/bitflags/0.4.0 \
+crate://crates.io/thread-id/2.0.0 \
+crate://crates.io/mime/0.2.1 \
+crate://crates.io/thread_local/0.2.6 \
+crate://crates.io/utf8-ranges/0.1.3 \
+crate://crates.io/net2/0.2.23 \
+crate://crates.io/dbus/0.3.3 \
+crate://crates.io/winapi-build/0.1.1 \
+crate://crates.io/chan-signal/0.1.6 \
+crate://crates.io/bit-vec/0.4.3 \
+crate://crates.io/toml/0.1.30 \
+crate://crates.io/quick-error/0.2.2 \
+crate://crates.io/ws/0.5.0 \
+crate://crates.io/traitobject/0.0.1 \
+crate://crates.io/cfg-if/0.1.0 \
+crate://crates.io/matches/0.1.2 \
+crate://crates.io/getopts/0.2.14 \
+crate://crates.io/sha1/0.1.1 \
+crate://crates.io/openssl-sys/0.7.13 \
+crate://crates.io/cookie/0.2.5 \
+crate://crates.io/libressl-pnacl-sys/2.1.6 \
+crate://crates.io/lazy_static/0.2.1 \
+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.3 \
+crate://crates.io/mio/0.5.1 \
+crate://crates.io/tempdir/0.3.4 \
+crate://crates.io/miow/0.1.2 \
+crate://crates.io/pnacl-build-helper/1.4.10 \
+crate://crates.io/libc/0.2.12 \
+crate://crates.io/nix/0.5.1 \
+crate://crates.io/byteorder/0.5.3 \
+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.3 \
+crate://crates.io/vecio/0.1.0 \
+crate://crates.io/rotor/0.6.3 \
+crate://crates.io/openssl-sys-extras/0.7.13 \
+crate://crates.io/regex-syntax/0.3.3 \
+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/6127fc24b0b6fe73fe4d339817fbf000b9a798a2 \
+git://github.com/advancedtelematic/rvi_sota_client \
"
-
-# 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"
-
-SRCREV_FORMAT .= "_rust-openssl"
-EXTRA_OECARGO_PATHS += "${WORKDIR}/rust-openssl"
-
-## hyper
-SRC_URI += "git://github.com/hyperium/hyper.git;protocol=https;name=hyper;destsuffix=hyper "
-
-# 0.9.1
-SRCREV_hyper = "4828437551c7f5ed3f54acb1c1bf1fd50a6a3516"
-
-SRCREV_FORMAT .= "_hyper"
-EXTRA_OECARGO_PATHS += "${WORKDIR}/hyper"
+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 \
+ "
+
+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 -d ${D}${systemd_unitdir}/system
+ install -c ${S}/run/sota_client.service ${D}${systemd_unitdir}/system
+
+ install -d ${D}${sysconfdir}
+ echo `git log -1 --pretty=format:%H` > ${D}${sysconfdir}/sota_client.version
+ install -c ${S}/run/sota_certificates ${D}${sysconfdir}
+}
diff --git a/meta-sota/recipes-support/libgit2/libgit2-release.inc b/meta-sota/recipes-support/libgit2/libgit2-release.inc
new file mode 100644
index 0000000..62a13cf
--- /dev/null
+++ b/meta-sota/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-sota/recipes-support/libgit2/libgit2.inc b/meta-sota/recipes-support/libgit2/libgit2.inc
new file mode 100644
index 0000000..fe0f647
--- /dev/null
+++ b/meta-sota/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-sota/recipes-support/libgit2/libgit2_0.24.1.bb b/meta-sota/recipes-support/libgit2/libgit2_0.24.1.bb
new file mode 100644
index 0000000..2d0c6ff
--- /dev/null
+++ b/meta-sota/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
diff --git a/meta-sota/recipes-support/libssh2/libssh2_%.bbappend b/meta-sota/recipes-support/libssh2/libssh2_%.bbappend
new file mode 100644
index 0000000..ce4807e
--- /dev/null
+++ b/meta-sota/recipes-support/libssh2/libssh2_%.bbappend
@@ -0,0 +1,2 @@
+# meta-oe/recipes-support/libssh2
+BBCLASSEXTEND = "native"
diff --git a/meta-sota/recipes-support/lshw/files/cross-compile.patch b/meta-sota/recipes-support/lshw/files/cross-compile.patch
new file mode 100644
index 0000000..221b7e5
--- /dev/null
+++ b/meta-sota/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-sota/recipes-support/lshw/lshw_02.16.bb b/meta-sota/recipes-support/lshw/lshw_02.16.bb
new file mode 100644
index 0000000..3a61dab
--- /dev/null
+++ b/meta-sota/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
+}