[meta-swupdate][PATCH] styhead migration fixes

57 views
Skip to first unread message

Dan Walkes

unread,
Jul 31, 2024, 12:15:56 PM7/31/24
to swup...@googlegroups.com, Dan Walkes
Based on the guidance from [1], resolve build errors on styhead.

This resolves 3 issues with styhead as found with the integration at [2]
and testing of branch at [3], as referenced at [4]:

````
DEBUG: Executing shell function do_configure
cat: /home/dan/trellis/oe4t/tegra-demo-distro/build-master/tmp/work/armv8a-oe4t-linux/swupdate/2024.05/defconfig: No such file or directory
WARNING: exit code 1 from a shell command.
```
This error occurs due to the swupdate.inc recipe usage of WORKDIR
instead of UNPACKDIR. Resolved by replacing most references of WORKDIR
to UNPACKDIR as suggested in [1] for swupdate.inc

```
WARNING: swupdate-image-tegra-1.0-r0 do_unpack: swupdate-image-tegra: the directory ${WORKDIR}/${PN} (/home/dan/trellis/oe4t/tegra-demo-distro/build-master/tmp/work/jetson_orin_nano_devkit_nvme-oe4t-linux/swupdate-image-tegra/1.0/swupdate-image-tegra) pointed to by the S variable doesn't exist - please set S within the recipe to point to where the source has been unpacked to
```
This warning is printed due to the setting of S based on WORKDIR
in swupdate.bbclass and the fact that the S directory is no longer
automatically created as discussed in [1]. To resolve, use the guidance
in [1] to set S and UNPACKDIR for recipes which only use file:// sources.

```
ERROR: swupdate-image-tegra-1.0-r0 do_swuimage: Error executing a python function in exec_func_python() autogenerated:

The stack trace of python calls that resulted in this exception/failure was:
File: 'exec_func_python() autogenerated', lineno: 2, function: <module>
0001:
*** 0002:do_swuimage(d)
0003:
File: '/home/dan/trellis/oe4t/tegra-demo-distro/build-master/../layers/meta-swupdate/classes-recipe/swupdate-common.bbclass', lineno: 325, function: do_swuimage
0321: list_for_cpio = ["sw-description"]
0322: workdir = d.getVar('WORKDIR')
0323: s = d.getVar('S')
0324: imgdeploydir = d.getVar('SWUDEPLOYDIR')
*** 0325: shutil.copyfile(os.path.join(workdir, "sw-description"), os.path.join(s, "sw-description"))
0326:
...
File: '/usr/lib/python3.10/shutil.py', lineno: 254, function: copyfile
0250:
0253: else:
*** 0254: with open(src, 'rb') as fsrc:
```

This error occurs due to the use of WORKDIR as the location of files instead
of UNPACKDIR. When using the guidance in [1] to set UNPACKDIR there is no
longer a need to copy from WORKDIR to UNPACKDIR since S is UNPACKDIR, so both
the workdir reference and shutil copy can be removed.

1: https://docs.yoctoproject.org/next/migration-guides/migration-5.1.html
2: https://github.com/OE4T/tegra-demo-distro/blob/master/layers/meta-tegrademo/dynamic-layers/meta-swupdate/README.md
3: https://github.com/Trellis-Logic/tegra-demo-distro/blob/scarthgap%2Bkas/layers/meta-tegrademo/dynamic-layers/meta-swupdate/README.md
4: https://groups.google.com/g/swupdate/c/E2h_qgHvJuk

Signed-off-by: Dan Walkes <danw...@trellis-logic.com>
---
classes-recipe/swupdate-common.bbclass | 2 --
classes-recipe/swupdate-image.bbclass | 3 ++-
classes-recipe/swupdate.bbclass | 3 ++-
recipes-support/swupdate/swupdate.inc | 26 +++++++++++++-------------
4 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/classes-recipe/swupdate-common.bbclass b/classes-recipe/swupdate-common.bbclass
index 0367f81..647222d 100644
--- a/classes-recipe/swupdate-common.bbclass
+++ b/classes-recipe/swupdate-common.bbclass
@@ -319,10 +319,8 @@ python do_swuimage () {
import shutil

list_for_cpio = ["sw-description"]
- workdir = d.getVar('WORKDIR')
s = d.getVar('S')
imgdeploydir = d.getVar('SWUDEPLOYDIR')
- shutil.copyfile(os.path.join(workdir, "sw-description"), os.path.join(s, "sw-description"))

if d.getVar('SWUPDATE_SIGNING'):
list_for_cpio.append('sw-description.sig')
diff --git a/classes-recipe/swupdate-image.bbclass b/classes-recipe/swupdate-image.bbclass
index 175fc4e..62ef19d 100644
--- a/classes-recipe/swupdate-image.bbclass
+++ b/classes-recipe/swupdate-image.bbclass
@@ -13,7 +13,8 @@
inherit swupdate-common
inherit image-artifact-names

-S = "${WORKDIR}/${PN}"
+S = "${WORKDIR}/sources"
+UNPACKDIR = "${S}"

SRC_URI += "file://sw-description"
SWUPDATE_IMAGES += "${IMAGE_LINK_NAME}"
diff --git a/classes-recipe/swupdate.bbclass b/classes-recipe/swupdate.bbclass
index 3656b1c..ae00085 100644
--- a/classes-recipe/swupdate.bbclass
+++ b/classes-recipe/swupdate.bbclass
@@ -36,7 +36,8 @@
inherit swupdate-common
inherit image-artifact-names

-S = "${WORKDIR}/${PN}"
+S = "${WORKDIR}/sources"
+UNPACKDIR = "${S}"

IMAGE_DEPENDS ?= ""

diff --git a/recipes-support/swupdate/swupdate.inc b/recipes-support/swupdate/swupdate.inc
index 188c25c..1b14f66 100644
--- a/recipes-support/swupdate/swupdate.inc
+++ b/recipes-support/swupdate/swupdate.inc
@@ -245,13 +245,13 @@ python () {
}

do_configure () {
- cat > ${WORKDIR}/.config <<HEREDOC
+ cat > ${UNPACKDIR}/.config <<HEREDOC
CONFIG_EXTRA_CFLAGS="${CFLAGS}"
CONFIG_EXTRA_LDFLAGS="${LDFLAGS}"
HEREDOC
- cat ${WORKDIR}/defconfig >> ${WORKDIR}/.config
+ cat ${UNPACKDIR}/defconfig >> ${UNPACKDIR}/.config

- merge_config.sh -O ${B} -m ${WORKDIR}/.config ${@" ".join(find_cfgs(d))}
+ merge_config.sh -O ${B} -m ${UNPACKDIR}/.config ${@" ".join(find_cfgs(d))}
(cd ${S} && cml1_do_configure)
}

@@ -271,34 +271,34 @@ do_install () {
fi

install -d ${D}${sysconfdir}/init.d
- install -m 755 ${WORKDIR}/swupdate ${D}${sysconfdir}/init.d
+ install -m 755 ${UNPACKDIR}/swupdate ${D}${sysconfdir}/init.d
sed -i -e "s|/usr/lib/|${libdir}/|" ${D}${sysconfdir}/init.d/swupdate

# shell based configuration loader allows to place code snippets into this folder
install -d ${D}${libdir}/swupdate/conf.d
- install -m 755 ${WORKDIR}/swupdate.sh ${D}${libdir}/swupdate
+ install -m 755 ${UNPACKDIR}/swupdate.sh ${D}${libdir}/swupdate
sed -i 's#@LIBDIR@#${libdir}#g' ${D}${libdir}/swupdate/swupdate.sh
if ${SWUPDATE_MONGOOSE}; then
- install -m 644 ${WORKDIR}/10-mongoose-args ${D}${libdir}/swupdate/conf.d/
+ install -m 644 ${UNPACKDIR}/10-mongoose-args ${D}${libdir}/swupdate/conf.d/
fi
install -d ${D}${systemd_unitdir}/system
- install -m 644 ${WORKDIR}/swupdate.service ${D}${systemd_system_unitdir}
+ install -m 644 ${UNPACKDIR}/swupdate.service ${D}${systemd_system_unitdir}
sed -i 's#@LIBDIR@#${libdir}#' ${D}${systemd_system_unitdir}/swupdate.service
- install -m 644 ${WORKDIR}/swupdate.socket.tmpl ${D}${systemd_system_unitdir}/swupdate.socket
+ install -m 644 ${UNPACKDIR}/swupdate.socket.tmpl ${D}${systemd_system_unitdir}/swupdate.socket
sed -e "s,@@SWUPDATE_SOCKET_CTRL_PATH@@,${SWUPDATE_SOCKET_CTRL_PATH},g" \
-e "s,@@SWUPDATE_SOCKET_PROGRESS_PATH@@,${SWUPDATE_SOCKET_PROGRESS_PATH},g" \
-i ${D}${systemd_system_unitdir}/swupdate.socket
- install -m 644 ${WORKDIR}/swupdate-usb@.service ${D}${systemd_system_unitdir}
- install -m 644 ${WORKDIR}/swupdate-progress.service ${D}${systemd_system_unitdir}
+ install -m 644 ${UNPACKDIR}/swupdate-usb@.service ${D}${systemd_system_unitdir}
+ install -m 644 ${UNPACKDIR}/swupdate-progress.service ${D}${systemd_system_unitdir}

if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
install -d ${D}${nonarch_libdir}/tmpfiles.d
- install -m 0644 ${WORKDIR}/tmpfiles-swupdate.conf ${D}${nonarch_libdir}/tmpfiles.d/swupdate.conf
+ install -m 0644 ${UNPACKDIR}/tmpfiles-swupdate.conf ${D}${nonarch_libdir}/tmpfiles.d/swupdate.conf
install -d ${D}${sysconfdir}/udev/rules.d
- install -m 0644 ${WORKDIR}/swupdate-usb.rules ${D}${sysconfdir}/udev/rules.d/
+ install -m 0644 ${UNPACKDIR}/swupdate-usb.rules ${D}${sysconfdir}/udev/rules.d/
else
# in case of systemd there is a service file, for sysv init we need to start it as well
- install -m 0644 ${WORKDIR}/90-start-progress ${D}${libdir}/swupdate/conf.d/
+ install -m 0644 ${UNPACKDIR}/90-start-progress ${D}${libdir}/swupdate/conf.d/
fi
}

--
2.34.1

Stefano Babic

unread,
Aug 1, 2024, 3:37:56 AM8/1/24
to Dan Walkes, swup...@googlegroups.com
Reviewed-by: Stefano Babic <stefan...@swupdate.org>

Reply all
Reply to author
Forward
0 new messages