From 97c3a88082e5e5ede20c2ed8657c3b53ef5335e7 Mon Sep 17 00:00:00 2001 From: Romain Perier Date: Tue, 11 Jul 2017 08:46:06 +0200 Subject: [PATCH] logrotate: Add systemd support Currently, this recipe only supports daily scheduling via a cron job. This commit adds support for systemd in the recipe, as the feature is already supported on upstream. When the corresponding distro feature is enabled the systemd variant will be used. The timer granularity and its accuracy are also configurable. (From OE-Core rev: b942d0b17cb6622b653283109307346dcfb4f205) Signed-off-by: Romain Perier Signed-off-by: Ross Burton Signed-off-by: Richard Purdie --- .../logrotate/logrotate_3.12.3.bb | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/meta/recipes-extended/logrotate/logrotate_3.12.3.bb b/meta/recipes-extended/logrotate/logrotate_3.12.3.bb index 2033be1e2d..05705bedbe 100644 --- a/meta/recipes-extended/logrotate/logrotate_3.12.3.bb +++ b/meta/recipes-extended/logrotate/logrotate_3.12.3.bb @@ -53,14 +53,33 @@ EXTRA_OEMAKE = "\ # INSTALL=install and BASEDIR=/usr. OS_NAME = "Linux" -inherit autotools +inherit autotools systemd + +SYSTEMD_SERVICE_${PN} = "\ + ${PN}.service \ + ${PN}.timer \ +" + +LOGROTATE_SYSTEMD_TIMER_BASIS ?= "daily" +LOGROTATE_SYSTEMD_TIMER_ACCURACY ?= "12h" do_install(){ oe_runmake install DESTDIR=${D} PREFIX=${D} MANDIR=${mandir} mkdir -p ${D}${sysconfdir}/logrotate.d - mkdir -p ${D}${sysconfdir}/cron.daily mkdir -p ${D}${localstatedir}/lib install -p -m 644 ${S}/examples/logrotate-default ${D}${sysconfdir}/logrotate.conf - install -p -m 755 ${S}/examples/logrotate.cron ${D}${sysconfdir}/cron.daily/logrotate touch ${D}${localstatedir}/lib/logrotate.status + + if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then + install -d ${D}${systemd_system_unitdir} + install -m 0644 ${S}/examples/logrotate.service ${D}${systemd_system_unitdir}/logrotate.service + install -m 0644 ${S}/examples/logrotate.timer ${D}${systemd_system_unitdir}/logrotate.timer + sed -i -e 's,OnCalendar=.*$,OnCalendar=${LOGROTATE_SYSTEMD_TIMER_BASIS},g' ${D}${systemd_system_unitdir}/logrotate.timer + sed -i -e 's,AccuracySec=.*$,AccuracySec=${LOGROTATE_SYSTEMD_TIMER_ACCURACY},g' ${D}${systemd_system_unitdir}/logrotate.timer + fi + + if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then + mkdir -p ${D}${sysconfdir}/cron.daily + install -p -m 0755 ${S}/examples/logrotate.cron ${D}${sysconfdir}/cron.daily/logrotate + fi }