summaryrefslogtreecommitdiffstats
path: root/classes
diff options
context:
space:
mode:
Diffstat (limited to 'classes')
-rw-r--r--classes/image_repo_manifest.bbclass4
-rw-r--r--classes/image_types_ostree.bbclass44
-rw-r--r--classes/image_types_ota.bbclass17
-rw-r--r--classes/sota.bbclass6
-rw-r--r--classes/sota_minnowboard.bbclass3
-rw-r--r--classes/sota_qemux86-64.bbclass4
-rw-r--r--classes/sota_raspberrypi.bbclass2
7 files changed, 51 insertions, 29 deletions
diff --git a/classes/image_repo_manifest.bbclass b/classes/image_repo_manifest.bbclass
index d508574..467fd9a 100644
--- a/classes/image_repo_manifest.bbclass
+++ b/classes/image_repo_manifest.bbclass
@@ -14,9 +14,9 @@ HOSTTOOLS_NONFATAL += " repo "
14# Write build information to target filesystem 14# Write build information to target filesystem
15buildinfo () { 15buildinfo () {
16 if [ $(which repo) ]; then 16 if [ $(which repo) ]; then
17 repo manifest --revision-as-HEAD -o ${IMAGE_ROOTFS}${sysconfdir}/manifest.xml 17 repo manifest --revision-as-HEAD -o ${IMAGE_ROOTFS}${sysconfdir}/manifest.xml || bbwarn "Android repo tool failed to run; manifest not copied"
18 else 18 else
19 echo "Android repo tool not food; manifest not copied." 19 bbwarn "Android repo tool not found; manifest not copied."
20 fi 20 fi
21} 21}
22 22
diff --git a/classes/image_types_ostree.bbclass b/classes/image_types_ostree.bbclass
index dc8474c..904db96 100644
--- a/classes/image_types_ostree.bbclass
+++ b/classes/image_types_ostree.bbclass
@@ -1,6 +1,6 @@
1# OSTree deployment 1# OSTree deployment
2 2
3IMAGE_DEPENDS_ostree = "ostree-native:do_populate_sysroot \ 3do_image_ostree[depends] += "ostree-native:do_populate_sysroot \
4 openssl-native:do_populate_sysroot \ 4 openssl-native:do_populate_sysroot \
5 coreutils-native:do_populate_sysroot \ 5 coreutils-native:do_populate_sysroot \
6 unzip-native:do_populate_sysroot \ 6 unzip-native:do_populate_sysroot \
@@ -11,6 +11,7 @@ export OSTREE_REPO
11export OSTREE_BRANCHNAME 11export OSTREE_BRANCHNAME
12 12
13RAMDISK_EXT ?= ".${INITRAMFS_FSTYPES}" 13RAMDISK_EXT ?= ".${INITRAMFS_FSTYPES}"
14export GARAGE_TARGET_NAME
14 15
15OSTREE_KERNEL ??= "${KERNEL_IMAGETYPE}" 16OSTREE_KERNEL ??= "${KERNEL_IMAGETYPE}"
16 17
@@ -116,6 +117,7 @@ IMAGE_CMD_ostree () {
116 fi 117 fi
117 118
118 if [ -n "${SOTA_SECONDARY_ECUS}" ]; then 119 if [ -n "${SOTA_SECONDARY_ECUS}" ]; then
120 mkdir -p var/sota/ecus
119 cp ${SOTA_SECONDARY_ECUS} var/sota/ecus 121 cp ${SOTA_SECONDARY_ECUS} var/sota/ecus
120 fi 122 fi
121 123
@@ -158,7 +160,7 @@ IMAGE_CMD_ostree () {
158} 160}
159 161
160IMAGE_TYPEDEP_ostreepush = "ostree" 162IMAGE_TYPEDEP_ostreepush = "ostree"
161IMAGE_DEPENDS_ostreepush = "aktualizr-native:do_populate_sysroot ca-certificates-native:do_populate_sysroot " 163do_image_ostreepush[depends] += "aktualizr-native:do_populate_sysroot ca-certificates-native:do_populate_sysroot"
162IMAGE_CMD_ostreepush () { 164IMAGE_CMD_ostreepush () {
163 # Print warnings if credetials are not set or if the file has not been found. 165 # Print warnings if credetials are not set or if the file has not been found.
164 if [ -n "${SOTA_PACKED_CREDENTIALS}" ]; then 166 if [ -n "${SOTA_PACKED_CREDENTIALS}" ]; then
@@ -176,11 +178,11 @@ IMAGE_CMD_ostreepush () {
176} 178}
177 179
178IMAGE_TYPEDEP_garagesign = "ostreepush" 180IMAGE_TYPEDEP_garagesign = "ostreepush"
179IMAGE_DEPENDS_garagesign = "garage-sign-native:do_populate_sysroot" 181do_image_garage_sign[depends] += "aktualizr-native:do_populate_sysroot"
180IMAGE_CMD_garagesign () { 182IMAGE_CMD_garagesign () {
181 if [ -n "${SOTA_PACKED_CREDENTIALS}" ]; then 183 if [ -n "${SOTA_PACKED_CREDENTIALS}" ]; then
182 # if credentials are issued by a server that doesn't support offline signing, exit silently 184 # if credentials are issued by a server that doesn't support offline signing, exit silently
183 unzip -p ${SOTA_PACKED_CREDENTIALS} root.json targets.pub targets.sec 2>&1 >/dev/null || exit 0 185 unzip -p ${SOTA_PACKED_CREDENTIALS} root.json targets.pub targets.sec tufrepo.url 2>&1 >/dev/null || exit 0
184 186
185 java_version=$( java -version 2>&1 | awk -F '"' '/version/ {print $2}' ) 187 java_version=$( java -version 2>&1 | awk -F '"' '/version/ {print $2}' )
186 if [ "${java_version}" = "" ]; then 188 if [ "${java_version}" = "" ]; then
@@ -191,15 +193,8 @@ IMAGE_CMD_garagesign () {
191 exit 1 193 exit 1
192 fi 194 fi
193 195
194 if [ ! -d "${GARAGE_SIGN_REPO}" ]; then 196 rm -rf ${GARAGE_SIGN_REPO}
195 garage-sign init --repo ${GARAGE_SIGN_REPO} --home-dir ${GARAGE_SIGN_REPO} --credentials ${SOTA_PACKED_CREDENTIALS} 197 garage-sign init --repo tufrepo --home-dir ${GARAGE_SIGN_REPO} --credentials ${SOTA_PACKED_CREDENTIALS}
196 fi
197
198 if [ -n "${GARAGE_SIGN_REPOSERVER}" ]; then
199 reposerver_args="--reposerver ${GARAGE_SIGN_REPOSERVER}"
200 else
201 reposerver_args=""
202 fi
203 198
204 ostree_target_hash=$(cat ${OSTREE_REPO}/refs/heads/${OSTREE_BRANCHNAME}) 199 ostree_target_hash=$(cat ${OSTREE_REPO}/refs/heads/${OSTREE_BRANCHNAME})
205 200
@@ -207,11 +202,11 @@ IMAGE_CMD_garagesign () {
207 # in which case targets.json should be pulled again and the whole procedure repeated 202 # in which case targets.json should be pulled again and the whole procedure repeated
208 push_success=0 203 push_success=0
209 for push_retries in $( seq 3 ); do 204 for push_retries in $( seq 3 ); do
210 garage-sign targets pull --repo ${GARAGE_SIGN_REPO} --home-dir ${GARAGE_SIGN_REPO} ${reposerver_args} 205 garage-sign targets pull --repo tufrepo --home-dir ${GARAGE_SIGN_REPO}
211 garage-sign targets add --repo ${GARAGE_SIGN_REPO} --home-dir ${GARAGE_SIGN_REPO} --name ${OSTREE_BRANCHNAME} --format OSTREE --version ${OSTREE_BRANCHNAME} --length 0 --url "https://example.com/" --sha256 ${ostree_target_hash} --hardwareids ${MACHINE} 206 garage-sign targets add --repo tufrepo --home-dir ${GARAGE_SIGN_REPO} --name ${GARAGE_TARGET_NAME} --format OSTREE --version ${ostree_target_hash} --length 0 --url "https://example.com/" --sha256 ${ostree_target_hash} --hardwareids ${MACHINE}
212 garage-sign targets sign --repo ${GARAGE_SIGN_REPO} --home-dir ${GARAGE_SIGN_REPO} --key-name=targets 207 garage-sign targets sign --repo tufrepo --home-dir ${GARAGE_SIGN_REPO} --key-name=targets
213 errcode=0 208 errcode=0
214 garage-sign targets push --repo ${GARAGE_SIGN_REPO} --home-dir ${GARAGE_SIGN_REPO} ${reposerver_args} || errcode=$? 209 garage-sign targets push --repo tufrepo --home-dir ${GARAGE_SIGN_REPO} || errcode=$?
215 if [ "$errcode" -eq "0" ]; then 210 if [ "$errcode" -eq "0" ]; then
216 push_success=1 211 push_success=1
217 break 212 break
@@ -224,9 +219,20 @@ IMAGE_CMD_garagesign () {
224 bberror "Couldn't push to garage repository" 219 bberror "Couldn't push to garage repository"
225 exit 1 220 exit 1
226 fi 221 fi
227 else
228 bbwarn "SOTA_PACKED_CREDENTIALS not set. Please add SOTA_PACKED_CREDENTIALS."
229 fi 222 fi
230} 223}
231 224
225IMAGE_TYPEDEP_garagecheck = "ostreepush garagesign"
226do_image_garagecheck[depends] += "aktualizr-native:do_populate_sysroot"
227IMAGE_CMD_garagecheck () {
228 if [ -n "${SOTA_PACKED_CREDENTIALS}" ]; then
229 # if credentials are issued by a server that doesn't support offline signing, exit silently
230 unzip -p ${SOTA_PACKED_CREDENTIALS} root.json targets.pub targets.sec tufrepo.url 2>&1 >/dev/null || exit 0
231 ostree_target_hash=$(cat ${OSTREE_REPO}/refs/heads/${OSTREE_BRANCHNAME})
232
233 garage-check --ref=${ostree_target_hash} \
234 --credentials=${SOTA_PACKED_CREDENTIALS} \
235 --cacert=${STAGING_ETCDIR_NATIVE}/ssl/certs/ca-certificates.crt
236 fi
237}
232# vim:set ts=4 sw=4 sts=4 expandtab: 238# vim:set ts=4 sw=4 sts=4 expandtab:
diff --git a/classes/image_types_ota.bbclass b/classes/image_types_ota.bbclass
index 1b487e7..84095a6 100644
--- a/classes/image_types_ota.bbclass
+++ b/classes/image_types_ota.bbclass
@@ -7,9 +7,11 @@
7# boot scripts, kernel and initramfs images 7# boot scripts, kernel and initramfs images
8# 8#
9 9
10OSTREE_BOOTLOADER ??= 'u-boot'
11
10do_image_otaimg[depends] += "e2fsprogs-native:do_populate_sysroot \ 12do_image_otaimg[depends] += "e2fsprogs-native:do_populate_sysroot \
11 ${@'grub:do_populate_sysroot' if d.getVar('OSTREE_BOOTLOADER', True) == 'grub' else ''} \ 13 ${@'grub:do_populate_sysroot' if d.getVar('OSTREE_BOOTLOADER', True) == 'grub' else ''} \
12 ${@'virtual/bootloader:do_deploy' if d.getVar('OSTREE_BOOTLOADER', True) == 'u-boot' else ''}" 14 ${@'virtual/bootloader:do_deploy' if d.getVar('OSTREE_BOOTLOADER', True) == 'u-boot' else ''}"
13 15
14calculate_size () { 16calculate_size () {
15 BASE=$1 17 BASE=$1
@@ -49,6 +51,8 @@ export OSTREE_BRANCHNAME
49export OSTREE_REPO 51export OSTREE_REPO
50export OSTREE_BOOTLOADER 52export OSTREE_BOOTLOADER
51 53
54export GARAGE_TARGET_NAME
55
52IMAGE_CMD_otaimg () { 56IMAGE_CMD_otaimg () {
53 if ${@bb.utils.contains('IMAGE_FSTYPES', 'otaimg', 'true', 'false', d)}; then 57 if ${@bb.utils.contains('IMAGE_FSTYPES', 'otaimg', 'true', 'false', d)}; then
54 if [ -z "$OSTREE_REPO" ]; then 58 if [ -z "$OSTREE_REPO" ]; then
@@ -81,14 +85,16 @@ IMAGE_CMD_otaimg () {
81 bberror "Invalid bootloader: ${OSTREE_BOOTLOADER}" 85 bberror "Invalid bootloader: ${OSTREE_BOOTLOADER}"
82 fi; 86 fi;
83 87
84 ostree --repo=${PHYS_SYSROOT}/ostree/repo pull-local --remote=${OSTREE_OSNAME} ${OSTREE_REPO} ${OSTREE_BRANCHNAME} 88 ostree_target_hash=$(cat ${OSTREE_REPO}/refs/heads/${OSTREE_BRANCHNAME})
89
90 ostree --repo=${PHYS_SYSROOT}/ostree/repo pull-local --remote=${OSTREE_OSNAME} ${OSTREE_REPO} ${ostree_target_hash}
85 export OSTREE_BOOT_PARTITION="/boot" 91 export OSTREE_BOOT_PARTITION="/boot"
86 kargs_list="" 92 kargs_list=""
87 for arg in ${OSTREE_KERNEL_ARGS}; do 93 for arg in ${OSTREE_KERNEL_ARGS}; do
88 kargs_list="${kargs_list} --karg-append=$arg" 94 kargs_list="${kargs_list} --karg-append=$arg"
89 done 95 done
90 96
91 ostree admin --sysroot=${PHYS_SYSROOT} deploy ${kargs_list} --os=${OSTREE_OSNAME} ${OSTREE_BRANCHNAME} 97 ostree admin --sysroot=${PHYS_SYSROOT} deploy ${kargs_list} --os=${OSTREE_OSNAME} ${ostree_target_hash}
92 98
93 # Copy deployment /home and /var/sota to sysroot 99 # Copy deployment /home and /var/sota to sysroot
94 HOME_TMP=`mktemp -d ${WORKDIR}/home-tmp-XXXXX` 100 HOME_TMP=`mktemp -d ${WORKDIR}/home-tmp-XXXXX`
@@ -100,6 +106,9 @@ IMAGE_CMD_otaimg () {
100 mv ${HOME_TMP}/usr/homedirs/home ${PHYS_SYSROOT}/ || true 106 mv ${HOME_TMP}/usr/homedirs/home ${PHYS_SYSROOT}/ || true
101 # Ensure that /var/local exists (AGL symlinks /usr/local to /var/local) 107 # Ensure that /var/local exists (AGL symlinks /usr/local to /var/local)
102 install -d ${PHYS_SYSROOT}/ostree/deploy/${OSTREE_OSNAME}/var/local 108 install -d ${PHYS_SYSROOT}/ostree/deploy/${OSTREE_OSNAME}/var/local
109 # Set package version for the first deployment
110 echo "{\"${ostree_target_hash}\":\"${GARAGE_TARGET_NAME}-${ostree_target_hash}\"}" > ${PHYS_SYSROOT}/ostree/deploy/${OSTREE_OSNAME}/var/sota/installed_versions
111
103 rm -rf ${HOME_TMP} 112 rm -rf ${HOME_TMP}
104 113
105 # Calculate image type 114 # Calculate image type
diff --git a/classes/sota.bbclass b/classes/sota.bbclass
index 7e9adca..2a12e8f 100644
--- a/classes/sota.bbclass
+++ b/classes/sota.bbclass
@@ -11,10 +11,10 @@ SOTA_CLIENT ??= "aktualizr"
11SOTA_CLIENT_PROV ??= "aktualizr-auto-prov" 11SOTA_CLIENT_PROV ??= "aktualizr-auto-prov"
12IMAGE_INSTALL_append_sota = " ostree os-release ${SOTA_CLIENT} ${SOTA_CLIENT_PROV}" 12IMAGE_INSTALL_append_sota = " ostree os-release ${SOTA_CLIENT} ${SOTA_CLIENT_PROV}"
13IMAGE_CLASSES += " image_types_ostree image_types_ota" 13IMAGE_CLASSES += " image_types_ostree image_types_ota"
14IMAGE_FSTYPES += "${@bb.utils.contains('DISTRO_FEATURES', 'sota', 'ostreepush garagesign otaimg wic', ' ', d)}" 14IMAGE_FSTYPES += "${@bb.utils.contains('DISTRO_FEATURES', 'sota', 'ostreepush garagesign garagecheck otaimg wic', ' ', d)}"
15 15
16PACKAGECONFIG_append_pn-curl = "${@bb.utils.contains('SOTA_CLIENT_FEATURES', 'hsm', " ssl", " ", d)}" 16PACKAGECONFIG_append_pn-curl = " ssl"
17PACKAGECONFIG_remove_pn-curl = "${@bb.utils.contains('SOTA_CLIENT_FEATURES', 'hsm', " gnutls", " ", d)}" 17PACKAGECONFIG_remove_pn-curl = "gnutls"
18 18
19WKS_FILE_sota ?= "sdimage-sota.wks" 19WKS_FILE_sota ?= "sdimage-sota.wks"
20 20
diff --git a/classes/sota_minnowboard.bbclass b/classes/sota_minnowboard.bbclass
index 8417348..63510e3 100644
--- a/classes/sota_minnowboard.bbclass
+++ b/classes/sota_minnowboard.bbclass
@@ -4,4 +4,7 @@ EFI_PROVIDER_sota = "grub-efi"
4WKS_FILE_sota = "efiimage-sota.wks" 4WKS_FILE_sota = "efiimage-sota.wks"
5IMAGE_BOOT_FILES_sota = "" 5IMAGE_BOOT_FILES_sota = ""
6 6
7IMAGE_FSTYPES_remove_sota = "live hddimg"
7OSTREE_KERNEL_ARGS ?= "ramdisk_size=16384 rw rootfstype=ext4 rootwait rootdelay=2 console=ttyS0,115200 console=tty0" 8OSTREE_KERNEL_ARGS ?= "ramdisk_size=16384 rw rootfstype=ext4 rootwait rootdelay=2 console=ttyS0,115200 console=tty0"
9
10IMAGE_INSTALL_append = " minnowboard-efi-startup"
diff --git a/classes/sota_qemux86-64.bbclass b/classes/sota_qemux86-64.bbclass
index 5ec4f69..666ad6b 100644
--- a/classes/sota_qemux86-64.bbclass
+++ b/classes/sota_qemux86-64.bbclass
@@ -4,8 +4,10 @@ PREFERRED_VERSION_linux-yocto_qemux86-64_sota = "4.4%"
4IMAGE_FSTYPES_remove = "wic" 4IMAGE_FSTYPES_remove = "wic"
5 5
6# U-Boot support for SOTA 6# U-Boot support for SOTA
7PREFERRED_PROVIDER_virtual/bootloader_sota = "u-boot-ota" 7PREFERRED_PROVIDER_virtual/bootloader_sota = "u-boot"
8UBOOT_MACHINE_sota = "qemu-x86_defconfig" 8UBOOT_MACHINE_sota = "qemu-x86_defconfig"
9OSTREE_BOOTLOADER ?= "u-boot" 9OSTREE_BOOTLOADER ?= "u-boot"
10 10
11OSTREE_KERNEL_ARGS ?= "ramdisk_size=16384 rw rootfstype=ext4 rootwait rootdelay=2 ostree_root=/dev/hda" 11OSTREE_KERNEL_ARGS ?= "ramdisk_size=16384 rw rootfstype=ext4 rootwait rootdelay=2 ostree_root=/dev/hda"
12
13IMAGE_ROOTFS_EXTRA_SPACE = "${@bb.utils.contains('DISTRO_FEATURES', 'sota', '65536', '', d)}"
diff --git a/classes/sota_raspberrypi.bbclass b/classes/sota_raspberrypi.bbclass
index 51d07b2..2c69ea0 100644
--- a/classes/sota_raspberrypi.bbclass
+++ b/classes/sota_raspberrypi.bbclass
@@ -1,8 +1,10 @@
1RPI_USE_U_BOOT_sota = "1"
1KERNEL_IMAGETYPE_sota = "uImage" 2KERNEL_IMAGETYPE_sota = "uImage"
2PREFERRED_PROVIDER_virtual/bootloader_sota ?= "u-boot" 3PREFERRED_PROVIDER_virtual/bootloader_sota ?= "u-boot"
3UBOOT_MACHINE_raspberrypi2_sota ?= "rpi_2_defconfig" 4UBOOT_MACHINE_raspberrypi2_sota ?= "rpi_2_defconfig"
4UBOOT_MACHINE_raspberrypi3_sota ?= "rpi_3_32b_defconfig" 5UBOOT_MACHINE_raspberrypi3_sota ?= "rpi_3_32b_defconfig"
5 6
7IMAGE_FSTYPES_remove_sota = "rpi-sdimg"
6OSTREE_BOOTLOADER ?= "u-boot" 8OSTREE_BOOTLOADER ?= "u-boot"
7 9
8# OSTree puts its own boot.scr to bcm2835-bootfiles 10# OSTree puts its own boot.scr to bcm2835-bootfiles