Message ID | 20240731161544.4175303-1-danwalkes@trellis-logic.com |
---|---|
State | Changes Requested |
Delegated to: | Stefano Babic |
Headers | show |
Series | [meta-swupdate] styhead migration fixes | expand |
On 31.07.24 18:15, Dan Walkes wrote: > 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 <danwalkes@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 > } > Reviewed-by: Stefano Babic <stefano.babic@swupdate.org>
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 }
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 <danwalkes@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(-)