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 <rosslagerwall@gmail.com> 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