From: Chen Qi <qi.c...@windriver.com> The new version of systemd has implemented the following feature. Opointer.de/blog/projects/stateless.html
As a result, the systemd-udev-hwdb-update.service would always run at first boot. This will cause failure if the target device doesn't have enough storage space. Besides, as we run `udevadm hwdb --update' as a postinst of udev-hwdb at rootfs time, there's no need to run this again at system start-up. The purpose of this patch is as follows. If `udev hwdb --update' fails at rootfs time, systemd-udev-hwdb-update.service is executed at first boot; otherwise, the service is not executed. This patch achieves the above goal by setting CondistonNeedsUpdate to "/etc/udev" in the service file, and creating /etc/udev/.updated file if the postinst succeeds. Signed-off-by: Chen Qi <qi.c...@windriver.com> Signed-off-by: Robert Yang <liezhi.y...@windriver.com> --- meta/recipes-core/systemd/systemd_219.bb | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/meta/recipes-core/systemd/systemd_219.bb b/meta/recipes-core/systemd/systemd_219.bb index 6ed4fe0..dc5c7b3 100644 --- a/meta/recipes-core/systemd/systemd_219.bb +++ b/meta/recipes-core/systemd/systemd_219.bb @@ -180,6 +180,10 @@ do_install() { if [ -s ${D}${libdir}/tmpfiles.d/systemd.conf ]; then ${@bb.utils.contains('PACKAGECONFIG', 'networkd', ':', 'sed -i -e "\$ad /run/systemd/netif/links 0755 root root -" ${D}${libdir}/tmpfiles.d/systemd.conf', d)} fi + + # Make systemd-udev-hwdb-update to check /etc/udev + cp ${D}${systemd_unitdir}/system/systemd-udev-hwdb-update.service ${D}${sysconfdir}/systemd/system + sed -i -e 's#ConditionNeedsUpdate=/etc#ConditionNeedsUpdate=/etc/udev#g' ${D}${sysconfdir}/systemd/system/systemd-udev-hwdb-update.service } do_install_ptest () { @@ -381,10 +385,18 @@ ALTERNATIVE_PRIORITY[runlevel] ?= "300" pkg_postinst_udev-hwdb () { if test -n "$D"; then - ${@qemu_run_binary(d, '$D', '${base_bindir}/udevadm')} hwdb --update \ - --root $D + if ${@qemu_run_binary(d, '$D', '${base_bindir}/udevadm')} hwdb --update \ + --root $D; then + touch $D/etc/udev/.updated + else + exit 1 + fi else - udevadm hwdb --update + if udevadm hwdb --update; then + touch $D/etc/udev/.updated + else + exit 1 + fi fi } -- 1.9.1 -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core