summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--classes/image_types_ostree.bbclass9
-rw-r--r--classes/image_types_ota.bbclass53
-rw-r--r--classes/sdcard_image-dra7xx-evm-ota.bbclass3
-rw-r--r--classes/sdcard_image-porter-ota.bbclass6
-rw-r--r--classes/sdcard_image-rpi-ota.bbclass15
-rw-r--r--recipes-sota/ostree/ostree_git.bb20
-rw-r--r--recipes-sota/rvi-sota-client/rvi-sota-client_git.bb161
-rw-r--r--recipes-sota/sota-tools/sota-tools_git.bb2
-rw-r--r--recipes-support/libgit2/libgit2-release.inc2
-rw-r--r--recipes-support/libgit2/libgit2.inc19
-rw-r--r--recipes-support/libgit2/libgit2_0.24.1.bb4
-rw-r--r--recipes-support/lshw/lshw_02.16.bb3
-rw-r--r--recipes-support/python-canonicaljson/python-canonicaljson.bb18
-rw-r--r--recipes-support/python-frozendict/python-frozendict.bb12
14 files changed, 209 insertions, 118 deletions
diff --git a/classes/image_types_ostree.bbclass b/classes/image_types_ostree.bbclass
index 8b3cbcd..59d4510 100644
--- a/classes/image_types_ostree.bbclass
+++ b/classes/image_types_ostree.bbclass
@@ -68,6 +68,10 @@ IMAGE_CMD_ostree () {
68 ln -s ../init.d/tmpfiles.sh usr/etc/rcS.d/S20tmpfiles.sh 68 ln -s ../init.d/tmpfiles.sh usr/etc/rcS.d/S20tmpfiles.sh
69 fi 69 fi
70 70
71 # Preserve OSTREE_BRANCHNAME for future information
72 mkdir -p usr/share/sota/
73 echo -n "${OSTREE_BRANCHNAME}" > usr/share/sota/branchname
74
71 # Preserve data in /home to be later copied to /sysroot/home by 75 # Preserve data in /home to be later copied to /sysroot/home by
72 # sysroot generating procedure 76 # sysroot generating procedure
73 mkdir -p usr/homedirs 77 mkdir -p usr/homedirs
@@ -122,7 +126,7 @@ IMAGE_CMD_ostree () {
122 cp ${DEPLOY_DIR_IMAGE}/${OSTREE_INITRAMFS_IMAGE}-${MACHINE}${RAMDISK_EXT} boot/initramfs-${checksum} 126 cp ${DEPLOY_DIR_IMAGE}/${OSTREE_INITRAMFS_IMAGE}-${MACHINE}${RAMDISK_EXT} boot/initramfs-${checksum}
123 127
124 # Copy image manifest 128 # Copy image manifest
125 cat ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.manifest | cut -d " " -f1,3 > usr/package.manifest 129 cat ${IMAGE_MANIFEST} | cut -d " " -f1,3 > usr/package.manifest
126 130
127 cd ${WORKDIR} 131 cd ${WORKDIR}
128 132
@@ -154,6 +158,7 @@ IMAGE_CMD_ostreepush () {
154 if [ ${OSTREE_PUSH_CREDENTIALS} ]; then 158 if [ ${OSTREE_PUSH_CREDENTIALS} ]; then
155 garage-push --repo=${OSTREE_REPO} \ 159 garage-push --repo=${OSTREE_REPO} \
156 --ref=${OSTREE_BRANCHNAME} \ 160 --ref=${OSTREE_BRANCHNAME} \
157 --credentials=${OSTREE_PUSH_CREDENTIALS} 161 --credentials=${OSTREE_PUSH_CREDENTIALS} \
162 --cacert=${STAGING_ETCDIR_NATIVE}/ssl/certs/ca-certificates.crt
158 fi 163 fi
159} 164}
diff --git a/classes/image_types_ota.bbclass b/classes/image_types_ota.bbclass
index bee1ea4..74533dd 100644
--- a/classes/image_types_ota.bbclass
+++ b/classes/image_types_ota.bbclass
@@ -9,12 +9,9 @@
9 9
10inherit image 10inherit image
11 11
12IMAGE_DEPENDS_otaimg = "e2fsprogs-native:do_populate_sysroot" 12IMAGE_DEPENDS_otaimg = "e2fsprogs-native:do_populate_sysroot \
13 13 ${@'grub:do_populate_sysroot' if d.getVar('OSTREE_BOOTLOADER', True) == 'grub' else ''} \
14# For qemux86 u-boot is not included in any live image and is built separately 14 ${@'virtual/bootloader:do_deploy' if d.getVar('OSTREE_BOOTLOADER', True) == 'u-boot' else ''}"
15IMAGE_DEPENDS_otaimg_append_qemux86 = " virtual/bootloader:do_deploy"
16IMAGE_DEPENDS_otaimg_append_qemux86-64 = " virtual/bootloader:do_deploy"
17IMAGE_DEPENDS_otaimg_append_corei7-64-intel-common = " virtual/bootloader:do_deploy"
18 15
19calculate_size () { 16calculate_size () {
20 BASE=$1 17 BASE=$1
@@ -52,6 +49,7 @@ calculate_size () {
52export OSTREE_OSNAME 49export OSTREE_OSNAME
53export OSTREE_BRANCHNAME 50export OSTREE_BRANCHNAME
54export OSTREE_REPO 51export OSTREE_REPO
52export OSTREE_BOOTLOADER
55 53
56IMAGE_CMD_otaimg () { 54IMAGE_CMD_otaimg () {
57 if ${@bb.utils.contains('IMAGE_FSTYPES', 'otaimg', 'true', 'false', d)}; then 55 if ${@bb.utils.contains('IMAGE_FSTYPES', 'otaimg', 'true', 'false', d)}; then
@@ -76,32 +74,31 @@ IMAGE_CMD_otaimg () {
76 mkdir -p ${PHYS_SYSROOT}/boot/loader.0 74 mkdir -p ${PHYS_SYSROOT}/boot/loader.0
77 ln -s loader.0 ${PHYS_SYSROOT}/boot/loader 75 ln -s loader.0 ${PHYS_SYSROOT}/boot/loader
78 76
79 touch ${PHYS_SYSROOT}/boot/loader/uEnv.txt 77 if [ "${OSTREE_BOOTLOADER}" = "grub" ]; then
78 mkdir -p ${PHYS_SYSROOT}/boot/grub2
79 touch ${PHYS_SYSROOT}/boot/grub2/grub.cfg
80 elif [ "${OSTREE_BOOTLOADER}" = "u-boot" ]; then
81 touch ${PHYS_SYSROOT}/boot/loader/uEnv.txt
82 else
83 bberror "Invalid bootloader: ${OSTREE_BOOTLOADER}"
84 fi;
80 85
81 ostree --repo=${PHYS_SYSROOT}/ostree/repo pull-local --remote=${OSTREE_OSNAME} ${OSTREE_REPO} ${OSTREE_BRANCHNAME} 86 ostree --repo=${PHYS_SYSROOT}/ostree/repo pull-local --remote=${OSTREE_OSNAME} ${OSTREE_REPO} ${OSTREE_BRANCHNAME}
82 ostree admin --sysroot=${PHYS_SYSROOT} deploy --os=${OSTREE_OSNAME} ${OSTREE_OSNAME}:${OSTREE_BRANCHNAME} 87 export OSTREE_BOOT_PARTITION="/boot"
83 88 kargs_list=""
84 # Copy deployment /home to sysroot 89 for arg in ${OSTREE_KERNEL_ARGS}; do
90 kargs_list="${kargs_list} --karg-append=$arg"
91 done
92
93 ostree admin --sysroot=${PHYS_SYSROOT} deploy ${kargs_list} --os=${OSTREE_OSNAME} ${OSTREE_OSNAME}:${OSTREE_BRANCHNAME}
94
95 # Copy deployment /home and /var/sota to sysroot
85 HOME_TMP=`mktemp -d ${WORKDIR}/home-tmp-XXXXX` 96 HOME_TMP=`mktemp -d ${WORKDIR}/home-tmp-XXXXX`
86 tar --xattrs --xattrs-include='*' -C ${HOME_TMP} -xf ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.rootfs.ostree.tar.bz2 ./usr/homedirs 97 tar --xattrs --xattrs-include='*' -C ${HOME_TMP} -xf ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.rootfs.ostree.tar.bz2 ./usr/homedirs ./var/sota || true
87 mv ${HOME_TMP}/usr/homedirs/home ${PHYS_SYSROOT}/ 98> mv ${HOME_TMP}/var/sota ${PHYS_SYSROOT}/ostree/deploy/${OSTREE_OSNAME}/var/ || true
99 mv ${HOME_TMP}/usr/homedirs/home ${PHYS_SYSROOT}/ || true
88 rm -rf ${HOME_TMP} 100 rm -rf ${HOME_TMP}
89 101
90 # Deploy device credentials
91 if [ -n "$SOTA_CREDENTIALS" ]; then
92 if [ -f "$SOTA_CREDENTIALS" ]; then
93 EXT=`basename $SOTA_CREDENTIALS | cut -d'.' -f2`
94 if [ "$EXT" != "toml" ]; then
95 bbwarn "File\'s extension is not \'toml\', make sure you have the correct file"
96 fi
97
98 cat $SOTA_CREDENTIALS | sed 's/^package_manager = .*$/package_manager = "ostree"/' > ${PHYS_SYSROOT}/boot/sota.toml
99 chmod 644 ${PHYS_SYSROOT}/boot/sota.toml
100 else
101 bberror "File $SOTA_CREDENTIALS does not exist"
102 fi
103 fi
104
105 # Calculate image type 102 # Calculate image type
106 OTA_ROOTFS_SIZE=$(calculate_size `du -ks $PHYS_SYSROOT | cut -f 1` "${IMAGE_OVERHEAD_FACTOR}" "${IMAGE_ROOTFS_SIZE}" "${IMAGE_ROOTFS_MAXSIZE}" `expr ${IMAGE_ROOTFS_EXTRA_SPACE}` "${IMAGE_ROOTFS_ALIGNMENT}") 103 OTA_ROOTFS_SIZE=$(calculate_size `du -ks $PHYS_SYSROOT | cut -f 1` "${IMAGE_OVERHEAD_FACTOR}" "${IMAGE_ROOTFS_SIZE}" "${IMAGE_ROOTFS_MAXSIZE}" `expr ${IMAGE_ROOTFS_EXTRA_SPACE}` "${IMAGE_ROOTFS_ALIGNMENT}")
107 104
@@ -118,7 +115,7 @@ IMAGE_CMD_otaimg () {
118 rm -rf ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.otaimg 115 rm -rf ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.otaimg
119 sync 116 sync
120 dd if=/dev/zero of=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.otaimg seek=$OTA_ROOTFS_SIZE count=$COUNT bs=1024 117 dd if=/dev/zero of=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.otaimg seek=$OTA_ROOTFS_SIZE count=$COUNT bs=1024
121 mkfs.ext4 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.otaimg -d ${PHYS_SYSROOT} 118 mkfs.ext4 -O ^64bit ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.otaimg -d ${PHYS_SYSROOT}
122 rm -rf ${PHYS_SYSROOT} 119 rm -rf ${PHYS_SYSROOT}
123 120
124 rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.otaimg 121 rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.otaimg
diff --git a/classes/sdcard_image-dra7xx-evm-ota.bbclass b/classes/sdcard_image-dra7xx-evm-ota.bbclass
index f023649..179ed10 100644
--- a/classes/sdcard_image-dra7xx-evm-ota.bbclass
+++ b/classes/sdcard_image-dra7xx-evm-ota.bbclass
@@ -68,5 +68,8 @@ IMAGE_CMD_dra7xx-evm-sdimg-ota () {
68 xz -k "${SDIMG_OTA}" 68 xz -k "${SDIMG_OTA}"
69 ;; 69 ;;
70 esac 70 esac
71
72 rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.rootfs.dra7xx-evm-sdimg-ota
73 ln -s ${IMAGE_NAME}.rootfs.dra7xx-evm-sdimg-ota ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.rootfs.dra7xx-evm-sdimg-ota
71} 74}
72 75
diff --git a/classes/sdcard_image-porter-ota.bbclass b/classes/sdcard_image-porter-ota.bbclass
index 5909b44..a9619dc 100644
--- a/classes/sdcard_image-porter-ota.bbclass
+++ b/classes/sdcard_image-porter-ota.bbclass
@@ -59,9 +59,6 @@ IMAGE_CMD_porter-sdimg-ota () {
59 dd if=${SDIMG_OTA_ROOTFS} of=${SDIMG_OTA} conv=notrunc seek=1 bs=$(expr 1024 \* ${BOOT_SPACE_ALIGNED} + ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync 59 dd if=${SDIMG_OTA_ROOTFS} of=${SDIMG_OTA} conv=notrunc seek=1 bs=$(expr 1024 \* ${BOOT_SPACE_ALIGNED} + ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync
60 fi 60 fi
61 61
62 rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.porter-sdimg-ota
63 ln -s ${IMAGE_NAME}.porter-sdimg-ota ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.porter-sdimg-ota
64
65 # Optionally apply compression 62 # Optionally apply compression
66 case "${SDIMG_OTA_COMPRESSION}" in 63 case "${SDIMG_OTA_COMPRESSION}" in
67 "gzip") 64 "gzip")
@@ -74,5 +71,8 @@ IMAGE_CMD_porter-sdimg-ota () {
74 xz -k "${SDIMG_OTA}" 71 xz -k "${SDIMG_OTA}"
75 ;; 72 ;;
76 esac 73 esac
74
75 rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.rootfs.porter-sdimg-ota
76 ln -s ${IMAGE_NAME}.rootfs.porter-sdimg-ota ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.rootfs.porter-sdimg-ota
77} 77}
78 78
diff --git a/classes/sdcard_image-rpi-ota.bbclass b/classes/sdcard_image-rpi-ota.bbclass
index cb0c597..f5c35a2 100644
--- a/classes/sdcard_image-rpi-ota.bbclass
+++ b/classes/sdcard_image-rpi-ota.bbclass
@@ -72,6 +72,8 @@ SDIMG_OTA = "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.rpi-sdimg-ota"
72# Additional files and/or directories to be copied into the vfat partition from the IMAGE_ROOTFS. 72# Additional files and/or directories to be copied into the vfat partition from the IMAGE_ROOTFS.
73FATPAYLOAD ?= "" 73FATPAYLOAD ?= ""
74 74
75IMAGEDATESTAMP = "${@time.strftime('%Y.%m.%d',time.gmtime())}"
76IMAGE_CMD_rpi-sdimg-ota[vardepsexclude] += "IMAGEDATESTAMP"
75IMAGE_CMD_rpi-sdimg-ota[vardepsexclude] += "DATETIME" 77IMAGE_CMD_rpi-sdimg-ota[vardepsexclude] += "DATETIME"
76 78
77IMAGE_CMD_rpi-sdimg-ota () { 79IMAGE_CMD_rpi-sdimg-ota () {
@@ -123,8 +125,10 @@ IMAGE_CMD_rpi-sdimg-ota () {
123 # Copy device tree overlays to dedicated folder 125 # Copy device tree overlays to dedicated folder
124 mmd -i ${WORKDIR}/boot.img overlays 126 mmd -i ${WORKDIR}/boot.img overlays
125 for DTB in ${DT_OVERLAYS}; do 127 for DTB in ${DT_OVERLAYS}; do
126 DTB_BASE_NAME=`basename ${DTB} .dtb` 128 DTB_EXT=${DTB##*.}
127 mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTB_BASE_NAME}.dtb ::overlays/${DTB_BASE_NAME}.dtbo 129 DTB_BASE_NAME=`basename ${DTB} ."${DTB_EXT}"`
130
131 mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTB_BASE_NAME}.${DTB_EXT} ::overlays/${DTB_BASE_NAME}.${DTB_EXT}
128 done 132 done
129 fi 133 fi
130 134
@@ -145,6 +149,10 @@ IMAGE_CMD_rpi-sdimg-ota () {
145 done 149 done
146 fi 150 fi
147 151
152 # Add stamp file
153 echo "${IMAGE_NAME}-${IMAGEDATESTAMP}" > ${WORKDIR}/image-version-info
154 mcopy -i ${WORKDIR}/boot.img -v ${WORKDIR}//image-version-info ::
155
148 # Burn Partitions 156 # Burn Partitions
149 sync 157 sync
150 dd if=${WORKDIR}/boot.img of=${SDIMG_OTA} conv=notrunc seek=1 bs=$(expr ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync 158 dd if=${WORKDIR}/boot.img of=${SDIMG_OTA} conv=notrunc seek=1 bs=$(expr ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync
@@ -171,6 +179,9 @@ IMAGE_CMD_rpi-sdimg-ota () {
171 xz -k "${SDIMG_OTA}" 179 xz -k "${SDIMG_OTA}"
172 ;; 180 ;;
173 esac 181 esac
182
183 rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.rootfs.rpi-sdimg-ota
184 ln -s ${IMAGE_NAME}.rootfs.rpi-sdimg-ota ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.rootfs.rpi-sdimg-ota
174} 185}
175 186
176ROOTFS_POSTPROCESS_COMMAND += " rpi_generate_sysctl_config ; " 187ROOTFS_POSTPROCESS_COMMAND += " rpi_generate_sysctl_config ; "
diff --git a/recipes-sota/ostree/ostree_git.bb b/recipes-sota/ostree/ostree_git.bb
index 5775dfa..102b70f 100644
--- a/recipes-sota/ostree/ostree_git.bb
+++ b/recipes-sota/ostree/ostree_git.bb
@@ -8,7 +8,9 @@ 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="6517a8a27a1386e7cb5482e7cb2919fe92721ccf" 11SRCREV="3b09620c2738bce4ed45e099cf2e4c5df7671d39"
12
13PV = "2017.3-31-g3b09620c"
12 14
13S = "${WORKDIR}/git" 15S = "${WORKDIR}/git"
14 16
@@ -16,16 +18,20 @@ BBCLASSEXTEND = "native"
16 18
17DEPENDS += "attr libarchive glib-2.0 pkgconfig gpgme libgsystem fuse libsoup-2.4 e2fsprogs gtk-doc-native" 19DEPENDS += "attr libarchive glib-2.0 pkgconfig gpgme libgsystem fuse libsoup-2.4 e2fsprogs gtk-doc-native"
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"
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 = "" 36SYSTEMD_REQUIRED_class-native = ""
31 37
@@ -55,7 +61,7 @@ do_compile_prepend() {
55export SYSTEMD_REQUIRED 61export SYSTEMD_REQUIRED
56 62
57do_install_append() { 63do_install_append() {
58 if [ -n $SYSTEMD_REQUIRED ]; then 64 if [ -n ${SYSTEMD_REQUIRED} ]; then
59 install -p -D ${S}/src/boot/ostree-prepare-root.service ${D}${systemd_unitdir}/system/ostree-prepare-root.service 65 install -p -D ${S}/src/boot/ostree-prepare-root.service ${D}${systemd_unitdir}/system/ostree-prepare-root.service
60 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
61 fi 67 fi
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 c469ac7..9a3dbf9 100644
--- a/recipes-sota/rvi-sota-client/rvi-sota-client_git.bb
+++ b/recipes-sota/rvi-sota-client/rvi-sota-client_git.bb
@@ -8,107 +8,154 @@ inherit cargo systemd
8 8
9S = "${WORKDIR}/git" 9S = "${WORKDIR}/git"
10 10
11SRCREV = "022cf8501f9eb84bf334a2490e6e0c67842882ab" 11# When changing this, don't forget to:
12# 1) Update PV
13# 2) Check that Cargo.lock hasn't changed with git diff old..new Cargo.lock
14SRCREV = "878aa386e61bc253e4fae624ae62507710cd23f3"
12 15
13# Generate with: 16# Generate with:
14# git describe --tags | cut -b2- 17# git describe --tags | cut -b2-
15PV = "0.2.30-2-g022cf85" 18# or from the rvi_sota_client repo:
19# make package-version
20PV = "0.2.32-131-g878aa38"
16 21
17BBCLASSEXTEND = "native" 22BBCLASSEXTEND = "native"
18 23
19FILES_${PN} = " \ 24FILES_${PN} = " \
25 /lib64 \
26 ${bindir}/canonical_json.py \
20 ${bindir}/sota_client \ 27 ${bindir}/sota_client \
21 ${bindir}/sota_sysinfo.sh \ 28 ${bindir}/sota_sysinfo.sh \
22 ${bindir}/system_info.sh \ 29 ${bindir}/system_info.sh \
23 ${bindir}/sota_ostree.sh \ 30 ${bindir}/sota_ostree.sh \
31 ${bindir}/sota_prov.sh \
24 ${sysconfdir}/sota_client.version \ 32 ${sysconfdir}/sota_client.version \
25 ${sysconfdir}/sota_certificates \ 33 ${sysconfdir}/sota_certificates \
34 /var/sota/sota_provisioning_credentials.p12 \
35 /var/sota/sota_provisioning_url.env \
36 ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_unitdir}/system/sota_client_autoprovision.service', '', d)} \
26 ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_unitdir}/system/sota_client.service', '', d)} \ 37 ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_unitdir}/system/sota_client.service', '', d)} \
27 " 38 "
28 39
40# list of dependencies can be generated from Cargo.lock by running
41# cat Cargo.lock | sed -e '1,/metadata/ d' Cargo.lock | awk '{print "crate://crates.io/"$2 "/" $3" \\"}'
29SRC_URI = " \ 42SRC_URI = " \
30crate://crates.io/aho-corasick/0.5.3 \ 43crate://crates.io/aho-corasick/0.5.3 \
31crate://crates.io/bit-set/0.2.0 \ 44crate://crates.io/aho-corasick/0.6.3 \
45crate://crates.io/base64/0.4.1 \
46crate://crates.io/bit-set/0.4.0 \
32crate://crates.io/bit-vec/0.4.3 \ 47crate://crates.io/bit-vec/0.4.3 \
33crate://crates.io/bitflags/0.4.0 \
34crate://crates.io/bitflags/0.7.0 \ 48crate://crates.io/bitflags/0.7.0 \
35crate://crates.io/bytes/0.3.0 \ 49crate://crates.io/byteorder/1.0.0 \
50crate://crates.io/bytes/0.4.1 \
36crate://crates.io/cfg-if/0.1.0 \ 51crate://crates.io/cfg-if/0.1.0 \
37crate://crates.io/chan-signal/0.1.7 \ 52crate://crates.io/chan/0.1.19 \
38crate://crates.io/chan/0.1.18 \ 53crate://crates.io/chan-signal/0.2.0 \
39crate://crates.io/cookie/0.2.5 \ 54crate://crates.io/chrono/0.3.0 \
40crate://crates.io/crossbeam/0.2.10 \ 55crate://crates.io/crossbeam/0.2.10 \
41crate://crates.io/dbus/0.4.1 \ 56crate://crates.io/dbus/0.5.2 \
42crate://crates.io/env_logger/0.3.5 \ 57crate://crates.io/deque/0.3.1 \
43crate://crates.io/gcc/0.3.40 \ 58crate://crates.io/dtoa/0.4.1 \
59crate://crates.io/env_logger/0.4.2 \
60crate://crates.io/error-chain/0.7.2 \
61crate://crates.io/foreign-types/0.2.0 \
62crate://crates.io/gcc/0.3.45 \
44crate://crates.io/gdi32-sys/0.2.0 \ 63crate://crates.io/gdi32-sys/0.2.0 \
45crate://crates.io/getopts/0.2.14 \ 64crate://crates.io/getopts/0.2.14 \
46crate://crates.io/hpack/0.2.0 \
47crate://crates.io/httparse/1.2.1 \ 65crate://crates.io/httparse/1.2.1 \
48crate://crates.io/hyper/0.9.14 \ 66crate://crates.io/hyper/0.10.5 \
49crate://crates.io/idna/0.1.0 \ 67crate://crates.io/idna/0.1.0 \
68crate://crates.io/iovec/0.1.0 \
69crate://crates.io/itoa/0.3.1 \
50crate://crates.io/kernel32-sys/0.2.2 \ 70crate://crates.io/kernel32-sys/0.2.2 \
51crate://crates.io/language-tags/0.2.2 \ 71crate://crates.io/language-tags/0.2.2 \
52crate://crates.io/lazy_static/0.1.16 \ 72crate://crates.io/lazy_static/0.2.5 \
53crate://crates.io/lazy_static/0.2.2 \ 73crate://crates.io/libc/0.2.21 \
54crate://crates.io/lazycell/0.4.0 \ 74crate://crates.io/log/0.3.7 \
55crate://crates.io/libc/0.2.18 \
56crate://crates.io/log/0.3.6 \
57crate://crates.io/matches/0.1.4 \ 75crate://crates.io/matches/0.1.4 \
58crate://crates.io/memchr/0.1.11 \ 76crate://crates.io/memchr/0.1.11 \
59crate://crates.io/mime/0.2.2 \ 77crate://crates.io/memchr/1.0.1 \
60crate://crates.io/mio/0.6.1 \ 78crate://crates.io/metadeps/1.1.1 \
61crate://crates.io/miow/0.1.4 \ 79crate://crates.io/mime/0.2.3 \
62crate://crates.io/net2/0.2.26 \
63crate://crates.io/nix/0.7.0 \
64crate://crates.io/nom/1.2.4 \ 80crate://crates.io/nom/1.2.4 \
65crate://crates.io/num_cpus/1.2.0 \ 81crate://crates.io/num/0.1.37 \
66crate://crates.io/openssl-sys/0.9.3 \ 82crate://crates.io/num-integer/0.1.33 \
67crate://crates.io/openssl/0.9.3 \ 83crate://crates.io/num-iter/0.1.33 \
68crate://crates.io/pkg-config/0.3.8 \ 84crate://crates.io/num-traits/0.1.37 \
85crate://crates.io/num_cpus/1.3.0 \
86crate://crates.io/openssl/0.9.10 \
87crate://crates.io/openssl-sys/0.9.10 \
88crate://crates.io/pem/0.2.0 \
89crate://crates.io/pkg-config/0.3.9 \
90crate://crates.io/quote/0.3.15 \
69crate://crates.io/rand/0.3.15 \ 91crate://crates.io/rand/0.3.15 \
70crate://crates.io/regex-syntax/0.3.9 \ 92crate://crates.io/rayon/0.6.0 \
93crate://crates.io/redox_syscall/0.1.17 \
71crate://crates.io/regex/0.1.80 \ 94crate://crates.io/regex/0.1.80 \
95crate://crates.io/regex/0.2.1 \
96crate://crates.io/regex-syntax/0.3.9 \
97crate://crates.io/regex-syntax/0.4.0 \
98crate://crates.io/ring/0.7.1 \
72crate://crates.io/rust-crypto/0.2.36 \ 99crate://crates.io/rust-crypto/0.2.36 \
73crate://crates.io/rustc-serialize/0.3.22 \ 100crate://crates.io/rustc-serialize/0.3.23 \
74crate://crates.io/rustc_version/0.1.7 \ 101crate://crates.io/rustc_version/0.1.7 \
75crate://crates.io/semver/0.1.20 \ 102crate://crates.io/semver/0.1.20 \
103crate://crates.io/serde/0.9.11 \
104crate://crates.io/serde_codegen_internals/0.14.1 \
105crate://crates.io/serde_derive/0.9.11 \
106crate://crates.io/serde_json/0.9.9 \
76crate://crates.io/sha1/0.2.0 \ 107crate://crates.io/sha1/0.2.0 \
77crate://crates.io/slab/0.3.0 \ 108crate://crates.io/syn/0.11.9 \
78crate://crates.io/solicit/0.4.4 \ 109crate://crates.io/synom/0.11.3 \
79crate://crates.io/thread-id/2.0.0 \ 110crate://crates.io/thread-id/2.0.0 \
111crate://crates.io/thread-id/3.0.0 \
80crate://crates.io/thread_local/0.2.7 \ 112crate://crates.io/thread_local/0.2.7 \
81crate://crates.io/time/0.1.35 \ 113crate://crates.io/thread_local/0.3.3 \
114crate://crates.io/time/0.1.36 \
82crate://crates.io/toml/0.2.1 \ 115crate://crates.io/toml/0.2.1 \
83crate://crates.io/traitobject/0.0.1 \ 116crate://crates.io/toml/0.3.1 \
117crate://crates.io/traitobject/0.1.0 \
118crate://crates.io/tungstenite/0.1.1 \
84crate://crates.io/typeable/0.1.2 \ 119crate://crates.io/typeable/0.1.2 \
85crate://crates.io/unicase/1.4.0 \ 120crate://crates.io/unicase/1.4.0 \
86crate://crates.io/unicode-bidi/0.2.3 \ 121crate://crates.io/unicode-bidi/0.2.5 \
87crate://crates.io/unicode-normalization/0.1.2 \ 122crate://crates.io/unicode-normalization/0.1.4 \
123crate://crates.io/unicode-xid/0.0.4 \
88crate://crates.io/unix_socket/0.5.0 \ 124crate://crates.io/unix_socket/0.5.0 \
89crate://crates.io/url/1.2.3 \ 125crate://crates.io/unreachable/0.1.1 \
126crate://crates.io/untrusted/0.3.2 \
127crate://crates.io/url/1.4.0 \
90crate://crates.io/user32-sys/0.2.0 \ 128crate://crates.io/user32-sys/0.2.0 \
129crate://crates.io/utf-8/0.7.0 \
91crate://crates.io/utf8-ranges/0.1.3 \ 130crate://crates.io/utf8-ranges/0.1.3 \
131crate://crates.io/utf8-ranges/1.0.0 \
132crate://crates.io/uuid/0.4.0 \
92crate://crates.io/void/1.0.2 \ 133crate://crates.io/void/1.0.2 \
93crate://crates.io/winapi-build/0.1.1 \
94crate://crates.io/winapi/0.2.8 \ 134crate://crates.io/winapi/0.2.8 \
95crate://crates.io/ws/0.5.3 \ 135crate://crates.io/winapi-build/0.1.1 \
96crate://crates.io/ws2_32-sys/0.2.1 \
97git://github.com/advancedtelematic/rvi_sota_client \ 136git://github.com/advancedtelematic/rvi_sota_client \
98" 137"
138
99SRC_URI[index.md5sum] = "79f10f436dbf26737cc80445746f16b4" 139SRC_URI[index.md5sum] = "79f10f436dbf26737cc80445746f16b4"
100SRC_URI[index.sha256sum] = "86114b93f1f51aaf0aec3af0751d214b351f4ff9839ba031315c1b19dcbb1913" 140SRC_URI[index.sha256sum] = "86114b93f1f51aaf0aec3af0751d214b351f4ff9839ba031315c1b19dcbb1913"
101 141
102SYSTEMD_SERVICE_${PN} = "sota_client.service" 142SYSTEMD_SERVICE_${PN} = "sota_client.service sota_client_autoprovision.service"
103 143
104DEPENDS += " openssl dbus" 144DEPENDS += " openssl openssl-native dbus "
105RDEPENDS_${PN} = " libcrypto \ 145RDEPENDS_${PN} = " libcrypto \
106 libssl \ 146 libssl \
107 bash \ 147 bash \
108 lshw \ 148 lshw \
109 jq \ 149 jq \
150 curl \
151 python \
152 python-canonicaljson \
153 python-json \
110 " 154 "
111 155
156export SOTA_AUTOPROVISION_CREDENTIALS
157export SOTA_AUTOPROVISION_URL
158
112do_compile_prepend() { 159do_compile_prepend() {
113 export SOTA_VERSION=$(make sota-version) 160 export SOTA_VERSION=$(make sota-version)
114} 161}
@@ -116,20 +163,38 @@ do_compile_prepend() {
116do_install() { 163do_install() {
117 install -d ${D}${bindir} 164 install -d ${D}${bindir}
118 install -m 0755 target/${TARGET_SYS}/release/sota_client ${D}${bindir} 165 install -m 0755 target/${TARGET_SYS}/release/sota_client ${D}${bindir}
119 install -m 0755 run/sota_sysinfo.sh ${D}${bindir} 166 install -m 0755 ${S}/run/sota_sysinfo.sh ${D}${bindir}
120 ln -fs ${bindir}/sota_sysinfo.sh ${D}${bindir}/system_info.sh # For compatibilty with old sota.toml files 167 ln -fs ${bindir}/sota_sysinfo.sh ${D}${bindir}/system_info.sh # For compatibilty with old sota.toml files
121 install -m 0755 run/sota_ostree.sh ${D}${bindir} 168 install -m 0755 ${S}/run/sota_ostree.sh ${D}${bindir}
169 install -m 0755 ${S}/run/sota_prov.sh ${D}${bindir}
170 install -m 0755 ${S}/run/canonical_json.py ${D}${bindir}
122 171
123 if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then 172 if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
124 install -d ${D}${systemd_unitdir}/system 173 install -d ${D}/${systemd_unitdir}/system
125 if ${@bb.utils.contains('DISTRO_FEATURES', 'sota', 'true', 'false', d)}; then 174 if [ -n "$SOTA_AUTOPROVISION_CREDENTIALS" ]; then
126 install -c ${S}/run/sota_client_ostree.service ${D}${systemd_unitdir}/system/sota_client.service 175 install -c ${S}/run/sota_client_uptane_auto.service ${D}${systemd_unitdir}/system/sota_client.service
127 else 176 else
128 install -c ${S}/run/sota_client.service ${D}${systemd_unitdir}/system/sota_client.service 177 install -c ${S}/run/sota_client_ostree.service ${D}${systemd_unitdir}/system/sota_client.service
129 fi 178 fi
179 install -c ${S}/run/sota_client_autoprovision.service ${D}${systemd_unitdir}/system/sota_client_autoprovision.service
130 fi 180 fi
131 181
132 install -d ${D}${sysconfdir} 182 install -d ${D}${sysconfdir}
133 echo `git log -1 --pretty=format:%H` > ${D}${sysconfdir}/sota_client.version 183 echo `git log -1 --pretty=format:%H` > ${D}${sysconfdir}/sota_client.version
134 install -c ${S}/run/sota_certificates ${D}${sysconfdir} 184 install -c ${S}/run/sota_certificates ${D}${sysconfdir}
185 ln -fs /lib ${D}/lib64
186
187 if [ -n "$SOTA_AUTOPROVISION_CREDENTIALS" ]; then
188 EXPDATE=`openssl pkcs12 -in $SOTA_AUTOPROVISION_CREDENTIALS -password "pass:" -nodes 2>/dev/null | openssl x509 -noout -enddate | cut -f2 -d "="`
189
190 if [ `date +%s` -ge `date -d "${EXPDATE}" +%s` ]; then
191 bberror "Certificate ${SOTA_AUTOPROVISION_CREDENTIALS} has expired on ${EXPDATE}"
192 fi
193
194 install -d ${D}/var
195 install -d ${D}/var/sota
196 install -m 0655 $SOTA_AUTOPROVISION_CREDENTIALS ${D}/var/sota/sota_provisioning_credentials.p12
197 echo "SOTA_GATEWAY_URI=$SOTA_AUTOPROVISION_URL" > ${D}/var/sota/sota_provisioning_url.env
198 fi
199
135} 200}
diff --git a/recipes-sota/sota-tools/sota-tools_git.bb b/recipes-sota/sota-tools/sota-tools_git.bb
index e472ff8..326ff20 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 = "4d7f22f50ab43be5bee61ad3e96cd9db4ef3a372"
10 10
11inherit cmake 11inherit cmake
12 12
diff --git a/recipes-support/libgit2/libgit2-release.inc b/recipes-support/libgit2/libgit2-release.inc
deleted file mode 100644
index 62a13cf..0000000
--- a/recipes-support/libgit2/libgit2-release.inc
+++ /dev/null
@@ -1,2 +0,0 @@
1require libgit2.inc
2SRC_URI = "https://github.com/libgit2/libgit2/archive/v${PV}.tar.gz"
diff --git a/recipes-support/libgit2/libgit2.inc b/recipes-support/libgit2/libgit2.inc
deleted file mode 100644
index a0da834..0000000
--- a/recipes-support/libgit2/libgit2.inc
+++ /dev/null
@@ -1,19 +0,0 @@
1SUMMARY = "the Git linkable library"
2HOMEPAGE = "http://libgit2.github.com/"
3LICENSE = "GPL-2.0-with-GCC-exception"
4
5DEPENDS = "openssl zlib"
6
7inherit cmake
8
9# CLAR = tests, needs python-native
10EXTRA_OECMAKE = "\
11 -DTHREADSAFE=ON \
12 -DBUILD_CLAR=OFF \
13 -DSHA1_TYPE="builtin" \
14 -DCMAKE_BUILD_TYPE=RelWithDebInfo \
15 -DBUILD_SHARED_LIBS=ON \
16 -DBUILD_EXAMPLES=OFF \
17"
18
19BBCLASSEXTEND = "native"
diff --git a/recipes-support/libgit2/libgit2_0.24.1.bb b/recipes-support/libgit2/libgit2_0.24.1.bb
deleted file mode 100644
index 2d0c6ff..0000000
--- a/recipes-support/libgit2/libgit2_0.24.1.bb
+++ /dev/null
@@ -1,4 +0,0 @@
1LIC_FILES_CHKSUM = "file://COPYING;md5=34197a479f637beb9e09e56893f48bc2"
2SRC_URI[md5sum] = "3674ca2d40388b1175e25b6f5a3a82ad"
3SRC_URI[sha256sum] = "60198cbb34066b9b5c1613d15c0479f6cd25f4aef42f7ec515cd1cc13a77fede"
4require libgit2-release.inc
diff --git a/recipes-support/lshw/lshw_02.16.bb b/recipes-support/lshw/lshw_02.16.bb
index 53b0d65..99901ff 100644
--- a/recipes-support/lshw/lshw_02.16.bb
+++ b/recipes-support/lshw/lshw_02.16.bb
@@ -14,12 +14,11 @@ DEPENDS = "pciutils \
14 usbutils" 14 usbutils"
15COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux" 15COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux"
16 16
17PR="r1"
18
19SRC_URI="http://ezix.org/software/files/lshw-B.${PV}.tar.gz \ 17SRC_URI="http://ezix.org/software/files/lshw-B.${PV}.tar.gz \
20 file://cross-compile.patch \ 18 file://cross-compile.patch \
21 file://ldflags.patch \ 19 file://ldflags.patch \
22 " 20 "
21
23SRC_URI[md5sum] = "67479167add605e8f001097c30e96d0d" 22SRC_URI[md5sum] = "67479167add605e8f001097c30e96d0d"
24SRC_URI[sha256sum] = "809882429555b93259785cc261dbff04c16c93d064db5f445a51945bc47157cb" 23SRC_URI[sha256sum] = "809882429555b93259785cc261dbff04c16c93d064db5f445a51945bc47157cb"
25 24
diff --git a/recipes-support/python-canonicaljson/python-canonicaljson.bb b/recipes-support/python-canonicaljson/python-canonicaljson.bb
new file mode 100644
index 0000000..d8a0728
--- /dev/null
+++ b/recipes-support/python-canonicaljson/python-canonicaljson.bb
@@ -0,0 +1,18 @@
1DESCRIPTION = "python-canonicaljson recipe"
2
3LICENSE = "Apache-2.0"
4LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
5
6SRCREV = "92e2c06871cc275c2a8b8e3e899141a212aae0e8"
7SRC_URI = "git://github.com/matrix-org/python-canonicaljson.git"
8S = "${WORKDIR}/git"
9
10# Generate with:
11# git describe --tags | cut -b2-
12PV = "1.0.0"
13inherit setuptools
14
15RDEPENDS_${PN} = "\
16 python-simplejson \
17 python-frozendict \
18 "
diff --git a/recipes-support/python-frozendict/python-frozendict.bb b/recipes-support/python-frozendict/python-frozendict.bb
new file mode 100644
index 0000000..79fe5c8
--- /dev/null
+++ b/recipes-support/python-frozendict/python-frozendict.bb
@@ -0,0 +1,12 @@
1DESCRIPTION = "python-frozendict recipe"
2
3LICENSE = "BSD"
4LIC_FILES_CHKSUM = "file://${S}/LICENSE.txt;md5=f4da037a49c09b456fdbbc7a5bd36132"
5
6SRCREV = "c5d16bafcca7b72ff3e8f40d3a9081e4c9233f1b"
7SRC_URI = "git://github.com/slezica/python-frozendict.git"
8S = "${WORKDIR}/git"
9
10PV = "1.2"
11inherit setuptools
12