Improve stats in the transaction dictionary.

This commit is contained in:
Juan RP 2013-12-16 07:24:17 +01:00
parent ec6f7a3013
commit cc19818680
2 changed files with 42 additions and 33 deletions

View File

@ -114,29 +114,33 @@ show_transaction_sizes(struct transaction *trans, int cols)
/*
* Show the list of packages that will be installed.
*/
if (xbps_dictionary_get_uint32(trans->d, "total-install-pkgs",
&trans->inst_pkgcnt)) {
xbps_dictionary_get_uint32(trans->d, "total-install-pkgs",
&trans->inst_pkgcnt);
if (trans->inst_pkgcnt) {
printf("%u package%s will be installed:\n",
trans->inst_pkgcnt, trans->inst_pkgcnt == 1 ? "" : "s");
show_package_list(trans->iter, "install", cols);
printf("\n");
}
if (xbps_dictionary_get_uint32(trans->d, "total-update-pkgs",
&trans->up_pkgcnt)) {
xbps_dictionary_get_uint32(trans->d, "total-update-pkgs",
&trans->up_pkgcnt);
if (trans->up_pkgcnt) {
printf("%u package%s will be updated:\n",
trans->up_pkgcnt, trans->up_pkgcnt == 1 ? "" : "s");
show_package_list(trans->iter, "update", cols);
printf("\n");
}
if (xbps_dictionary_get_uint32(trans->d, "total-configure-pkgs",
&trans->cf_pkgcnt)) {
xbps_dictionary_get_uint32(trans->d, "total-configure-pkgs",
&trans->cf_pkgcnt);
if (trans->cf_pkgcnt) {
printf("%u package%s will be configured:\n",
trans->cf_pkgcnt, trans->cf_pkgcnt == 1 ? "" : "s");
show_package_list(trans->iter, "configure", cols);
printf("\n");
}
if (xbps_dictionary_get_uint32(trans->d, "total-remove-pkgs",
&trans->rm_pkgcnt)) {
xbps_dictionary_get_uint32(trans->d, "total-remove-pkgs",
&trans->rm_pkgcnt);
if (trans->rm_pkgcnt) {
printf("%u package%s will be removed:\n",
trans->rm_pkgcnt, trans->rm_pkgcnt == 1 ? "" : "s");
show_package_list(trans->iter, "remove", cols);
@ -158,15 +162,15 @@ show_transaction_sizes(struct transaction *trans, int cols)
"%s\n", strerror(errno));
return -1;
}
printf("Total download size:\t%6s\n", size);
printf("Size to download: %6s\n", size);
}
if (instsize) {
if (xbps_humanize_number(size, (int64_t)(instsize+dlsize)) == -1) {
if (xbps_humanize_number(size, (int64_t)instsize) == -1) {
xbps_error_printf("humanize_number2 returns "
"%s\n", strerror(errno));
return -1;
}
printf("Total installed size:\t%6s\n", size);
printf("Size required on disk: %6s\n", size);
}
if (rmsize) {
if (xbps_humanize_number(size, (int64_t)rmsize) == -1) {
@ -174,7 +178,7 @@ show_transaction_sizes(struct transaction *trans, int cols)
"%s\n", strerror(errno));
return -1;
}
printf("Total freed size:\t%6s\n", size);
printf("Size freed on disk: %6s\n", size);
}
printf("\n");

View File

@ -90,6 +90,18 @@ compute_transaction_stats(struct xbps_handle *xhp)
}
tsize = 0;
if ((strcmp(tract, "install") == 0) ||
(strcmp(tract, "update") == 0)) {
xbps_dictionary_get_uint64(obj,
"installed_size", &tsize);
instsize += tsize;
if (xbps_repository_is_remote(repo)) {
xbps_dictionary_get_uint64(obj,
"filename-size", &tsize);
dlsize += tsize;
instsize += tsize;
}
}
/*
* If removing or updating a package, get installed_size
* from pkg's metadata dictionary.
@ -108,39 +120,32 @@ compute_transaction_stats(struct xbps_handle *xhp)
"installed_size", &tsize);
rmsize += tsize;
}
if ((strcmp(tract, "install") == 0) ||
(strcmp(tract, "update") == 0)) {
xbps_dictionary_get_uint64(obj,
"installed_size", &tsize);
instsize += tsize;
if (xbps_repository_is_remote(repo)) {
xbps_dictionary_get_uint64(obj,
"filename-size", &tsize);
dlsize += tsize;
instsize += tsize;
}
}
}
xbps_object_iterator_release(iter);
if (inst_pkgcnt && !xbps_dictionary_set_uint32(xhp->transd,
if (instsize > rmsize) {
instsize -= rmsize;
rmsize = 0;
} else if (rmsize > instsize) {
rmsize -= instsize;
instsize = 0;
} else {
instsize = rmsize = 0;
}
if (!xbps_dictionary_set_uint32(xhp->transd,
"total-install-pkgs", inst_pkgcnt))
return EINVAL;
if (up_pkgcnt && !xbps_dictionary_set_uint32(xhp->transd,
if (!xbps_dictionary_set_uint32(xhp->transd,
"total-update-pkgs", up_pkgcnt))
return EINVAL;
if (cf_pkgcnt && !xbps_dictionary_set_uint32(xhp->transd,
if (!xbps_dictionary_set_uint32(xhp->transd,
"total-configure-pkgs", cf_pkgcnt))
return EINVAL;
if (rm_pkgcnt && !xbps_dictionary_set_uint32(xhp->transd,
if (!xbps_dictionary_set_uint32(xhp->transd,
"total-remove-pkgs", rm_pkgcnt))
return EINVAL;
if (instsize)
instsize -= rmsize;
if (rmsize)
rmsize -= instsize;
if (!xbps_dictionary_set_uint64(xhp->transd,
"total-installed-size", instsize))
return EINVAL;