Nobody ever promised you can use the same layer with more than one yocto release. Please make a branch.
Alex On Thu 7. Nov 2024 at 16.34, Logan Grosz via lists.yoctoproject.org <Logan.Grosz=b9c....@lists.yoctoproject.org> wrote: > Hi, all > > My company is trying to migrate a newer version of Yocto and in an effort > to do that I am making changes to our current layer to facilitate an easier > transition. One problem I encountered was SystemD 250 installs a target > factory-reset.target, but we already have a recipe that installs a that > same file. The recipe is as follows > > ```bitbake > LICENSE = "CLOSED" > SUMMARY = "A factory reset target" > DESCRIPTION = "A recipe which provides a common means of creating factory > reset \ > tasks. Each application should attach to this target in order to > perform \ > any tasks when the device needs to be reset." > > SRC_URI = " \ > file://factory-reset.target \ > file://factory-reset-reboot.service \ > " > > SYSTEMD_SERVICE_${PN} = " \ > factory-reset.target \ > factory-reset-reboot.service \ > " > > do_install() { > install -d ${D}/${systemd_system_unitdir} > install -m 0644 \ > ${WORKDIR}/factory-reset.target \ > ${WORKDIR}/factory-reset-reboot.service \ > ${D}/${systemd_system_unitdir} > } > > inherit systemd > ``` > > I figured I could get the version of systemd through its installed > pkg-config, but I'd need to modify the content of `SYSTEMD_SERVICE_${PN`, > so I tried this > > ```bitbake > LICENSE = "CLOSED" > SUMMARY = "A factory reset target" > DESCRIPTION = "A recipe which provides a common means of creating factory > reset \ > tasks. Each application should attach to this target in order to > perform \ > any tasks when the device needs to be reset." > > DEPENDS = "systemd" > > SRC_URI = " \ > file://factory-reset.target \ > file://factory-reset-reboot.service \ > " > > python __anonymous() { > import subprocess > > try: > output = subprocess.check_output(["pkg-config", "--modversion", > "systemd"]).decode("utf-8").strip() > systemd_version = int(output.split('.')[0]) > d.setVar("SYSTEMD_VERSION", systemd_version) > except (subprocess.CalledProcessError, ValueError): > bb.warn("Could not determine systemd version. Assuming version < > 250") > d.setVar("SYSTEMD_VERSION", 249) # Default to 249 if systemd > version cannot be determined > } > > SYSTEMD_SERVICE:${PN} = "factory-reset-reboot.service" > SYSTEMD_SERVICE:${PN}:append = "${@ ' factory-reset.target' if > int(d.getVar('SYSTEMD_VERSION')) < 250 else '' }" > > do_install() { > # systemd 250 introduces factory-reset.target for the same reasons we > created it in the first place > if [ ${SYSTEMD_VERSION} -lt 250 ]; then > install -d ${D}/${systemd_system_unitdir} > install -m 0644 ${WORKDIR}/factory-reset.target > ${D}/${systemd_system_unitdir} > fi > > install -d ${D}/${systemd_system_unitdir} > install -m 0644 ${WORKDIR}/factory-reset-reboot.service > ${D}/${systemd_system_unitdir} > } > > inherit systemd pkgconfig > ``` > > Obviously, this has troubles at the parsing stage.. so, this won't work. I > was wondering if there was a nice solution to this problem so I can make my > recipe compatible with both layer versions during the migration. > > Thank you, > Logan > > > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#64232): https://lists.yoctoproject.org/g/yocto/message/64232 Mute This Topic: https://lists.yoctoproject.org/mt/109446043/21656 Group Owner: yocto+ow...@lists.yoctoproject.org Unsubscribe: https://lists.yoctoproject.org/g/yocto/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-