diff options
8 files changed, 277 insertions, 3 deletions
diff --git a/meta-sota/conf/layer.conf b/meta-sota/conf/layer.conf new file mode 100644 index 0000000..a0ce5fa --- /dev/null +++ b/meta-sota/conf/layer.conf @@ -0,0 +1,11 @@ +# We have a conf and classes directory, add to BBPATH +BBPATH .= ":${LAYERDIR}" + +# We have recipes-* directories, add to BBFILES +BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ + ${LAYERDIR}/recipes-*/*/*.bbappend" + +BBFILE_COLLECTIONS += "sota" +BBFILE_PATTERN_sota = "^${LAYERDIR}/" +BBFILE_PRIORITY_sota = "7" + diff --git a/meta-sota/recipes-sota/libgsystem/libgsystem_git.bb b/meta-sota/recipes-sota/libgsystem/libgsystem_git.bb new file mode 100644 index 0000000..ed9638c --- /dev/null +++ b/meta-sota/recipes-sota/libgsystem/libgsystem_git.bb @@ -0,0 +1,21 @@ +SUMMARY = "GIO-based library, targeted primarily for use by operating system components" +LICENSE = "GPLv2+" +LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2" + +SRC_URI = "gitsm://git.gnome.org/libgsystem.git" +SRCREV="${AUTOREV}" + +S = "${WORKDIR}/git" + +DEPENDS += "attr glib-2.0 pkgconfig libcap" + +RDEPENDS_${PN} = "systemd liblzma" + +inherit autotools-brokensep + +BBCLASSEXTEND += "native" + +do_configure() { + NOCONFIGURE=true ./autogen.sh + oe_runconf +} diff --git a/meta-sota/recipes-sota/ostree/ostree_git.bb b/meta-sota/recipes-sota/ostree/ostree_git.bb new file mode 100644 index 0000000..9009685 --- /dev/null +++ b/meta-sota/recipes-sota/ostree/ostree_git.bb @@ -0,0 +1,25 @@ +SUMMARY = "Tool for managing bootable, immutable, versioned filesystem trees" +LICENSE = "GPLv2+" +LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2" + +SRC_URI = "gitsm://git.gnome.org/ostree.git;branch=master" +SRCREV="${AUTOREV}" + +S = "${WORKDIR}/git" + +DEPENDS += "attr libarchive glib-2.0 pkgconfig gpgme libgsystem fuse libsoup-2.4" + +RDEPENDS_${PN} = "python libsystemd util-linux-libuuid util-linux-libblkid util-linux-libmount libcap liblzma" + +inherit autotools-brokensep + +EXTRA_OECONF = "--with-libarchive --disable-gtk-doc --disable-gtk-doc-html --disable-gtk-doc-pdf --disable-man" + +FILES_${PN} += "${libdir}/ostree/ ${libdir}/ostbuild" + +BBCLASSEXTEND = "native" + +do_configure() { + NOCONFIGURE=true ./autogen.sh + oe_runconf +} 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 new file mode 100644 index 0000000..2d3dbed --- /dev/null +++ b/meta-sota/recipes-sota/rvi-sota-client/files/dbus-rs/0001-Cast-correctly-c_char-raw-pointers-for-ARM.patch @@ -0,0 +1,146 @@ +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 new file mode 100644 index 0000000..d99f9d6 --- /dev/null +++ b/meta-sota/recipes-sota/rvi-sota-client/rvi-sota-client/rvi-sota-client.service @@ -0,0 +1,9 @@ +[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 new file mode 100644 index 0000000..b990272 --- /dev/null +++ b/meta-sota/recipes-sota/rvi-sota-client/rvi-sota-client_git.bb @@ -0,0 +1,58 @@ +DESCRIPTION = "SOTA Reference Implementation project - Client" +HOMEPAGE = "https://github.com/advancedtelematic/rvi_sota_client" +LICENSE = "MPL-2.0" + +inherit cargo systemd + +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" + +S = "${WORKDIR}/git" + +BBCLASSEXTEND = "native" + +DEPENDS += "dbus openssl" +RDEPENDS_${PN} += "dbus-lib libcrypto libssl bash" + +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 +} + +## 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 \ +" + +# 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" diff --git a/templates/feature/agl-demo/50_bblayers.conf.inc b/templates/feature/agl-demo/50_bblayers.conf.inc index e572388..07c20d3 100644 --- a/templates/feature/agl-demo/50_bblayers.conf.inc +++ b/templates/feature/agl-demo/50_bblayers.conf.inc @@ -7,9 +7,6 @@ BBLAYERS =+ " \ # These are the dependencies of the AGL DEMO Layer #------------------------------------------------- BBLAYERS =+ " \ - ${METADIR}/meta-openembedded/meta-filesystems \ - ${METADIR}/meta-openembedded/meta-ruby \ ${METADIR}/meta-qt5 \ - ${METADIR}/meta-rust \ " diff --git a/templates/feature/agl-sota/50_bblayers.conf.inc b/templates/feature/agl-sota/50_bblayers.conf.inc new file mode 100644 index 0000000..0a5440b --- /dev/null +++ b/templates/feature/agl-sota/50_bblayers.conf.inc @@ -0,0 +1,7 @@ +BBLAYERS =+ " \ + ${METADIR}/meta-agl-extra/meta-sota \ + ${METADIR}/meta-openembedded/meta-filesystems \ + ${METADIR}/meta-openembedded/meta-ruby \ + ${METADIR}/meta-rust \ + " + |