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

Allan McRae allan at archlinux.org
Thu Jan 21 07:35:24 UTC 2021


On 17/1/21 3:12 am, morganamilo wrote:
> When a package does not need to be downloaded but a signature does,
> total download didn't count that towards the total.
> 

Thanks - this is an improvement, so I will push to master.

There are still some weird things with packages without signature.  e.g.
a single package download shows the TotalDownload bar, but a package
just missing a signature does not.   However, packages without
signatures do add to the count otherwise.

I guess that will be fixed when the "is up to date" message becomes a
bar or is otherwise fixed.

Allan

> 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) {
> 


More information about the pacman-dev mailing list