[pacman-dev] [PATCH] libalpm: fix total downlaod reporting wrong total

morganamilo morganamilo at archlinux.org
Sat Jan 16 17:12:55 UTC 2021


When a package does not need to be downloaded but a signature does,
total download didn't count that towards the total.

diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c
index 3919d266..a0861016 100644
--- a/lib/libalpm/sync.c
+++ b/lib/libalpm/sync.c
@@ -755,6 +755,11 @@ static int download_files(alpm_handle_t *handle)
 	cachedir = _alpm_filecache_setup(handle);
 	handle->trans->state = STATE_DOWNLOADING;
 
+	ret = find_dl_candidates(handle, &files);
+	if(ret != 0) {
+		goto finish;
+	}
+
 	/* Total progress - figure out the total download size if required to
 	 * pass to the callback. This function is called once, and it is up to the
 	 * frontend to compute incremental progress. */
@@ -762,21 +767,14 @@ static int download_files(alpm_handle_t *handle)
 		off_t total_size = (off_t)0;
 		size_t howmany = 0;
 		/* sum up the download size for each package and store total */
-		for(i = handle->trans->add; i; i = i->next) {
+		for(i = files; i; i = i->next) {
 			alpm_pkg_t *spkg = i->data;
 			total_size += spkg->download_size;
-			if(spkg->download_size > 0) {
-				howmany++;
-			}
+			howmany++;
 		}
 		handle->totaldlcb(howmany, total_size);
 	}
 
-	ret = find_dl_candidates(handle, &files);
-	if(ret != 0) {
-		goto finish;
-	}
-
 	if(files) {
 		/* check for necessary disk space for download */
 		if(handle->checkspace) {
-- 
2.30.0


More information about the pacman-dev mailing list