On Tue, Jun 04, 2013 at 11:20:14AM +0200, Patrick Steinhardt wrote:
>               if(hash_local && hash_pkg && strcmp(hash_local, hash_pkg) == 0) 
> {
> -                     /* local and new files are the same, no sense in 
> installing the file
> -                      * over itself, regardless of what the original file 
> was */
> -                     _alpm_log(handle, ALPM_LOG_DEBUG,
> -                                     "action: leaving existing file in 
> place\n");
> -                     unlink(checkfile);
> +                     /* local and new files are the same, updating anyway to 
> get
> +                      * correct timestamps */
> +                     _alpm_log(handle, ALPM_LOG_DEBUG, "action: installing 
> new file: %s\n",

Perhaps this should be changed to something like:
"action: updating existing file's timestamps\n"
to differentiate it from when the file is actually new.

> +                                     entryname_orig);
> +                     if(try_rename(handle, checkfile, filename)) {
> +                             errors++;
> +                     }

Can we not just ignore it if it fails since it is non-fatal?

>               } else if(hash_orig && hash_pkg && strcmp(hash_orig, hash_pkg) 
> == 0) {
>                       /* original and new files are the same, leave the local 
> version alone,
>                        * including any user changes */
> -- 
> 1.8.3
> 

FWIW, I actually tried to send a similar patch through on Sunday
(attached) but it clearly didn't make it to the list (I guess you need
to be subscribed).

-- 
Ross Lagerwall
>From b8927439aba6f7408f75883dfed9616c70df989a Mon Sep 17 00:00:00 2001
From: Ross Lagerwall <[email protected]>
Date: Sun, 2 Jun 2013 13:31:54 +0100
Subject: [PATCH] add.c: update identical config files to preserve mtime

If two config files are identical, overwrite the existing one so that
"pacman -Qkk" does not report "Modification time mismatch" after a
package upgrade even though no files have been touched.
---
 lib/libalpm/add.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/lib/libalpm/add.c b/lib/libalpm/add.c
index 9cbf767..d7d2382 100644
--- a/lib/libalpm/add.c
+++ b/lib/libalpm/add.c
@@ -331,11 +331,11 @@ static int extract_single_file(alpm_handle_t *handle, 
struct archive *archive,
                _alpm_log(handle, ALPM_LOG_DEBUG, "original: %s\n", hash_orig);
 
                if(hash_local && hash_pkg && strcmp(hash_local, hash_pkg) == 0) 
{
-                       /* local and new files are the same, no sense in 
installing the file
-                        * over itself, regardless of what the original file 
was */
+                       /* local and new files are the same, overwrite so that 
timestamps
+                        * are maintained correctly for pacman -Qkk */
                        _alpm_log(handle, ALPM_LOG_DEBUG,
-                                       "action: leaving existing file in 
place\n");
-                       unlink(checkfile);
+                                       "action: updating existing file's 
timestamps\n");
+                       try_rename(handle, checkfile, filename);
                } else if(hash_orig && hash_pkg && strcmp(hash_orig, hash_pkg) 
== 0) {
                        /* original and new files are the same, leave the local 
version alone,
                         * including any user changes */
-- 
1.8.3



Reply via email to