diff --git a/PackageKit-zypp-parallel-package-downloads.patch b/PackageKit-zypp-parallel-package-downloads.patch new file mode 100644 index 0000000..f7f7988 --- /dev/null +++ b/PackageKit-zypp-parallel-package-downloads.patch @@ -0,0 +1,125 @@ +Index: PackageKit-1.2.8/backends/zypp/meson.build +=================================================================== +--- PackageKit-1.2.8.orig/backends/zypp/meson.build ++++ PackageKit-1.2.8/backends/zypp/meson.build +@@ -1,6 +1,6 @@ + add_languages('cpp') + +-zypp_dep = dependency('libzypp', version: '>=17.31.0') ++zypp_dep = dependency('libzypp', version: '>=17.36.4') + + # define if libzypp returns package size in bytes + zypp_args = [] +Index: PackageKit-1.2.8/backends/zypp/pk-backend-zypp.cpp +=================================================================== +--- PackageKit-1.2.8.orig/backends/zypp/pk-backend-zypp.cpp ++++ PackageKit-1.2.8/backends/zypp/pk-backend-zypp.cpp +@@ -68,6 +68,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -160,6 +161,8 @@ guint _dl_count = 0; + guint _dl_progress = 0; + guint _dl_status = 0; + ++gint _preload_progress = 0; ++ + /** + * Build a package_id from the specified resolvable. The returned + * gchar * should be freed with g_free (). +@@ -505,6 +508,59 @@ struct DigestReportReceiver : public zyp + } + }; + ++struct CommitPreloadReportReceiver : public zypp::callback::ReceiveReport, ZyppBackendReceiver ++{ ++ virtual void start(const zypp::callback::UserData &userData = zypp::callback::UserData()) ++ { ++ MIL << "[CommitPreload] Started preloading files..." << endl; ++ ++ _preload_progress = 0; ++ pk_backend_job_set_status (_job, PK_STATUS_ENUM_DOWNLOAD); ++ } ++ ++ virtual bool progress(int value, const zypp::callback::UserData &userData = zypp::callback::UserData()) ++ { ++ // Only update the progress if it's a different value ++ if (_preload_progress != value) { ++ MIL << "[CommitPreload] Progress: " << value << "%" << endl; ++ ++ _preload_progress = value; ++ pk_backend_job_set_percentage (_job, value); ++ } ++ ++ return true; ++ } ++ ++ virtual void fileStart (const Pathname &localfile, const zypp::callback::UserData &userData = zypp::callback::UserData()) ++ { ++ MIL << "[CommitPreload] Starting: " << localfile.asString() << endl; ++ } ++ ++ virtual void fileDone (const Pathname &localfile, Error error, const zypp::callback::UserData &userData = zypp::callback::UserData()) ++ { ++ if (error == NO_ERROR) ++ MIL << "[CommitPreload] Finished: " << localfile.asString() << endl; ++ else { ++ MIL << "[CommitPreload] Error on: " << localfile.asString() << " (" << error << ")" << endl; ++ if (userData.haskey("description")) ++ MIL << " Reason: " << userData.get("description") << endl; ++ } ++ } ++ ++ virtual void finish(Result res, const zypp::callback::UserData &userData = zypp::callback::UserData()) ++ { ++ if (res == SUCCESS) { ++ MIL << "[CommitPreload] All files fetched successfully." << endl; ++ } ++ else { ++ MIL << "[CommitPreload] Some files are missing!" << endl; ++ } ++ ++ _preload_progress = 100; ++ pk_backend_job_set_percentage (_job, 100); ++ } ++}; ++ + class EventDirector + { + private: +@@ -517,6 +573,7 @@ class EventDirector + ZyppBackend::DigestReportReceiver _digestReport; + ZyppBackend::MediaChangeReportReceiver _mediaChangeReport; + ZyppBackend::ProgressReportReceiver _progressReport; ++ ZyppBackend::CommitPreloadReportReceiver _commitPreloadReport; + + public: + EventDirector () +@@ -530,6 +587,7 @@ class EventDirector + _digestReport.connect (); + _mediaChangeReport.connect (); + _progressReport.connect (); ++ _commitPreloadReport.connect (); + } + + void setJob(PkBackendJob *job) +@@ -543,6 +601,7 @@ class EventDirector + _digestReport._job = job; + _mediaChangeReport._job = job; + _progressReport._job = job; ++ _commitPreloadReport._job = job; + } + + ~EventDirector () +@@ -556,6 +615,7 @@ class EventDirector + _digestReport.disconnect (); + _mediaChangeReport.disconnect (); + _progressReport.disconnect (); ++ _commitPreloadReport.disconnect (); + } + }; + diff --git a/PackageKit.changes b/PackageKit.changes index b681d9c..b80a9ac 100644 --- a/PackageKit.changes +++ b/PackageKit.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Thu Aug 21 08:47:17 UTC 2025 - Jonathan Kang + +- Add PackageKit-zypp-parallel-package-downloads.patch: + zypp: Implement parallel downloading + (gh#PackageKit/PackageKit/commit/dd39d2982, bsc#1244920). + ------------------------------------------------------------------- Tue Oct 15 11:48:02 UTC 2024 - Dominique Leuenberger diff --git a/PackageKit.spec b/PackageKit.spec index ca87c2a..70eb9b3 100644 --- a/PackageKit.spec +++ b/PackageKit.spec @@ -1,7 +1,7 @@ # # spec file for package PackageKit # -# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2025 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -61,6 +61,8 @@ Patch16: PackageKit-dynamic-export.patch Patch17: PackageKit-mark-as-compulsory.patch # PATCH-FIX-UPSTREAM PackageKit-zypp-dont-install-updateCandidateObj.patch bsc#1227389, gh#PackageKit/PackageKit/commit/209aa6295 sckang@suse.com -- zypp: Mark the correct packages to-be-installed Patch18: PackageKit-zypp-dont-install-updateCandidateObj.patch +# PATCH-FIX-UPSTREAM PackageKit-zypp-parallel-package-downloads.patch gh#PackageKit/PackageKit/commit/dd39d2982, bsc#1244920 sckang@suse.com -- zypp: Implement parallel downloading +Patch19: PackageKit-zypp-parallel-package-downloads.patch # PATCH-FIX-SLE PackageKit-find-python-3-6.patch alynx.zhou@suse.com -- Build PackageKit with Python 3.6 Patch1001: PackageKit-find-python-3-6.patch @@ -288,6 +290,7 @@ This package provides the upstream default configuration for PackageKit. %patch -P 16 -p1 %patch -P 17 -p1 %patch -P 18 -p1 +%patch -P 19 -p1 %if 0%{?sle_version} && 0%{?sle_version} < 160000 %patch -P 1001 -p1 %endif