Skip to content

Commit ed646b7

Browse files
committed
zypp: Use 'pk_backend_job_details_full()' so download size is reported properly
This is needed for download size reporting to work in PK clients which use the 'download-size' property (introduced in 3741c68) in 'get-details' response. 'download-size' property is available only when the PK backend uses 'pk_backend_job_details_full()', not otherwise. Part of: PackageKit#781
1 parent a381889 commit ed646b7

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

backends/zypp/pk-backend-zypp.cpp

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2168,7 +2168,7 @@ backend_get_details_thread (PkBackendJob *job, GVariant *params, gpointer user_d
21682168
MIL << package_ids[i] << endl;
21692169

21702170
if (zypp_package_is_local(package_ids[i])) {
2171-
pk_backend_job_details (job, package_ids[i], "", "", PK_GROUP_ENUM_UNKNOWN, "", "", (gulong)0);
2171+
pk_backend_job_details_full (job, package_ids[i], "", "", PK_GROUP_ENUM_UNKNOWN, "", "", (gulong)0, (gulong)0);
21722172
return;
21732173
}
21742174

@@ -2192,25 +2192,27 @@ backend_get_details_thread (PkBackendJob *job, GVariant *params, gpointer user_d
21922192
Package::constPtr pkg = make<Package>( solv ); // or NULL if not a Package
21932193
Patch::constPtr patch = make<Patch>( solv ); // or NULL if not a Patch
21942194

2195-
ByteCount size;
2195+
ByteCount size, download_size;
21962196
if ( patch ) {
21972197
Patch::Contents contents( patch->contents() );
21982198
for_( it, contents.begin(), contents.end() ) {
2199-
size += make<ResObject>(*it)->downloadSize();
2199+
download_size += make<ResObject>(*it)->downloadSize();
22002200
}
22012201
}
22022202
else {
2203-
size = obj->isSystem() ? obj->installSize() : obj->downloadSize();
2203+
size = obj->installSize();
2204+
download_size = obj->downloadSize();
22042205
}
22052206

2206-
pk_backend_job_details (job,
2207+
pk_backend_job_details_full (job,
22072208
package_ids[i], // package_id
22082209
(pkg ? pkg->summary().c_str() : "" ), // Package summary
22092210
(pkg ? pkg->license().c_str() : "" ), // license is Package attribute
22102211
get_enum_group(pkg ? pkg->group() : ""),// PkGroupEnum
22112212
obj->description().c_str(), // description is common attibute
22122213
(pkg ? pkg->url().c_str() : "" ), // url is Package attribute
2213-
(gulong)size);
2214+
(gulong)size,
2215+
(gulong)download_size);
22142216
} catch (const Exception &ex) {
22152217
zypp_backend_finished_error (
22162218
job, PK_ERROR_ENUM_INTERNAL_ERROR, "%s", ex.asUserString ().c_str ());
@@ -2262,14 +2264,15 @@ backend_get_details_local_thread (PkBackendJob *job, GVariant *params, gpointer
22622264
"local",
22632265
NULL);
22642266

2265-
pk_backend_job_details (job,
2267+
pk_backend_job_details_full (job,
22662268
package_id,
22672269
rpmHeader->tag_summary ().c_str (),
22682270
rpmHeader->tag_license ().c_str (),
22692271
get_enum_group (rpmHeader->tag_group ()),
22702272
rpmHeader->tag_description ().c_str (),
22712273
rpmHeader->tag_url ().c_str (),
2272-
(gulong)rpmHeader->tag_size ().blocks (zypp::ByteCount::B));
2274+
(gulong)rpmHeader->tag_size ().blocks (zypp::ByteCount::B), // Installed size
2275+
(gulong)0); // Download size should be local file size
22732276

22742277
g_free (package_id);
22752278
}

0 commit comments

Comments
 (0)