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]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to