[yocto] [PATCH RESEND] logrotate: Add systemd support
Romain Perier
romain.perier at collabora.com
Thu Mar 23 08:52:07 PDT 2017
Hello,
Please ignore this patch, I will send a v2 with improvements.
Regards,
Romain
Le 23/03/2017 à 15:52, Romain Perier a écrit :
> Currently, this recipe only supports daily scheduling via a cron job.
> This commit adds support for systemd, including systemd service and
> systemd timer. When the corresponding distro feature is enabled the
> systemd timer will be used instead of the cron job.
>
> Signed-off-by: Romain Perier <romain.perier at collabora.com>
> ---
>
> Note: I was not registered on the yocto and oe ML, I subscribed. So
> I resend for this reason (my bad).
>
> .../logrotate/logrotate/logrotate.service | 9 +++++++++
> .../logrotate/logrotate/logrotate.timer | 7 +++++++
> meta/recipes-extended/logrotate/logrotate_3.9.1.bb | 22 ++++++++++++++++++++--
> 3 files changed, 36 insertions(+), 2 deletions(-)
> create mode 100644 meta/recipes-extended/logrotate/logrotate/logrotate.service
> create mode 100644 meta/recipes-extended/logrotate/logrotate/logrotate.timer
>
> diff --git a/meta/recipes-extended/logrotate/logrotate/logrotate.service b/meta/recipes-extended/logrotate/logrotate/logrotate.service
> new file mode 100644
> index 0000000..3edb8ef
> --- /dev/null
> +++ b/meta/recipes-extended/logrotate/logrotate/logrotate.service
> @@ -0,0 +1,9 @@
> +[Unit]
> +Description=Rotate log files
> +
> +[Service]
> +Type=oneshot
> +ExecStart=/usr/sbin/logrotate /etc/logrotate.conf
> +Nice=19
> +IOSchedulingClass=best-effort
> +IOSchedulingPriority=7
> diff --git a/meta/recipes-extended/logrotate/logrotate/logrotate.timer b/meta/recipes-extended/logrotate/logrotate/logrotate.timer
> new file mode 100644
> index 0000000..a92ba1e
> --- /dev/null
> +++ b/meta/recipes-extended/logrotate/logrotate/logrotate.timer
> @@ -0,0 +1,7 @@
> +[Unit]
> +Description=Daily rotation of log files
> +
> +[Timer]
> +OnCalendar=daily
> +AccuracySec=12h
> +Persistent=true
> diff --git a/meta/recipes-extended/logrotate/logrotate_3.9.1.bb b/meta/recipes-extended/logrotate/logrotate_3.9.1.bb
> index 5f1a601..734d661 100644
> --- a/meta/recipes-extended/logrotate/logrotate_3.9.1.bb
> +++ b/meta/recipes-extended/logrotate/logrotate_3.9.1.bb
> @@ -14,6 +14,8 @@ SRC_URI = "https://fedorahosted.org/releases/l/o/logrotate/logrotate-${PV}.tar.g
> file://act-as-mv-when-rotate.patch \
> file://update-the-manual.patch \
> file://disable-check-different-filesystems.patch \
> + ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'file://logrotate.service', '', d)} \
> + ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'file://logrotate.timer', '', d)} \
> "
>
> SRC_URI[md5sum] = "4492b145b6d542e4a2f41e77fa199ab0"
> @@ -47,6 +49,14 @@ EXTRA_OEMAKE = "\
> # INSTALL=install and BASEDIR=/usr.
> OS_NAME = "Linux"
>
> +inherit systemd
> +
> +SYSTEMD_AUTO_ENABLE = "disable"
> +SYSTEMD_SERVICE_${PN} = "\
> + ${PN}.service \
> + ${PN}.timer \
> +"
> +
> do_compile_prepend() {
> # Make sure the recompile is OK
> rm -f ${B}/.depend
> @@ -55,9 +65,17 @@ do_compile_prepend() {
> 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 examples/logrotate-default ${D}${sysconfdir}/logrotate.conf
> - install -p -m 755 examples/logrotate.cron ${D}${sysconfdir}/cron.daily/logrotate
> touch ${D}${localstatedir}/lib/logrotate.status
> +
> + # Install systemd unit files
> + if [ "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}" = "systemd" ]; then
> + install -d ${D}/${systemd_system_unitdir}
> + install -m 0644 ${WORKDIR}/logrotate.service ${D}/${systemd_system_unitdir}/logrotate.service
> + install -m 0644 ${WORKDIR}/logrotate.timer ${D}/${systemd_system_unitdir}/logrotate.timer
> + else
> + mkdir -p ${D}${sysconfdir}/cron.daily
> + install -p -m 0755 examples/logrotate.cron ${D}${sysconfdir}/cron.daily/logrotate
> + fi
> }
More information about the yocto
mailing list