diff options
-rw-r--r-- | conf/layer.conf | 11 | ||||
-rw-r--r-- | recipes-sota/libgsystem/libgsystem_git.bb | 21 | ||||
-rw-r--r-- | recipes-sota/ostree/ostree_git.bb | 25 | ||||
-rw-r--r-- | recipes-sota/rvi-sota-client/files/dbus-rs/0001-Cast-correctly-c_char-raw-pointers-for-ARM.patch | 146 | ||||
-rw-r--r-- | recipes-sota/rvi-sota-client/rvi-sota-client/rvi-sota-client.service | 9 | ||||
-rw-r--r-- | recipes-sota/rvi-sota-client/rvi-sota-client_git.bb | 58 |
6 files changed, 270 insertions, 0 deletions
diff --git a/conf/layer.conf b/conf/layer.conf new file mode 100644 index 0000000..a0ce5fa --- /dev/null +++ b/conf/layer.conf | |||
@@ -0,0 +1,11 @@ | |||
1 | # We have a conf and classes directory, add to BBPATH | ||
2 | BBPATH .= ":${LAYERDIR}" | ||
3 | |||
4 | # We have recipes-* directories, add to BBFILES | ||
5 | BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ | ||
6 | ${LAYERDIR}/recipes-*/*/*.bbappend" | ||
7 | |||
8 | BBFILE_COLLECTIONS += "sota" | ||
9 | BBFILE_PATTERN_sota = "^${LAYERDIR}/" | ||
10 | BBFILE_PRIORITY_sota = "7" | ||
11 | |||
diff --git a/recipes-sota/libgsystem/libgsystem_git.bb b/recipes-sota/libgsystem/libgsystem_git.bb new file mode 100644 index 0000000..ed9638c --- /dev/null +++ b/recipes-sota/libgsystem/libgsystem_git.bb | |||
@@ -0,0 +1,21 @@ | |||
1 | SUMMARY = "GIO-based library, targeted primarily for use by operating system components" | ||
2 | LICENSE = "GPLv2+" | ||
3 | LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2" | ||
4 | |||
5 | SRC_URI = "gitsm://git.gnome.org/libgsystem.git" | ||
6 | SRCREV="${AUTOREV}" | ||
7 | |||
8 | S = "${WORKDIR}/git" | ||
9 | |||
10 | DEPENDS += "attr glib-2.0 pkgconfig libcap" | ||
11 | |||
12 | RDEPENDS_${PN} = "systemd liblzma" | ||
13 | |||
14 | inherit autotools-brokensep | ||
15 | |||
16 | BBCLASSEXTEND += "native" | ||
17 | |||
18 | do_configure() { | ||
19 | NOCONFIGURE=true ./autogen.sh | ||
20 | oe_runconf | ||
21 | } | ||
diff --git a/recipes-sota/ostree/ostree_git.bb b/recipes-sota/ostree/ostree_git.bb new file mode 100644 index 0000000..9009685 --- /dev/null +++ b/recipes-sota/ostree/ostree_git.bb | |||
@@ -0,0 +1,25 @@ | |||
1 | SUMMARY = "Tool for managing bootable, immutable, versioned filesystem trees" | ||
2 | LICENSE = "GPLv2+" | ||
3 | LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2" | ||
4 | |||
5 | SRC_URI = "gitsm://git.gnome.org/ostree.git;branch=master" | ||
6 | SRCREV="${AUTOREV}" | ||
7 | |||
8 | S = "${WORKDIR}/git" | ||
9 | |||
10 | DEPENDS += "attr libarchive glib-2.0 pkgconfig gpgme libgsystem fuse libsoup-2.4" | ||
11 | |||
12 | RDEPENDS_${PN} = "python libsystemd util-linux-libuuid util-linux-libblkid util-linux-libmount libcap liblzma" | ||
13 | |||
14 | inherit autotools-brokensep | ||
15 | |||
16 | EXTRA_OECONF = "--with-libarchive --disable-gtk-doc --disable-gtk-doc-html --disable-gtk-doc-pdf --disable-man" | ||
17 | |||
18 | FILES_${PN} += "${libdir}/ostree/ ${libdir}/ostbuild" | ||
19 | |||
20 | BBCLASSEXTEND = "native" | ||
21 | |||
22 | do_configure() { | ||
23 | NOCONFIGURE=true ./autogen.sh | ||
24 | oe_runconf | ||
25 | } | ||
diff --git a/recipes-sota/rvi-sota-client/files/dbus-rs/0001-Cast-correctly-c_char-raw-pointers-for-ARM.patch b/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/recipes-sota/rvi-sota-client/files/dbus-rs/0001-Cast-correctly-c_char-raw-pointers-for-ARM.patch | |||
@@ -0,0 +1,146 @@ | |||
1 | From 768202d3223813e71848758ecafcfeab276d9101 Mon Sep 17 00:00:00 2001 | ||
2 | From: Leon Anavi <leon.anavi@konsulko.com> | ||
3 | Date: Sat, 12 Mar 2016 17:52:02 +0200 | ||
4 | Subject: [PATCH] Cast correctly c_char raw pointers for ARM | ||
5 | |||
6 | Fix the build of crate dbus-rs (version 0.1.2) for ARM | ||
7 | with correct casts of c_char raw pointers. | ||
8 | |||
9 | Signed-off-by: Leon Anavi <leon.anavi@konsulko.com> | ||
10 | --- | ||
11 | src/lib.rs | 18 +++++++++--------- | ||
12 | src/message.rs | 10 +++++----- | ||
13 | 2 files changed, 14 insertions(+), 14 deletions(-) | ||
14 | |||
15 | diff --git a/src/lib.rs b/src/lib.rs | ||
16 | index aac9c0f..8134dc4 100644 | ||
17 | --- a/src/lib.rs | ||
18 | +++ b/src/lib.rs | ||
19 | @@ -60,7 +60,7 @@ unsafe impl Send for Error {} | ||
20 | |||
21 | fn c_str_to_slice(c: & *const libc::c_char) -> Option<&str> { | ||
22 | if *c == ptr::null() { None } | ||
23 | - else { std::str::from_utf8( unsafe { CStr::from_ptr(*c).to_bytes() }).ok() } | ||
24 | + else { std::str::from_utf8( unsafe { CStr::from_ptr(*c as *const _).to_bytes() }).ok() } | ||
25 | } | ||
26 | |||
27 | fn to_c_str(n: &str) -> CString { CString::new(n.as_bytes()).unwrap() } | ||
28 | @@ -72,7 +72,7 @@ impl Error { | ||
29 | let m = to_c_str(&message.replace("%","%%")); | ||
30 | let mut e = Error::empty(); | ||
31 | |||
32 | - unsafe { ffi::dbus_set_error(e.get_mut(), n.as_ptr(), m.as_ptr()) }; | ||
33 | + unsafe { ffi::dbus_set_error(e.get_mut(), n.as_ptr() as *const _, m.as_ptr() as *const _) }; | ||
34 | e | ||
35 | } | ||
36 | |||
37 | @@ -272,21 +272,21 @@ impl Connection { | ||
38 | }; | ||
39 | let r = unsafe { | ||
40 | let user_data: *mut libc::c_void = std::mem::transmute(&*self.i); | ||
41 | - ffi::dbus_connection_try_register_object_path(self.conn(), p.as_ptr(), &vtable, user_data, e.get_mut()) | ||
42 | + ffi::dbus_connection_try_register_object_path(self.conn(), p.as_ptr() as *const _, &vtable, user_data, e.get_mut()) | ||
43 | }; | ||
44 | if r == 0 { Err(e) } else { Ok(()) } | ||
45 | } | ||
46 | |||
47 | pub fn unregister_object_path(&self, path: &str) { | ||
48 | let p = to_c_str(path); | ||
49 | - let r = unsafe { ffi::dbus_connection_unregister_object_path(self.conn(), p.as_ptr()) }; | ||
50 | + let r = unsafe { ffi::dbus_connection_unregister_object_path(self.conn(), p.as_ptr() as *const _) }; | ||
51 | if r == 0 { panic!("Out of memory"); } | ||
52 | } | ||
53 | |||
54 | pub fn list_registered_object_paths(&self, path: &str) -> Vec<String> { | ||
55 | let p = to_c_str(path); | ||
56 | let mut clist: *mut *mut libc::c_char = ptr::null_mut(); | ||
57 | - let r = unsafe { ffi::dbus_connection_list_registered(self.conn(), p.as_ptr(), &mut clist) }; | ||
58 | + let r = unsafe { ffi::dbus_connection_list_registered(self.conn(), p.as_ptr() as *const _, &mut clist) }; | ||
59 | if r == 0 { panic!("Out of memory"); } | ||
60 | let mut v = Vec::new(); | ||
61 | let mut i = 0; | ||
62 | @@ -306,28 +306,28 @@ impl Connection { | ||
63 | pub fn register_name(&self, name: &str, flags: u32) -> Result<RequestNameReply, Error> { | ||
64 | let mut e = Error::empty(); | ||
65 | let n = to_c_str(name); | ||
66 | - let r = unsafe { ffi::dbus_bus_request_name(self.conn(), n.as_ptr(), flags, e.get_mut()) }; | ||
67 | + let r = unsafe { ffi::dbus_bus_request_name(self.conn(), n.as_ptr() as *const _, flags, e.get_mut()) }; | ||
68 | if r == -1 { Err(e) } else { Ok(unsafe { std::mem::transmute(r) }) } | ||
69 | } | ||
70 | |||
71 | pub fn release_name(&self, name: &str) -> Result<ReleaseNameReply, Error> { | ||
72 | let mut e = Error::empty(); | ||
73 | let n = to_c_str(name); | ||
74 | - let r = unsafe { ffi::dbus_bus_release_name(self.conn(), n.as_ptr(), e.get_mut()) }; | ||
75 | + let r = unsafe { ffi::dbus_bus_release_name(self.conn(), n.as_ptr() as *const _, e.get_mut()) }; | ||
76 | if r == -1 { Err(e) } else { Ok(unsafe { std::mem::transmute(r) }) } | ||
77 | } | ||
78 | |||
79 | pub fn add_match(&self, rule: &str) -> Result<(), Error> { | ||
80 | let mut e = Error::empty(); | ||
81 | let n = to_c_str(rule); | ||
82 | - unsafe { ffi::dbus_bus_add_match(self.conn(), n.as_ptr(), e.get_mut()) }; | ||
83 | + unsafe { ffi::dbus_bus_add_match(self.conn(), n.as_ptr() as *const _, e.get_mut()) }; | ||
84 | if e.name().is_some() { Err(e) } else { Ok(()) } | ||
85 | } | ||
86 | |||
87 | pub fn remove_match(&self, rule: &str) -> Result<(), Error> { | ||
88 | let mut e = Error::empty(); | ||
89 | let n = to_c_str(rule); | ||
90 | - unsafe { ffi::dbus_bus_remove_match(self.conn(), n.as_ptr(), e.get_mut()) }; | ||
91 | + unsafe { ffi::dbus_bus_remove_match(self.conn(), n.as_ptr() as *const _, e.get_mut()) }; | ||
92 | if e.name().is_some() { Err(e) } else { Ok(()) } | ||
93 | } | ||
94 | |||
95 | diff --git a/src/message.rs b/src/message.rs | ||
96 | index 23871f8..e3dd021 100644 | ||
97 | --- a/src/message.rs | ||
98 | +++ b/src/message.rs | ||
99 | @@ -126,7 +126,7 @@ fn iter_append_array(i: &mut ffi::DBusMessageIter, a: &[MessageItem], t: TypeSig | ||
100 | let mut subiter = new_dbus_message_iter(); | ||
101 | let atype = to_c_str(&t); | ||
102 | |||
103 | - assert!(unsafe { ffi::dbus_message_iter_open_container(i, ffi::DBUS_TYPE_ARRAY, atype.as_ptr(), &mut subiter) } != 0); | ||
104 | + assert!(unsafe { ffi::dbus_message_iter_open_container(i, ffi::DBUS_TYPE_ARRAY, atype.as_ptr() as *const _, &mut subiter) } != 0); | ||
105 | for item in a.iter() { | ||
106 | // assert!(item.type_sig() == t); | ||
107 | item.iter_append(&mut subiter); | ||
108 | @@ -148,7 +148,7 @@ fn iter_append_struct(i: &mut ffi::DBusMessageIter, a: &[MessageItem]) { | ||
109 | fn iter_append_variant(i: &mut ffi::DBusMessageIter, a: &MessageItem) { | ||
110 | let mut subiter = new_dbus_message_iter(); | ||
111 | let atype = to_c_str(&format!("{}", a.array_type() as u8 as char)); | ||
112 | - assert!(unsafe { ffi::dbus_message_iter_open_container(i, ffi::DBUS_TYPE_VARIANT, atype.as_ptr(), &mut subiter) } != 0); | ||
113 | + assert!(unsafe { ffi::dbus_message_iter_open_container(i, ffi::DBUS_TYPE_VARIANT, atype.as_ptr() as *const _, &mut subiter) } != 0); | ||
114 | a.iter_append(&mut subiter); | ||
115 | assert!(unsafe { ffi::dbus_message_iter_close_container(i, &mut subiter) } != 0); | ||
116 | } | ||
117 | @@ -481,7 +481,7 @@ impl Message { | ||
118 | init_dbus(); | ||
119 | let (d, p, i, m) = (to_c_str(destination), to_c_str(path), to_c_str(iface), to_c_str(method)); | ||
120 | let ptr = unsafe { | ||
121 | - ffi::dbus_message_new_method_call(d.as_ptr(), p.as_ptr(), i.as_ptr(), m.as_ptr()) | ||
122 | + 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 _) | ||
123 | }; | ||
124 | if ptr == ptr::null_mut() { None } else { Some(Message { msg: ptr} ) } | ||
125 | } | ||
126 | @@ -490,7 +490,7 @@ impl Message { | ||
127 | init_dbus(); | ||
128 | let (p, i, m) = (to_c_str(path), to_c_str(iface), to_c_str(method)); | ||
129 | let ptr = unsafe { | ||
130 | - ffi::dbus_message_new_signal(p.as_ptr(), i.as_ptr(), m.as_ptr()) | ||
131 | + ffi::dbus_message_new_signal(p.as_ptr() as *const _, i.as_ptr() as *const _, m.as_ptr() as *const _) | ||
132 | }; | ||
133 | if ptr == ptr::null_mut() { None } else { Some(Message { msg: ptr} ) } | ||
134 | } | ||
135 | @@ -502,7 +502,7 @@ impl Message { | ||
136 | |||
137 | pub fn new_error(m: &Message, error_name: &str, error_message: &str) -> Option<Message> { | ||
138 | let (en, em) = (to_c_str(error_name), to_c_str(error_message)); | ||
139 | - let ptr = unsafe { ffi::dbus_message_new_error(m.msg, en.as_ptr(), em.as_ptr()) }; | ||
140 | + let ptr = unsafe { ffi::dbus_message_new_error(m.msg, en.as_ptr() as *const _, em.as_ptr() as *const _) }; | ||
141 | if ptr == ptr::null_mut() { None } else { Some(Message { msg: ptr} ) } | ||
142 | } | ||
143 | |||
144 | -- | ||
145 | 2.1.4 | ||
146 | |||
diff --git a/recipes-sota/rvi-sota-client/rvi-sota-client/rvi-sota-client.service b/recipes-sota/rvi-sota-client/rvi-sota-client/rvi-sota-client.service new file mode 100644 index 0000000..d99f9d6 --- /dev/null +++ b/recipes-sota/rvi-sota-client/rvi-sota-client/rvi-sota-client.service | |||
@@ -0,0 +1,9 @@ | |||
1 | [Unit] | ||
2 | Description=RVI SOTA Client | ||
3 | |||
4 | [Service] | ||
5 | User=root | ||
6 | ExecStart=/usr/bin/run.sh | ||
7 | |||
8 | [Install] | ||
9 | WantedBy=multi-user.target | ||
diff --git a/recipes-sota/rvi-sota-client/rvi-sota-client_git.bb b/recipes-sota/rvi-sota-client/rvi-sota-client_git.bb new file mode 100644 index 0000000..b990272 --- /dev/null +++ b/recipes-sota/rvi-sota-client/rvi-sota-client_git.bb | |||
@@ -0,0 +1,58 @@ | |||
1 | DESCRIPTION = "SOTA Reference Implementation project - Client" | ||
2 | HOMEPAGE = "https://github.com/advancedtelematic/rvi_sota_client" | ||
3 | LICENSE = "MPL-2.0" | ||
4 | |||
5 | inherit cargo systemd | ||
6 | |||
7 | SRC_URI = "git://github.com/advancedtelematic/rvi_sota_client.git;protocol=https \ | ||
8 | file://rvi-sota-client.service \ | ||
9 | " | ||
10 | SRCREV="825be11b03f89c52e5441b3d26e1cbf63fd313dd" | ||
11 | LIC_FILES_CHKSUM="file://LICENSE;md5=65d26fcc2f35ea6a181ac777e42db1ea" | ||
12 | |||
13 | S = "${WORKDIR}/git" | ||
14 | |||
15 | BBCLASSEXTEND = "native" | ||
16 | |||
17 | DEPENDS += "dbus openssl" | ||
18 | RDEPENDS_${PN} += "dbus-lib libcrypto libssl bash" | ||
19 | |||
20 | SYSTEMD_SERVICE_${PN} = "rvi-sota-client.service" | ||
21 | |||
22 | do_install_append() { | ||
23 | install -m 0755 -p -D ${S}/client.toml ${D}/var/sota/client.toml | ||
24 | install -m 0755 -p -D ${S}/docker/run.sh ${D}${bindir}/run.sh | ||
25 | if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then | ||
26 | install -p -D ${WORKDIR}/rvi-sota-client.service ${D}${systemd_unitdir}/system/rvi-sota-client.service | ||
27 | fi | ||
28 | } | ||
29 | |||
30 | ## dbus-rs | ||
31 | SRC_URI += "\ | ||
32 | git://github.com/diwic/dbus-rs.git;protocol=https;name=dbus-rs;destsuffix=dbus-rs \ | ||
33 | file://dbus-rs/0001-Cast-correctly-c_char-raw-pointers-for-ARM.patch;patchdir=../dbus-rs \ | ||
34 | " | ||
35 | |||
36 | # 0.1.2 | ||
37 | SRCREV_dbus-rs = "c2c4c98adcf9949992ac5b0050bf17afe10868c9" | ||
38 | |||
39 | SRCREV_FORMAT .= "_dbus-rs" | ||
40 | EXTRA_OECARGO_PATHS += "${WORKDIR}/dbus-rs" | ||
41 | |||
42 | ## rust-openssl | ||
43 | SRC_URI += "git://github.com/sfackler/rust-openssl.git;protocol=https;name=rust-openssl;destsuffix=rust-openssl " | ||
44 | |||
45 | # 0.7.10 | ||
46 | SRCREV_rust-openssl = "d6bc3bb16f2673f610e9310041fc030ea9b90187" | ||
47 | |||
48 | SRCREV_FORMAT .= "_rust-openssl" | ||
49 | EXTRA_OECARGO_PATHS += "${WORKDIR}/rust-openssl" | ||
50 | |||
51 | ## hyper | ||
52 | SRC_URI += "git://github.com/hyperium/hyper.git;protocol=https;name=hyper;destsuffix=hyper " | ||
53 | |||
54 | # 0.9.1 | ||
55 | SRCREV_hyper = "4828437551c7f5ed3f54acb1c1bf1fd50a6a3516" | ||
56 | |||
57 | SRCREV_FORMAT .= "_hyper" | ||
58 | EXTRA_OECARGO_PATHS += "${WORKDIR}/hyper" | ||