]> code.ossystems Code Review - openembedded-core.git/commitdiff
pseudo: During DB fix, remove files that do not exist
authorRicardo Ribalda Delgado <ricardo@ribalda.com>
Sun, 5 Apr 2020 11:47:12 +0000 (13:47 +0200)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 6 Apr 2020 13:46:55 +0000 (14:46 +0100)
If a file does not exist, either because it has been removed outside
bitbake, or because only some of the files have been moved to a
different location, delete it from the pseudo-db is the user decides to
fix the database.

Signed-off-by: Ricardo Ribalda Delgado <ricardo@ribalda.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/recipes-devtools/pseudo/files/0001-pseudo-On-a-DB-fixup-remove-files-that-do-not-exist-.patch [new file with mode: 0644]
meta/recipes-devtools/pseudo/pseudo_git.bb

diff --git a/meta/recipes-devtools/pseudo/files/0001-pseudo-On-a-DB-fixup-remove-files-that-do-not-exist-.patch b/meta/recipes-devtools/pseudo/files/0001-pseudo-On-a-DB-fixup-remove-files-that-do-not-exist-.patch
new file mode 100644 (file)
index 0000000..9c49e33
--- /dev/null
@@ -0,0 +1,49 @@
+From b0902e36108b49e6bc88d6b251cc2f8cffcd5a13 Mon Sep 17 00:00:00 2001
+From: Ricardo Ribalda <ricardo@ribalda.com>
+Date: Sun, 5 Apr 2020 11:40:30 +0000
+Subject: [PATCH] pseudo: On a DB fixup remove files that do not exist anymore
+
+If the user decides to fix a database, remove the files that do not
+exist anymore.
+If only DB test is selected do not change the behaviour (return error).
+
+Signed-off-by: Ricardo Ribalda <ricardo@ribalda.com>
+Upstream-Status: Submitted [https://lists.openembedded.org/g/openembedded-core/message/137045]
+---
+ pseudo.c | 13 ++++++++++---
+ 1 file changed, 10 insertions(+), 3 deletions(-)
+
+diff --git a/pseudo.c b/pseudo.c
+index 0f5850e..98e5b0c 100644
+--- a/pseudo.c
++++ b/pseudo.c
+@@ -1087,9 +1087,15 @@ pseudo_db_check(int fix) {
+                       int fixup_needed = 0;
+                       pseudo_debug(PDBGF_DB, "Checking <%s>\n", m->path);
+                       if (lstat(m->path, &buf)) {
+-                              errors = EXIT_FAILURE;
+-                              pseudo_diag("can't stat <%s>\n", m->path);
+-                              continue;
++                              if (!fix) {
++                                      pseudo_diag("can't stat <%s>\n", m->path);
++                                      errors = EXIT_FAILURE;
++                                      continue;
++                              } else {
++                                      pseudo_debug(PDBGF_DB, "can't stat <%s>\n", m->path);
++                                      fixup_needed = 2;
++                                      goto do_fixup;
++                              }
+                       }
+                       /* can't check for device type mismatches, uid/gid, or
+                        * permissions, because those are the very things we
+@@ -1125,6 +1131,7 @@ pseudo_db_check(int fix) {
+                                       S_ISDIR(m->mode));
+                               fixup_needed = 2;
+                       }
++                      do_fixup:
+                       if (fixup_needed) {
+                               /* in fixup mode, either delete (mismatches) or
+                                * correct (dev/ino).
+-- 
+2.21.1
+
index 89e43c59969b876c94e3a5e3e041525267579eff..a3049c5e6c3a511b48de6fb953e37b5e70fa19ad 100644 (file)
@@ -11,6 +11,7 @@ SRC_URI = "git://git.yoctoproject.org/pseudo \
            file://0001-realpath.c-Remove-trailing-slashes.patch \
            file://0006-xattr-adjust-for-attr-2.4.48-release.patch \
            file://seccomp.patch \
+           file://0001-pseudo-On-a-DB-fixup-remove-files-that-do-not-exist-.patch \
            "
 
 SRCREV = "060058bb29f70b244e685b3c704eb0641b736f73"