[yocto] failure to create image with debugfs and logrotate

Marcelo E. Magallon marcelo.magallon at hpe.com
Fri Dec 30 09:55:33 PST 2016


Hi,

I have an build configured to create a debug fs and the image includes
logrotate.

I'm seeing a failure similar to the one fixed in this change:

	https://patchwork.openembedded.org/patch/122139/

but for /var/lib/logrotate.status, which is marked as a conffile in
logrotate's recipe.

My fix looks like the following patch. I'm taking a clue from Debian and
instead of marking logrotate.status as a configuration file, I'm not
adding it to the packaged files and instead I'm creating an empty
version when the package is installed. If the package is removed, I
remove the file.

I'm also seeing a similar failure for nfs-utils (/var/lib/nfs). Again,
Debian handles this in a similar way: those files are not shipped with
the package, but instead they are handled via package scripts. The
alternative is to extend the fix implemented in the referenced patch and
add /var/lib/nfs to the list of special directories. Needless to say,
this doesn't scale well.

Any comments?

Marcelo

>From fc8819afbadf1e2ffa30babc45267a92ae78e246 Mon Sep 17 00:00:00 2001
From: "Marcelo E. Magallon" <marcelo.magallon at hpe.com>
Date: Fri, 30 Dec 2016 09:01:30 -0800
Subject: [PATCH] Remove logrotate.status from list of CONFFILES

Since /var/lib/logrotate.status is declared to be a configuration file,
some packaging tools (dpkg, ipkg) will compute a checksum and try to
validate that when asked for status. This happens when the system is
configured to generate a debug fs, and because of the mechanics used to
create it, the operation fails. Removing this file from the
configuration files list fixes this.

Signed-off-by: Marcelo E. Magallon <marcelo.magallon at hpe.com>
---
 meta/recipes-extended/logrotate/logrotate_3.9.1.bb | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/meta/recipes-extended/logrotate/logrotate_3.9.1.bb b/meta/recipes-extended/logrotate/logrotate_3.9.1.bb
index 5f1a601aeb..1fa2096b19 100644
--- a/meta/recipes-extended/logrotate/logrotate_3.9.1.bb
+++ b/meta/recipes-extended/logrotate/logrotate_3.9.1.bb
@@ -27,8 +27,7 @@ PACKAGECONFIG ?= "\
 PACKAGECONFIG[acl] = ",,acl"
 PACKAGECONFIG[selinux] = ",,libselinux"
 
-CONFFILES_${PN} += "${localstatedir}/lib/logrotate.status \
-		    ${sysconfdir}/logrotate.conf"
+CONFFILES_${PN} += "${sysconfdir}/logrotate.conf"
 
 # If RPM_OPT_FLAGS is unset, it adds -g itself rather than obeying our
 # optimization variables, so use it rather than EXTRA_CFLAGS.
@@ -59,5 +58,16 @@ do_install(){
     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
+}
+
+pkg_postinst_${PN}() {
+#!/bin/sh
+if [ -n "$D" ] ; then
+    touch $D${localstatedir}/lib/logrotate.status
+fi
+}
+
+pkg_postinst_${PN}() {
+#!/bin/sh
+rm $D${localstatedir}/lib/logrotate.status
 }
-- 
2.11.0




More information about the yocto mailing list