opkg: fix conffile errors in 'opkg status' calls

If a conffile has been deleted (common when building a debugfs) the status
command will throw errors instead of handling that situation.  Stop the code
being executed in the first place if it wasn't asked for, and handle errors
gracefully.

[ YOCTO #10761 ]

(From OE-Core rev: 0aaaacdf4456fe832b1c3940997c097e7e94b9e6)

Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Ross Burton 2017-01-10 15:39:47 +00:00 committed by Richard Purdie
parent 3f6504dc65
commit b894376415
2 changed files with 70 additions and 0 deletions

View File

@ -0,0 +1,69 @@
Upstream-Status: Submitted
Signed-off-by: Ross Burton <ross.burton@intel.com>
From 086d5083dfe0102368cb7c8ce89b0c06b64ca773 Mon Sep 17 00:00:00 2001
From: Ross Burton <ross.burton@intel.com>
Date: Tue, 10 Jan 2017 15:24:59 +0000
Subject: [PATCH 1/2] opkg_cmd: only look at conffile status if we're going to
output it
The loop to compare the recorded conffile hash with their hash on disk is
outputted at level INFO but the loop was executed at level NOTICE and higher.
This means that if a conffile had been deleted the status operation would
produce error messages for output it isn't displaying.
Signed-off-by: Ross Burton <ross.burton@intel.com>
---
libopkg/opkg_cmd.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libopkg/opkg_cmd.c b/libopkg/opkg_cmd.c
index ba57c6a..37416fd 100644
--- a/libopkg/opkg_cmd.c
+++ b/libopkg/opkg_cmd.c
@@ -638,7 +638,7 @@ static int opkg_info_status_cmd(int argc, char **argv, int installed_only)
pkg_formatted_info(stdout, pkg);
- if (opkg_config->verbosity >= NOTICE) {
+ if (opkg_config->verbosity >= INFO) {
conffile_list_elt_t *iter;
for (iter = nv_pair_list_first(&pkg->conffiles); iter;
iter = nv_pair_list_next(&pkg->conffiles, iter)) {
--
2.8.1
From 225e30e0f9fa7cfeaa3f89e2713e5147ab371def Mon Sep 17 00:00:00 2001
From: Ross Burton <ross.burton@intel.com>
Date: Tue, 10 Jan 2017 15:28:47 +0000
Subject: [PATCH 2/2] conffile: gracefully handle deleted conffiles in
conffile_has_been_modified
Handle conffiles that don't exist gracefully so that instead of showing an error
message from file_md5sum_alloc() a notice that the file has been deleted is
shown instead.
Signed-off-by: Ross Burton <ross.burton@intel.com>
---
libopkg/conffile.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/libopkg/conffile.c b/libopkg/conffile.c
index b2f2469..7b4b87b 100644
--- a/libopkg/conffile.c
+++ b/libopkg/conffile.c
@@ -51,6 +51,11 @@ int conffile_has_been_modified(conffile_t * conffile)
}
root_filename = root_filename_alloc(filename);
+ if (!file_exists(root_filename)) {
+ opkg_msg(INFO, "Conffile %s deleted\n", conffile->name);
+ free(root_filename);
+ return 1;
+ }
md5sum = file_md5sum_alloc(root_filename);
--
2.8.1

View File

@ -15,6 +15,7 @@ SRC_URI = "http://downloads.yoctoproject.org/releases/${BPN}/${BPN}-${PV}.tar.gz
file://opkg-configure.service \
file://opkg.conf \
file://0001-opkg_conf-create-opkg.lock-in-run-instead-of-var-run.patch \
file://status-conffile.patch \
"
SRC_URI[md5sum] = "6c52a065499056a196e0b45a27e392de"