summaryrefslogtreecommitdiffstats
path: root/recipes-sota
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-sota')
-rw-r--r--recipes-sota/aktualizr/aktualizr_git.bb39
-rw-r--r--recipes-sota/aktualizr/files/aktualizr-autoprovision.service14
-rw-r--r--recipes-sota/aktualizr/files/aktualizr-manual-provision.service13
-rw-r--r--recipes-sota/aktualizr/files/sota_autoprov.toml18
-rw-r--r--recipes-sota/ostree-initrd/files/init.sh35
-rw-r--r--recipes-sota/ostree-initrd/ostree-initrd.bb5
-rw-r--r--recipes-sota/ostree/ostree_git.bb35
-rw-r--r--recipes-sota/rvi-sota-client/files/sota-client-autoprovision.service16
-rw-r--r--recipes-sota/rvi-sota-client/files/sota-client-ostree.service13
-rw-r--r--recipes-sota/rvi-sota-client/files/sota-client-uptane.service15
-rw-r--r--recipes-sota/rvi-sota-client/files/sota-installer.service12
-rw-r--r--recipes-sota/rvi-sota-client/rvi-sota-client.inc143
-rw-r--r--recipes-sota/rvi-sota-client/rvi-sota-client_git.bb155
-rw-r--r--recipes-sota/rvi-sota-client/sota-installer_git.bb25
-rw-r--r--recipes-sota/rvi-sota-client/sota-launcher_git.bb15
-rw-r--r--recipes-sota/sota-tools/sota-tools_git.bb2
16 files changed, 399 insertions, 156 deletions
diff --git a/recipes-sota/aktualizr/aktualizr_git.bb b/recipes-sota/aktualizr/aktualizr_git.bb
index 045c142..359c9fb 100644
--- a/recipes-sota/aktualizr/aktualizr_git.bb
+++ b/recipes-sota/aktualizr/aktualizr_git.bb
@@ -2,23 +2,44 @@ SUMMARY = "Aktualizr SOTA Client"
2DESCRIPTION = "SOTA Client application written in C++" 2DESCRIPTION = "SOTA Client application written in C++"
3HOMEPAGE = "https://github.com/advancedtelematic/aktualizr" 3HOMEPAGE = "https://github.com/advancedtelematic/aktualizr"
4SECTION = "base" 4SECTION = "base"
5
6LICENSE = "MPL-2.0" 5LICENSE = "MPL-2.0"
7LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=9741c346eef56131163e13b9db1241b3" 6LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=9741c346eef56131163e13b9db1241b3"
8 7DEPENDS = "boost curl openssl jansson libsodium ostree"
9inherit cmake systemd 8RDEPENDS_${PN} = "lshw"
9
10SRC_URI = " \
11 git://github.com/advancedtelematic/aktualizr \
12 file://aktualizr-manual-provision.service \
13 file://aktualizr-autoprovision.service \
14 file://sota_autoprov.toml \
15 "
16SRCREV = "c24f1fc9b600113cf9f2d3d7215e406cbbb70ac4"
17PV = "1.0+git${SRCPV}"
10 18
11S = "${WORKDIR}/git" 19S = "${WORKDIR}/git"
20SYSTEMD_SERVICE_${PN} = "aktualizr.service"
12 21
13SRCREV = "f2275e9938f5c942c9e51a3966b1ad91acd65367" 22inherit cmake systemd
14 23
15SRC_URI = "git://github.com/advancedtelematic/aktualizr" 24EXTRA_OECMAKE = "-DWARNING_AS_ERROR=OFF -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF -DBUILD_OSTREE=ON -DAKTUALIZR_VERSION=${PV}"
16 25
17DEPENDS = "boost curl openssl jansson" 26export SOTA_AUTOPROVISION_CREDENTIALS
18RDEPENDS = "" 27export SOTA_PACKED_CREDENTIALS
19 28
20EXTRA_OECMAKE = "-DWARNING_AS_ERROR=OFF -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF" 29do_install_append() {
30 if [ -n "${SOTA_AUTOPROVISION_CREDENTIALS}" -o -n "${SOTA_PACKED_CREDENTIALS}" ]; then
31 install -d ${D}/${systemd_unitdir}/system
32 install -m 0644 ${WORKDIR}/aktualizr-autoprovision.service ${D}/${systemd_unitdir}/system/aktualizr.service
33 install -d ${D}/usr/lib/sota
34 install -m "0644" ${WORKDIR}/sota_autoprov.toml ${D}/usr/lib/sota/sota.toml
35 else
36 install -d ${D}/${systemd_unitdir}/system
37 install -m 0644 ${WORKDIR}/aktualizr-manual-provision.service ${D}/${systemd_unitdir}/system/aktualizr.service
38 fi
39}
21 40
22FILES_${PN} = " \ 41FILES_${PN} = " \
23 ${bindir}/aktualizr \ 42 ${bindir}/aktualizr \
24 " 43 ${systemd_unitdir}/system/aktualizr.service \
44 /usr/lib/sota/sota.toml \
45 "
diff --git a/recipes-sota/aktualizr/files/aktualizr-autoprovision.service b/recipes-sota/aktualizr/files/aktualizr-autoprovision.service
new file mode 100644
index 0000000..fd0ab09
--- /dev/null
+++ b/recipes-sota/aktualizr/files/aktualizr-autoprovision.service
@@ -0,0 +1,14 @@
1[Unit]
2Description=Aktualizr SOTA Client
3Wants=network-online.target
4After=network.target network-online.target
5Requires=network-online.target
6
7[Service]
8RestartSec=10
9Restart=always
10EnvironmentFile=/var/sota/sota_provisioning_url.env
11ExecStart=/usr/bin/aktualizr --disable-keyid-validation --tls-server ${SOTA_GATEWAY_URI} --config /usr/lib/sota/sota.toml
12
13[Install]
14WantedBy=multi-user.target
diff --git a/recipes-sota/aktualizr/files/aktualizr-manual-provision.service b/recipes-sota/aktualizr/files/aktualizr-manual-provision.service
new file mode 100644
index 0000000..a70f2f9
--- /dev/null
+++ b/recipes-sota/aktualizr/files/aktualizr-manual-provision.service
@@ -0,0 +1,13 @@
1[Unit]
2Description=Aktualizr SOTA Client
3Wants=network-online.target
4After=network.target network-online.target
5Requires=network-online.target
6
7[Service]
8RestartSec=10
9Restart=always
10ExecStart=/usr/bin/aktualizr --config /sysroot/boot/sota.toml --loglevel 2
11
12[Install]
13WantedBy=multi-user.target
diff --git a/recipes-sota/aktualizr/files/sota_autoprov.toml b/recipes-sota/aktualizr/files/sota_autoprov.toml
new file mode 100644
index 0000000..8799553
--- /dev/null
+++ b/recipes-sota/aktualizr/files/sota_autoprov.toml
@@ -0,0 +1,18 @@
1[device]
2packages_dir = "/tmp/packages_dir"
3certificates_directory = "/var/sota"
4system_info = "system_info.sh"
5
6[tls]
7ca_file = "root.crt"
8client_certificate = "client.pem"
9pkey_file = "pkey.pem"
10
11[uptane]
12metadata_path = "/var/sota/metadata"
13private_key_path = "ecukey.der"
14public_key_path = "ecukey.pub"
15
16[provision]
17p12_path = "sota_provisioning_credentials.p12"
18
diff --git a/recipes-sota/ostree-initrd/files/init.sh b/recipes-sota/ostree-initrd/files/init.sh
index 806a7b1..0b0693d 100644
--- a/recipes-sota/ostree-initrd/files/init.sh
+++ b/recipes-sota/ostree-initrd/files/init.sh
@@ -1,17 +1,13 @@
1#!/bin/sh 1#!/bin/sh
2 2set -eu
3# global variables
4
5SMACK=n
6DEBUG=n
7 3
8# ------------------------------------------- 4# -------------------------------------------
9 5
10log_info() { echo "$0[$$]: $@" >&2; } 6log_info() { echo "$0[$$]: $*" >&2; }
11log_error() { echo "$0[$$]: ERROR $@" >&2; } 7log_error() { echo "$0[$$]: ERROR $*" >&2; }
12 8
13do_mount_fs() { 9do_mount_fs() {
14 log_info "mounting FS: $@" 10 log_info "mounting FS: $*"
15 [[ -e /proc/filesystems ]] && { grep -q "$1" /proc/filesystems || { log_error "Unknown filesystem"; return 1; } } 11 [[ -e /proc/filesystems ]] && { grep -q "$1" /proc/filesystems || { log_error "Unknown filesystem"; return 1; } }
16 [[ -d "$2" ]] || mkdir -p "$2" 12 [[ -d "$2" ]] || mkdir -p "$2"
17 [[ -e /proc/mounts ]] && { grep -q -e "^$1 $2 $1" /proc/mounts && { log_info "$2 ($1) already mounted"; return 0; } } 13 [[ -e /proc/mounts ]] && { grep -q -e "^$1 $2 $1" /proc/mounts && { log_info "$2 ($1) already mounted"; return 0; } }
@@ -26,18 +22,19 @@ bail_out() {
26} 22}
27 23
28get_ostree_sysroot() { 24get_ostree_sysroot() {
29 for opt in `cat /proc/cmdline`; do 25 for opt in $(cat /proc/cmdline); do
30 arg=`echo $opt | cut -d'=' -f1` 26 arg=$(echo "$opt" | cut -d'=' -f1)
31 if [ $arg == "ostree_root" ]; then 27 if [ "$arg" == "ostree_root" ]; then
32 echo $opt | cut -d'=' -f2 28 echo "$opt" | cut -d'=' -f2-
33 return 29 return
34 fi 30 fi
35 done 31 done
32 echo "LABEL=otaroot"
36} 33}
37 34
38export PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/lib/ostree 35export PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/lib/ostree
39 36
40log_info "starting initrd script" 37log_info "Starting OSTree initrd script"
41 38
42do_mount_fs proc /proc 39do_mount_fs proc /proc
43do_mount_fs sysfs /sys 40do_mount_fs sysfs /sys
@@ -49,8 +46,6 @@ do_mount_fs tmpfs /run
49 46
50# check if smack is active (and if so, mount smackfs) 47# check if smack is active (and if so, mount smackfs)
51grep -q smackfs /proc/filesystems && { 48grep -q smackfs /proc/filesystems && {
52 SMACK=y
53
54 do_mount_fs smackfs /sys/fs/smackfs 49 do_mount_fs smackfs /sys/fs/smackfs
55 50
56 # adjust current label and network label 51 # adjust current label and network label
@@ -61,14 +56,20 @@ grep -q smackfs /proc/filesystems && {
61mkdir -p /sysroot 56mkdir -p /sysroot
62ostree_sysroot=$(get_ostree_sysroot) 57ostree_sysroot=$(get_ostree_sysroot)
63 58
64mount $ostree_sysroot /sysroot || bail_out "Unable to mount $ostree_sysroot as physical sysroot" 59mount "$ostree_sysroot" /sysroot || {
60 # The SD card in the R-Car M3 takes a bit of time to come up
61 # Retry the mount if it fails the first time
62 log_info "Mounting $ostree_sysroot failed, waiting 5s for the device to be available..."
63 sleep 5
64 mount "$ostree_sysroot" /sysroot || bail_out "Unable to mount $ostree_sysroot as physical sysroot"
65}
65ostree-prepare-root /sysroot 66ostree-prepare-root /sysroot
66 67
67# move mounted devices to new root 68# move mounted devices to new root
68cd /sysroot 69cd /sysroot
69for x in dev proc; do 70for x in dev proc; do
70 log_info "Moving /$x to new rootfs" 71 log_info "Moving /$x to new rootfs"
71 mount -o move /$x $x 72 mount -o move "/$x" "$x"
72done 73done
73 74
74# switch to new rootfs 75# switch to new rootfs
diff --git a/recipes-sota/ostree-initrd/ostree-initrd.bb b/recipes-sota/ostree-initrd/ostree-initrd.bb
index 5c85bee..6046c81 100644
--- a/recipes-sota/ostree-initrd/ostree-initrd.bb
+++ b/recipes-sota/ostree-initrd/ostree-initrd.bb
@@ -5,15 +5,16 @@ SRC_URI = "file://init.sh"
5 5
6S = "${WORKDIR}" 6S = "${WORKDIR}"
7 7
8PV = "3"
9
8do_install() { 10do_install() {
9 install -dm 0755 ${D}/etc 11 install -dm 0755 ${D}/etc
10 touch ${D}/etc/initrd-release 12 touch ${D}/etc/initrd-release
11 install -dm 0755 ${D}/dev 13 install -dm 0755 ${D}/dev
12 install -dm 0755 ${D}/sbin 14 install -dm 0755 ${D}/sbin
13 install -m 0755 ${WORKDIR}/init.sh ${D}/sbin/init 15 install -m 0755 ${WORKDIR}/init.sh ${D}/sbin/init
14} 16}
15 17
16inherit allarch 18inherit allarch
17 19
18FILES_${PN} += " /dev /etc/initrd-release /sbin/init " 20FILES_${PN} += " /dev /etc/initrd-release /sbin/init "
19
diff --git a/recipes-sota/ostree/ostree_git.bb b/recipes-sota/ostree/ostree_git.bb
index 67b5047..84e86e2 100644
--- a/recipes-sota/ostree/ostree_git.bb
+++ b/recipes-sota/ostree/ostree_git.bb
@@ -8,31 +8,37 @@ INHERIT_remove_class-native = "systemd"
8 8
9SRC_URI = "gitsm://github.com/ostreedev/ostree.git;branch=master" 9SRC_URI = "gitsm://github.com/ostreedev/ostree.git;branch=master"
10 10
11SRCREV="37c07d2f1c90b12bcfba85a7d900f81a7c362eb4" 11SRCREV="3b09620c2738bce4ed45e099cf2e4c5df7671d39"
12
13PV = "2017.3-31-g3b09620c"
12 14
13S = "${WORKDIR}/git" 15S = "${WORKDIR}/git"
14 16
15BBCLASSEXTEND = "native" 17BBCLASSEXTEND = "native"
16 18
17DEPENDS += "attr libarchive glib-2.0 pkgconfig gpgme libgsystem fuse libsoup-2.4 e2fsprogs" 19DEPENDS += "attr libarchive glib-2.0 pkgconfig gpgme libgsystem fuse libsoup-2.4 e2fsprogs gtk-doc-native curl"
18DEPENDS_append = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', ' systemd', '', d)}" 20DEPENDS_append = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', ' systemd', '', d)}"
19
20DEPENDS_remove_class-native = "systemd-native" 21DEPENDS_remove_class-native = "systemd-native"
21 22
22RDEPENDS_${PN} = "python util-linux-libuuid util-linux-libblkid util-linux-libmount libcap xz os-release ca-certificates" 23RDEPENDS_${PN} = "python util-linux-libuuid util-linux-libblkid util-linux-libmount libcap xz bash"
23RDEPENDS_${PN}_remove_class-native = "python-native os-release-native" 24RDEPENDS_${PN}_remove_class-native = "python-native"
24 25
25EXTRA_OECONF = "CFLAGS='-g' --with-libarchive --disable-gtk-doc --disable-gtk-doc-html --disable-gtk-doc-pdf --disable-man" 26EXTRA_OECONF = "--with-libarchive --disable-gtk-doc --disable-gtk-doc-html --disable-gtk-doc-pdf --disable-man --with-smack --with-builtin-grub2-mkconfig --with-curl"
26EXTRA_OEMAKE = "CFLAGS='-g'"
27EXTRA_OECONF_append_class-native = " --enable-wrpseudo-compat" 27EXTRA_OECONF_append_class-native = " --enable-wrpseudo-compat"
28 28
29# Path to ${prefix}/lib/ostree/ostree-grub-generator is hardcoded on the
30# do_configure stage so we do depend on it
31SYSROOT_DIR = "${STAGING_DIR_TARGET}"
32SYSROOT_DIR_class-native = "${STAGING_DIR_NATIVE}"
33do_configure[vardeps] += "SYSROOT_DIR"
34
29SYSTEMD_REQUIRED = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}" 35SYSTEMD_REQUIRED = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}"
30SYSTEMD_REQUIRED_class-native = "false" 36SYSTEMD_REQUIRED_class-native = ""
31 37
32SYSTEMD_SERVICE_${PN} = "ostree-prepare-root.service ostree-remount.service" 38SYSTEMD_SERVICE_${PN} = "ostree-prepare-root.service ostree-remount.service"
33SYSTEMD_SERVICE_${PN}_class-native = "" 39SYSTEMD_SERVICE_${PN}_class-native = ""
34 40
35PACKAGECONFIG ??= "${@base_contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}" 41PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}"
36PACKAGECONFIG_class-native = "" 42PACKAGECONFIG_class-native = ""
37PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_unitdir}/system/ --with-dracut" 43PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_unitdir}/system/ --with-dracut"
38 44
@@ -42,7 +48,8 @@ export STAGING_INCDIR
42export STAGING_LIBDIR 48export STAGING_LIBDIR
43 49
44do_configure() { 50do_configure() {
45 NOCONFIGURE=true ./autogen.sh 51 unset docdir
52 NOCONFIGURE=1 ./autogen.sh
46 oe_runconf 53 oe_runconf
47} 54}
48 55
@@ -54,11 +61,17 @@ do_compile_prepend() {
54export SYSTEMD_REQUIRED 61export SYSTEMD_REQUIRED
55 62
56do_install_append() { 63do_install_append() {
57 if [ "$SYSTEMD_REQUIRED" == "true" ]; then 64 if [ -n ${SYSTEMD_REQUIRED} ]; then
65 install -p -D ${S}/src/boot/ostree-prepare-root.service ${D}${systemd_unitdir}/system/ostree-prepare-root.service
58 install -p -D ${S}/src/boot/ostree-remount.service ${D}${systemd_unitdir}/system/ostree-remount.service 66 install -p -D ${S}/src/boot/ostree-remount.service ${D}${systemd_unitdir}/system/ostree-remount.service
59 fi 67 fi
60} 68}
61 69
70do_install_append_class-native() {
71 create_wrapper ${D}${bindir}/ostree OSTREE_GRUB2_EXEC="${STAGING_LIBDIR_NATIVE}/ostree/ostree-grub-generator"
72}
73
74
62FILES_${PN} += " \ 75FILES_${PN} += " \
63 ${@'${systemd_unitdir}/system/' if d.getVar('SYSTEMD_REQUIRED', True) else ''} \ 76 ${@'${systemd_unitdir}/system/' if d.getVar('SYSTEMD_REQUIRED', True) else ''} \
64 ${@'${libdir}/dracut/modules.d/98ostree/module-setup.sh' if d.getVar('SYSTEMD_REQUIRED', True) else ''} \ 77 ${@'${libdir}/dracut/modules.d/98ostree/module-setup.sh' if d.getVar('SYSTEMD_REQUIRED', True) else ''} \
diff --git a/recipes-sota/rvi-sota-client/files/sota-client-autoprovision.service b/recipes-sota/rvi-sota-client/files/sota-client-autoprovision.service
new file mode 100644
index 0000000..0431455
--- /dev/null
+++ b/recipes-sota/rvi-sota-client/files/sota-client-autoprovision.service
@@ -0,0 +1,16 @@
1[Unit]
2Description=SOTA Client Autoprovisioning
3Requires=network-online.target
4After=network-online.target
5
6[Service]
7Type=oneshot
8WorkingDirectory=/var/sota
9EnvironmentFile=/var/sota/sota_provisioning_url.env
10Environment=SOTA_CERT_DIR=/var/sota
11ExecStart=/usr/bin/sota_provision.sh sota_provisioning_credentials
12RemainAfterExit=true
13StandardOutput=journal
14
15[Install]
16WantedBy=multi-user.target
diff --git a/recipes-sota/rvi-sota-client/files/sota-client-ostree.service b/recipes-sota/rvi-sota-client/files/sota-client-ostree.service
new file mode 100644
index 0000000..093a994
--- /dev/null
+++ b/recipes-sota/rvi-sota-client/files/sota-client-ostree.service
@@ -0,0 +1,13 @@
1[Unit]
2Description=SOTA Client
3Requires=network-online.target
4After=network.target network-online.target
5
6[Service]
7RestartSec=5
8Restart=on-failure
9Environment="RUST_LOG=debug"
10ExecStart=/usr/bin/sota_client --config /sysroot/boot/sota.toml --device-package-manager ostree
11
12[Install]
13WantedBy=multi-user.target
diff --git a/recipes-sota/rvi-sota-client/files/sota-client-uptane.service b/recipes-sota/rvi-sota-client/files/sota-client-uptane.service
new file mode 100644
index 0000000..a2d80ce
--- /dev/null
+++ b/recipes-sota/rvi-sota-client/files/sota-client-uptane.service
@@ -0,0 +1,15 @@
1[Unit]
2Description=SOTA Client
3Requires=network-online.target
4After=network.target network-online.target
5Requires=sota-client-autoprovision
6After=sota-client-autoprovision
7
8[Service]
9RestartSec=5
10Restart=on-failure
11Environment="RUST_LOG=debug"
12ExecStart=/usr/bin/sota_client --config /var/sota/sota.toml --device-package-manager uptane
13
14[Install]
15WantedBy=multi-user.target
diff --git a/recipes-sota/rvi-sota-client/files/sota-installer.service b/recipes-sota/rvi-sota-client/files/sota-installer.service
new file mode 100644
index 0000000..a4fd99e
--- /dev/null
+++ b/recipes-sota/rvi-sota-client/files/sota-installer.service
@@ -0,0 +1,12 @@
1[Unit]
2Description=SOTA Secondary ECU Installer
3Requires=network-online.target
4After=network-online.target
5
6[Service]
7RestartSec=10
8Restart=always
9ExecStart=/usr/bin/sota-installer --level debug --oneshot --config /var/sota/installer.toml
10
11[Install]
12WantedBy=multi-user.target
diff --git a/recipes-sota/rvi-sota-client/rvi-sota-client.inc b/recipes-sota/rvi-sota-client/rvi-sota-client.inc
new file mode 100644
index 0000000..2a27c9a
--- /dev/null
+++ b/recipes-sota/rvi-sota-client/rvi-sota-client.inc
@@ -0,0 +1,143 @@
1inherit cargo systemd
2
3DESCRIPTION = "rvi-sota-client recipe"
4HOMEPAGE = "https://github.com/advancedtelematic/rvi_sota_client"
5LICENSE = "MPL-2.0"
6LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=65d26fcc2f35ea6a181ac777e42db1ea"
7
8BBCLASSEXTEND = "native"
9
10S = "${WORKDIR}/git"
11
12SRC_URI[index.md5sum] = "6a635e8a081b4d4ba4cebffd721c2d7d"
13SRC_URI[index.sha256sum] = "1913c41d4b8de89a931b6f9e418f83e70a083e12e6c247e8510ee932571ebae2"
14
15# also update PV and SRC_URI crates when updating SRCREV
16SRCREV = "b9170dfd92981505c77f8f6e51d477eb1ec57071"
17
18# generate with: `make package-version`
19PV = "0.2.33-61-gb9170df"
20
21# generate with: `make yocto-version`
22SRC_URI = " \
23git://github.com/advancedtelematic/rvi_sota_client \
24file://sota-client-autoprovision.service \
25file://sota-client-ostree.service \
26file://sota-client-uptane.service \
27file://sota-installer.service \
28crate://crates.io/advapi32-sys/0.2.0 \
29crate://crates.io/aho-corasick/0.6.3 \
30crate://crates.io/ansi_term/0.9.0 \
31crate://crates.io/antidote/1.0.0 \
32crate://crates.io/atty/0.2.2 \
33crate://crates.io/backtrace/0.3.2 \
34crate://crates.io/backtrace-sys/0.1.11 \
35crate://crates.io/base64/0.5.2 \
36crate://crates.io/bit-set/0.4.0 \
37crate://crates.io/bit-vec/0.4.4 \
38crate://crates.io/bitflags/0.9.1 \
39crate://crates.io/byteorder/1.1.0 \
40crate://crates.io/bytes/0.4.4 \
41crate://crates.io/cfg-if/0.1.2 \
42crate://crates.io/chan/0.1.19 \
43crate://crates.io/chan-signal/0.2.0 \
44crate://crates.io/chrono/0.4.0 \
45crate://crates.io/clap/2.25.0 \
46crate://crates.io/core-foundation/0.2.3 \
47crate://crates.io/core-foundation-sys/0.2.3 \
48crate://crates.io/crossbeam/0.2.10 \
49crate://crates.io/crypt32-sys/0.2.0 \
50crate://crates.io/dbghelp-sys/0.2.0 \
51crate://crates.io/dbus/0.5.3 \
52crate://crates.io/dtoa/0.4.1 \
53crate://crates.io/env_logger/0.4.3 \
54crate://crates.io/error-chain/0.10.0 \
55crate://crates.io/filetime/0.1.10 \
56crate://crates.io/foreign-types/0.2.0 \
57crate://crates.io/gcc/0.3.51 \
58crate://crates.io/getopts/0.2.14 \
59crate://crates.io/hex/0.2.0 \
60crate://crates.io/httparse/1.2.3 \
61crate://crates.io/hyper/0.10.12 \
62crate://crates.io/hyper-native-tls/0.2.4 \
63crate://crates.io/idna/0.1.4 \
64crate://crates.io/iovec/0.1.0 \
65crate://crates.io/itoa/0.3.1 \
66crate://crates.io/kernel32-sys/0.2.2 \
67crate://crates.io/language-tags/0.2.2 \
68crate://crates.io/lazy_static/0.2.8 \
69crate://crates.io/libc/0.2.26 \
70crate://crates.io/libflate/0.1.5 \
71crate://crates.io/log/0.3.8 \
72crate://crates.io/maplit/0.1.4 \
73crate://crates.io/matches/0.1.6 \
74crate://crates.io/memchr/1.0.1 \
75crate://crates.io/metadeps/1.1.2 \
76crate://crates.io/mime/0.2.6 \
77crate://crates.io/native-tls/0.1.4 \
78crate://crates.io/net2/0.2.29 \
79crate://crates.io/num/0.1.40 \
80crate://crates.io/num-integer/0.1.35 \
81crate://crates.io/num-iter/0.1.34 \
82crate://crates.io/num-traits/0.1.40 \
83crate://crates.io/num_cpus/1.6.2 \
84crate://crates.io/openssl/0.9.14 \
85crate://crates.io/openssl-sys/0.9.14 \
86crate://crates.io/pem/0.4.0 \
87crate://crates.io/percent-encoding/1.0.0 \
88crate://crates.io/pkg-config/0.3.9 \
89crate://crates.io/quote/0.3.15 \
90crate://crates.io/rand/0.3.15 \
91crate://crates.io/redox_syscall/0.1.26 \
92crate://crates.io/regex/0.2.2 \
93crate://crates.io/regex-syntax/0.4.1 \
94crate://crates.io/reqwest/0.6.2 \
95crate://crates.io/ring/0.7.1 \
96crate://crates.io/rust-crypto/0.2.36 \
97crate://crates.io/rustc-demangle/0.1.4 \
98crate://crates.io/rustc-serialize/0.3.24 \
99crate://crates.io/schannel/0.1.7 \
100crate://crates.io/secur32-sys/0.2.0 \
101crate://crates.io/security-framework/0.1.14 \
102crate://crates.io/security-framework-sys/0.1.14 \
103crate://crates.io/serde/1.0.10 \
104crate://crates.io/serde_derive/1.0.10 \
105crate://crates.io/serde_derive_internals/0.15.1 \
106crate://crates.io/serde_json/1.0.2 \
107crate://crates.io/serde_urlencoded/0.5.1 \
108crate://crates.io/sha1/0.2.0 \
109crate://crates.io/strsim/0.6.0 \
110crate://crates.io/syn/0.11.11 \
111crate://crates.io/synom/0.11.3 \
112crate://crates.io/tar/0.4.13 \
113crate://crates.io/tempdir/0.3.5 \
114crate://crates.io/term_size/0.3.0 \
115crate://crates.io/textwrap/0.6.0 \
116crate://crates.io/thread_local/0.3.4 \
117crate://crates.io/time/0.1.38 \
118crate://crates.io/toml/0.2.1 \
119crate://crates.io/toml/0.4.2 \
120crate://crates.io/traitobject/0.1.0 \
121crate://crates.io/tungstenite/0.2.4 \
122crate://crates.io/typeable/0.1.2 \
123crate://crates.io/unicase/1.4.2 \
124crate://crates.io/unicode-bidi/0.3.3 \
125crate://crates.io/unicode-normalization/0.1.5 \
126crate://crates.io/unicode-segmentation/1.1.0 \
127crate://crates.io/unicode-width/0.1.4 \
128crate://crates.io/unicode-xid/0.0.4 \
129crate://crates.io/unix_socket/0.5.0 \
130crate://crates.io/unreachable/1.0.0 \
131crate://crates.io/untrusted/0.3.2 \
132crate://crates.io/url/1.5.1 \
133crate://crates.io/utf-8/0.7.1 \
134crate://crates.io/utf8-ranges/1.0.0 \
135crate://crates.io/uuid/0.5.1 \
136crate://crates.io/vec_map/0.8.0 \
137crate://crates.io/version_check/0.1.3 \
138crate://crates.io/void/1.0.2 \
139crate://crates.io/winapi/0.2.8 \
140crate://crates.io/winapi-build/0.1.1 \
141crate://crates.io/ws2_32-sys/0.2.1 \
142crate://crates.io/xattr/0.1.11 \
143"
diff --git a/recipes-sota/rvi-sota-client/rvi-sota-client_git.bb b/recipes-sota/rvi-sota-client/rvi-sota-client_git.bb
index 15aa7a4..7ce3ab5 100644
--- a/recipes-sota/rvi-sota-client/rvi-sota-client_git.bb
+++ b/recipes-sota/rvi-sota-client/rvi-sota-client_git.bb
@@ -1,137 +1,60 @@
1DESCRIPTION = "sota-client rust recipe" 1require rvi-sota-client.inc
2HOMEPAGE = "https://github.com/advancedtelematic/rvi_sota_client"
3 2
4LICENSE = "MPL-2.0"
5LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=65d26fcc2f35ea6a181ac777e42db1ea"
6 3
7inherit cargo systemd 4SYSTEMD_SERVICE_${PN} = "sota-client.service sota-client-autoprovision.service"
8
9S = "${WORKDIR}/git"
10
11SRCREV = "022cf8501f9eb84bf334a2490e6e0c67842882ab"
12
13# Generate with:
14# git describe --tags | cut -b2-
15PV = "0.2.30-2-g022cf85"
16
17BBCLASSEXTEND = "native"
18 5
19FILES_${PN} = " \ 6FILES_${PN} = " \
20 ${bindir}/sota_client \ 7/lib64 \
21 ${bindir}/sota_sysinfo.sh \ 8${bindir}/sota_client \
22 ${bindir}/system_info.sh \ 9${bindir}/sota_sysinfo.sh \
23 ${bindir}/sota_ostree.sh \ 10${bindir}/sota_provision.sh \
24 ${sysconfdir}/sota_client.version \ 11${sysconfdir}/sota_client.version \
25 ${sysconfdir}/sota_certificates \ 12${sysconfdir}/sota_certificates \
26 ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_unitdir}/system/sota_client.service', '', d)} \ 13${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_unitdir}/system/sota-client.service', '', d)} \
27 " 14${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_unitdir}/system/sota-client-autoprovision.service', '', d)} \
28
29SRC_URI = " \
30crate://crates.io/aho-corasick/0.5.3 \
31crate://crates.io/bit-set/0.2.0 \
32crate://crates.io/bit-vec/0.4.3 \
33crate://crates.io/bitflags/0.4.0 \
34crate://crates.io/bitflags/0.7.0 \
35crate://crates.io/bytes/0.3.0 \
36crate://crates.io/cfg-if/0.1.0 \
37crate://crates.io/chan-signal/0.1.7 \
38crate://crates.io/chan/0.1.18 \
39crate://crates.io/cookie/0.2.5 \
40crate://crates.io/crossbeam/0.2.10 \
41crate://crates.io/dbus/0.4.1 \
42crate://crates.io/env_logger/0.3.5 \
43crate://crates.io/gcc/0.3.40 \
44crate://crates.io/gdi32-sys/0.2.0 \
45crate://crates.io/getopts/0.2.14 \
46crate://crates.io/hpack/0.2.0 \
47crate://crates.io/httparse/1.2.1 \
48crate://crates.io/hyper/0.9.14 \
49crate://crates.io/idna/0.1.0 \
50crate://crates.io/kernel32-sys/0.2.2 \
51crate://crates.io/language-tags/0.2.2 \
52crate://crates.io/lazy_static/0.1.16 \
53crate://crates.io/lazy_static/0.2.2 \
54crate://crates.io/lazycell/0.4.0 \
55crate://crates.io/libc/0.2.18 \
56crate://crates.io/log/0.3.6 \
57crate://crates.io/matches/0.1.4 \
58crate://crates.io/memchr/0.1.11 \
59crate://crates.io/mime/0.2.2 \
60crate://crates.io/mio/0.6.1 \
61crate://crates.io/miow/0.1.4 \
62crate://crates.io/net2/0.2.26 \
63crate://crates.io/nix/0.7.0 \
64crate://crates.io/nom/1.2.4 \
65crate://crates.io/num_cpus/1.2.0 \
66crate://crates.io/openssl-sys/0.9.3 \
67crate://crates.io/openssl/0.9.3 \
68crate://crates.io/pkg-config/0.3.8 \
69crate://crates.io/rand/0.3.15 \
70crate://crates.io/regex-syntax/0.3.9 \
71crate://crates.io/regex/0.1.80 \
72crate://crates.io/rust-crypto/0.2.36 \
73crate://crates.io/rustc-serialize/0.3.22 \
74crate://crates.io/rustc_version/0.1.7 \
75crate://crates.io/semver/0.1.20 \
76crate://crates.io/sha1/0.2.0 \
77crate://crates.io/slab/0.3.0 \
78crate://crates.io/solicit/0.4.4 \
79crate://crates.io/thread-id/2.0.0 \
80crate://crates.io/thread_local/0.2.7 \
81crate://crates.io/time/0.1.35 \
82crate://crates.io/toml/0.2.1 \
83crate://crates.io/traitobject/0.0.1 \
84crate://crates.io/typeable/0.1.2 \
85crate://crates.io/unicase/1.4.0 \
86crate://crates.io/unicode-bidi/0.2.3 \
87crate://crates.io/unicode-normalization/0.1.2 \
88crate://crates.io/unix_socket/0.5.0 \
89crate://crates.io/url/1.2.3 \
90crate://crates.io/user32-sys/0.2.0 \
91crate://crates.io/utf8-ranges/0.1.3 \
92crate://crates.io/void/1.0.2 \
93crate://crates.io/winapi-build/0.1.1 \
94crate://crates.io/winapi/0.2.8 \
95crate://crates.io/ws/0.5.3 \
96crate://crates.io/ws2_32-sys/0.2.1 \
97git://github.com/advancedtelematic/rvi_sota_client \
98crate-index://crates.io/213b1a455d9270888c03a42c8d29975369102caa \
99" 15"
100SRC_URI[index.md5sum] = "79f10f436dbf26737cc80445746f16b4"
101SRC_URI[index.sha256sum] = "86114b93f1f51aaf0aec3af0751d214b351f4ff9839ba031315c1b19dcbb1913"
102 16
103SYSTEMD_SERVICE_${PN} = "sota_client.service" 17DEPENDS += " openssl openssl-native dbus "
18RDEPENDS_${PN} = " \
19bash \
20curl \
21libcrypto \
22libssl \
23lshw \
24jq \
25python-petname \
26sota-launcher \
27"
104 28
105DEPENDS += " openssl " 29export SOTA_PACKED_CREDENTIALS
106RDEPENDS_${PN} = " libcrypto \ 30export SOTA_AUTOPROVISION_CREDENTIALS
107 libssl \ 31export SOTA_AUTOPROVISION_URL
108 dbus \
109 bash \
110 lshw \
111 jq \
112 "
113 32
114do_compile_prepend() { 33do_compile_prepend() {
115 export SOTA_VERSION=$(make sota-version) 34 export SOTA_VERSION=$(make sota-version)
35 cd sota-client
116} 36}
117 37
118do_install() { 38do_install() {
39 ln -fs /lib ${D}/lib64
40
119 install -d ${D}${bindir} 41 install -d ${D}${bindir}
42 install -d ${D}${sysconfdir}
43
44 echo `git log -1 --pretty=format:%H` > ${D}${sysconfdir}/sota_client.version
45 install -c ${S}/sota-client/docker/sota_certificates ${D}${sysconfdir}
46
120 install -m 0755 target/${TARGET_SYS}/release/sota_client ${D}${bindir} 47 install -m 0755 target/${TARGET_SYS}/release/sota_client ${D}${bindir}
121 install -m 0755 run/sota_sysinfo.sh ${D}${bindir} 48 install -m 0755 ${S}/sota-client/docker/sota_provision.sh ${D}${bindir}
122 ln -fs ${bindir}/sota_sysinfo.sh ${D}${bindir}/system_info.sh # For compatibilty with old sota.toml files 49 install -m 0755 ${S}/sota-client/docker/sota_sysinfo.sh ${D}${bindir}
123 install -m 0755 run/sota_ostree.sh ${D}${bindir}
124 50
125 if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then 51 if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
126 install -d ${D}${systemd_unitdir}/system 52 install -d ${D}/${systemd_unitdir}/system
127 if ${@bb.utils.contains('DISTRO_FEATURES', 'sota', 'true', 'false', d)}; then 53 if [ -n "$SOTA_AUTOPROVISION_CREDENTIALS" -o -n "$SOTA_PACKED_CREDENTIALS" ]; then
128 install -c ${S}/run/sota_client_ostree.service ${D}${systemd_unitdir}/system/sota_client.service 54 install -m 0644 ${WORKDIR}/sota-client-uptane.service ${D}/${systemd_unitdir}/system/sota-client.service
129 else 55 else
130 install -c ${S}/run/sota_client.service ${D}${systemd_unitdir}/system/sota_client.service 56 install -m 0644 ${WORKDIR}/sota-client-ostree.service ${D}/${systemd_unitdir}/system/sota-client.service
131 fi 57 fi
58 install -m 0644 ${WORKDIR}/sota-client-autoprovision.service ${D}/${systemd_unitdir}/system/sota-client-autoprovision.service
132 fi 59 fi
133
134 install -d ${D}${sysconfdir}
135 echo `git log -1 --pretty=format:%H` > ${D}${sysconfdir}/sota_client.version
136 install -c ${S}/run/sota_certificates ${D}${sysconfdir}
137} 60}
diff --git a/recipes-sota/rvi-sota-client/sota-installer_git.bb b/recipes-sota/rvi-sota-client/sota-installer_git.bb
new file mode 100644
index 0000000..09f6e5d
--- /dev/null
+++ b/recipes-sota/rvi-sota-client/sota-installer_git.bb
@@ -0,0 +1,25 @@
1require rvi-sota-client.inc
2
3
4SYSTEMD_SERVICE_${PN} = "sota-installer.service"
5
6DEPENDS += " rvi-sota-client "
7
8FILES_${PN} = " \
9${bindir}/sota-installer \
10${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_unitdir}/system/sota-installer.service', '', d)} \
11"
12
13do_compile_prepend() {
14 cd sota-installer
15}
16
17do_install() {
18 install -d ${D}${bindir}
19 install -m 0755 target/${TARGET_SYS}/release/sota-installer ${D}${bindir}
20
21 if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
22 install -d ${D}/${systemd_unitdir}/system
23 install -m 0644 ${WORKDIR}/sota-installer.service ${D}/${systemd_unitdir}/system/sota-installer.service
24 fi
25}
diff --git a/recipes-sota/rvi-sota-client/sota-launcher_git.bb b/recipes-sota/rvi-sota-client/sota-launcher_git.bb
new file mode 100644
index 0000000..e9874e7
--- /dev/null
+++ b/recipes-sota/rvi-sota-client/sota-launcher_git.bb
@@ -0,0 +1,15 @@
1require rvi-sota-client.inc
2
3
4DEPENDS += " rvi-sota-client "
5FILES_${PN} = "${bindir}/sota-launcher"
6
7
8do_compile_prepend() {
9 cd sota-launcher
10}
11
12do_install() {
13 install -d ${D}${bindir}
14 install -m 0755 target/${TARGET_SYS}/release/sota-launcher ${D}${bindir}
15}
diff --git a/recipes-sota/sota-tools/sota-tools_git.bb b/recipes-sota/sota-tools/sota-tools_git.bb
index e472ff8..2b9d0cb 100644
--- a/recipes-sota/sota-tools/sota-tools_git.bb
+++ b/recipes-sota/sota-tools/sota-tools_git.bb
@@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=65d26fcc2f35ea6a181ac777e42db1ea"
6S = "${WORKDIR}/git" 6S = "${WORKDIR}/git"
7 7
8SRC_URI = "gitsm://github.com/advancedtelematic/sota-tools.git;branch=master" 8SRC_URI = "gitsm://github.com/advancedtelematic/sota-tools.git;branch=master"
9SRCREV = "c6ecec3e86c423dd6caaa362a5ff0a1a6f4072a8" 9SRCREV = "216cb84db98e9b0f8c6c1c407f480c5dd0b3cf62"
10 10
11inherit cmake 11inherit cmake
12 12