Date: Friday, June 2, 2017 @ 12:16:54 Author: eworm Revision: 233410 upgpkg: packagekit 1.1.5-2
support alpm hooks Added: packagekit/trunk/0001-alpm-hooks.patch Modified: packagekit/trunk/PKGBUILD -----------------------+ 0001-alpm-hooks.patch | 235 ++++++++++++++++++++++++++++++++++++++++++++++++ PKGBUILD | 14 ++ 2 files changed, 246 insertions(+), 3 deletions(-) Added: 0001-alpm-hooks.patch =================================================================== --- 0001-alpm-hooks.patch (rev 0) +++ 0001-alpm-hooks.patch 2017-06-02 12:16:54 UTC (rev 233410) @@ -0,0 +1,235 @@ +From 826e8e12424260d50834f1beb8ecd2ad8eed3618 Mon Sep 17 00:00:00 2001 +From: Christian Hesse <[email protected]> +Date: Mon, 15 May 2017 23:26:41 +0200 +Subject: [PATCH 1/4] Add new status "Running hooks" +--- + lib/packagekit-glib2/pk-console-shared.c | 4 ++++ + lib/packagekit-glib2/pk-enum.h | 1 + + 2 files changed, 5 insertions(+) + +diff --git a/lib/packagekit-glib2/pk-console-shared.c b/lib/packagekit-glib2/pk-console-shared.c +index d61f3a13e..5810e160a 100644 +--- a/lib/packagekit-glib2/pk-console-shared.c ++++ b/lib/packagekit-glib2/pk-console-shared.c +@@ -324,6 +324,10 @@ pk_status_enum_to_localised_text (PkStatusEnum status) + /* TRANSLATORS: transaction state, we are copying package files before or after the transaction */ + text = _("Copying files"); + break; ++ case PK_STATUS_ENUM_RUN_HOOK: ++ /* TRANSLATORS: transaction state, we are running hooks before or after the transaction */ ++ text = _("Running hooks"); ++ break; + default: + g_warning ("status unrecognised: %s", pk_status_enum_to_string (status)); + } +diff --git a/lib/packagekit-glib2/pk-enum.h b/lib/packagekit-glib2/pk-enum.h +index 4bf93df51..b52690f44 100644 +--- a/lib/packagekit-glib2/pk-enum.h ++++ b/lib/packagekit-glib2/pk-enum.h +@@ -143,6 +143,7 @@ typedef enum { + PK_STATUS_ENUM_CHECK_EXECUTABLE_FILES, + PK_STATUS_ENUM_CHECK_LIBRARIES, + PK_STATUS_ENUM_COPY_FILES, ++ PK_STATUS_ENUM_RUN_HOOK, + PK_STATUS_ENUM_LAST + } PkStatusEnum; + +From 91d6a48511818840addb7ad06efea209c57717e7 Mon Sep 17 00:00:00 2001 +From: Christian Hesse <[email protected]> +Date: Tue, 23 May 2017 12:21:46 +0200 +Subject: [PATCH 2/4] alpm: use enum for upgrade/reinstall/downgrade +--- + backends/alpm/pk-alpm-transaction.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/backends/alpm/pk-alpm-transaction.c b/backends/alpm/pk-alpm-transaction.c +index 54bf8e6c4..674bb9d93 100644 +--- a/backends/alpm/pk-alpm-transaction.c ++++ b/backends/alpm/pk-alpm-transaction.c +@@ -550,17 +550,17 @@ pk_alpm_transaction_upgrade_done (PkBackendJob *job, alpm_pkg_t *pkg, + const gchar *name, *pre, *post; + + g_return_if_fail (pkg != NULL); +- g_return_if_fail (old != NULL || direction == 0); ++ g_return_if_fail (old != NULL || direction == ALPM_PACKAGE_REINSTALL); + + name = alpm_pkg_get_name (pkg); +- if (direction != 0) ++ if (direction != ALPM_PACKAGE_REINSTALL) + pre = alpm_pkg_get_version (old); + post = alpm_pkg_get_version (pkg); + +- if (direction > 0) { ++ if (direction == ALPM_PACKAGE_UPGRADE) { + alpm_logaction (priv->alpm, PK_LOG_PREFIX, "upgraded %s (%s -> %s)\n", + name, pre, post); +- } else if (direction < 0) { ++ } else if (direction == ALPM_PACKAGE_DOWNGRADE) { + alpm_logaction (priv->alpm, PK_LOG_PREFIX, + "downgraded %s (%s -> %s)\n", name, pre, post); + } else { +@@ -569,7 +569,7 @@ pk_alpm_transaction_upgrade_done (PkBackendJob *job, alpm_pkg_t *pkg, + } + pk_alpm_pkg_emit (job, pkg, PK_INFO_ENUM_FINISHED); + +- if (direction != 0) ++ if (direction != ALPM_PACKAGE_REINSTALL) + pk_alpm_transaction_process_new_optdepends (pkg, old); + pk_alpm_transaction_output_end (); + } +@@ -665,13 +665,13 @@ pk_alpm_transaction_event_cb (alpm_event_t *event) + pk_alpm_transaction_remove_done (job, e->oldpkg); + break; + case ALPM_PACKAGE_UPGRADE: +- pk_alpm_transaction_upgrade_done (job, e->newpkg, e->oldpkg, 1); ++ pk_alpm_transaction_upgrade_done (job, e->newpkg, e->oldpkg, ALPM_PACKAGE_UPGRADE); + break; + case ALPM_PACKAGE_DOWNGRADE: +- pk_alpm_transaction_upgrade_done (job, e->newpkg, e->oldpkg, -1); ++ pk_alpm_transaction_upgrade_done (job, e->newpkg, e->oldpkg, ALPM_PACKAGE_DOWNGRADE); + break; + case ALPM_PACKAGE_REINSTALL: +- pk_alpm_transaction_upgrade_done (job, e->newpkg, e->oldpkg, 0); ++ pk_alpm_transaction_upgrade_done (job, e->newpkg, e->oldpkg, ALPM_PACKAGE_REINSTALL); + break; + } + } +From e88e481ddd8a0dbf53d14d3336d220a7bd437f00 Mon Sep 17 00:00:00 2001 +From: Christian Hesse <[email protected]> +Date: Mon, 15 May 2017 23:46:56 +0200 +Subject: [PATCH 3/4] alpm: clean up status, add handling for hooks +--- + backends/alpm/pk-alpm-transaction.c | 43 +++++++++++++++++++++++++++---------- + 1 file changed, 32 insertions(+), 11 deletions(-) + +diff --git a/backends/alpm/pk-alpm-transaction.c b/backends/alpm/pk-alpm-transaction.c +index 674bb9d93..a87a008a8 100644 +--- a/backends/alpm/pk-alpm-transaction.c ++++ b/backends/alpm/pk-alpm-transaction.c +@@ -394,6 +394,12 @@ pk_alpm_transaction_dep_resolve (PkBackendJob *job) + } + + static void ++pk_alpm_transaction_hook (PkBackendJob *job) ++{ ++ pk_backend_job_set_status (job, PK_STATUS_ENUM_RUN_HOOK); ++} ++ ++static void + pk_alpm_transaction_test_commit (PkBackendJob *job) + { + pk_backend_job_set_status (job, PK_STATUS_ENUM_TEST_COMMIT); +@@ -630,10 +636,10 @@ pk_alpm_transaction_event_cb (alpm_event_t *event) + case ALPM_EVENT_RESOLVEDEPS_START: + pk_alpm_transaction_dep_resolve (job); + break; +- case ALPM_EVENT_FILECONFLICTS_START: +- case ALPM_EVENT_INTERCONFLICTS_START: + case ALPM_EVENT_DELTA_INTEGRITY_START: + case ALPM_EVENT_DISKSPACE_START: ++ case ALPM_EVENT_FILECONFLICTS_START: ++ case ALPM_EVENT_INTERCONFLICTS_START: + pk_alpm_transaction_test_commit (job); + break; + case ALPM_EVENT_PACKAGE_OPERATION_START: +@@ -690,6 +696,7 @@ pk_alpm_transaction_event_cb (alpm_event_t *event) + case ALPM_EVENT_SCRIPTLET_INFO: + pk_alpm_transaction_output (((alpm_event_scriptlet_info_t *) event)->line); + break; ++ case ALPM_EVENT_KEY_DOWNLOAD_START: + case ALPM_EVENT_RETRIEVE_START: + pk_alpm_transaction_download (job); + break; +@@ -700,21 +707,35 @@ pk_alpm_transaction_event_cb (alpm_event_t *event) + pk_alpm_transaction_optdepend_removal (job, e->pkg, e->optdep); + } + break; ++ case ALPM_EVENT_HOOK_START: ++ pk_alpm_transaction_hook (job); ++ break; + case ALPM_EVENT_CHECKDEPS_DONE: +- case ALPM_EVENT_FILECONFLICTS_DONE: +- case ALPM_EVENT_RESOLVEDEPS_DONE: +- case ALPM_EVENT_INTERCONFLICTS_DONE: +- case ALPM_EVENT_INTEGRITY_DONE: +- case ALPM_EVENT_LOAD_DONE: ++ case ALPM_EVENT_DATABASE_MISSING: + case ALPM_EVENT_DELTA_INTEGRITY_DONE: +- case ALPM_EVENT_DELTA_PATCHES_DONE: + case ALPM_EVENT_DELTA_PATCH_DONE: ++ case ALPM_EVENT_DELTA_PATCHES_DONE: + case ALPM_EVENT_DELTA_PATCH_FAILED: + case ALPM_EVENT_DISKSPACE_DONE: +- case ALPM_EVENT_DATABASE_MISSING: +- case ALPM_EVENT_KEYRING_DONE: +- case ALPM_EVENT_KEY_DOWNLOAD_START: ++ case ALPM_EVENT_FILECONFLICTS_DONE: ++ case ALPM_EVENT_HOOK_DONE: ++ case ALPM_EVENT_HOOK_RUN_DONE: ++ case ALPM_EVENT_HOOK_RUN_START: ++ case ALPM_EVENT_INTEGRITY_DONE: ++ case ALPM_EVENT_INTERCONFLICTS_DONE: + case ALPM_EVENT_KEY_DOWNLOAD_DONE: ++ case ALPM_EVENT_KEYRING_DONE: ++ case ALPM_EVENT_LOAD_DONE: ++ case ALPM_EVENT_PACNEW_CREATED: ++ case ALPM_EVENT_PACSAVE_CREATED: ++ case ALPM_EVENT_PKGDOWNLOAD_DONE: ++ case ALPM_EVENT_PKGDOWNLOAD_FAILED: ++ case ALPM_EVENT_PKGDOWNLOAD_START: ++ case ALPM_EVENT_RESOLVEDEPS_DONE: ++ case ALPM_EVENT_RETRIEVE_DONE: ++ case ALPM_EVENT_RETRIEVE_FAILED: ++ case ALPM_EVENT_TRANSACTION_DONE: ++ case ALPM_EVENT_TRANSACTION_START: + /* ignored */ + break; + +From b2cdf195068cda12a2c5df1fcc29884ac6dab527 Mon Sep 17 00:00:00 2001 +From: Christian Hesse <[email protected]> +Date: Tue, 23 May 2017 14:27:54 +0200 +Subject: [PATCH 4/4] alpm: calculate progress for hooks +--- + backends/alpm/pk-alpm-transaction.c | 15 ++++++++++++++- + 1 file changed, 14 insertions(+), 1 deletion(-) + +diff --git a/backends/alpm/pk-alpm-transaction.c b/backends/alpm/pk-alpm-transaction.c +index a87a008a8..e8e513229 100644 +--- a/backends/alpm/pk-alpm-transaction.c ++++ b/backends/alpm/pk-alpm-transaction.c +@@ -397,6 +397,17 @@ static void + pk_alpm_transaction_hook (PkBackendJob *job) + { + pk_backend_job_set_status (job, PK_STATUS_ENUM_RUN_HOOK); ++ pk_backend_job_set_percentage (job, 0); ++} ++ ++static void ++pk_alpm_transaction_hook_run (PkBackendJob *job, alpm_event_hook_run_t * event) ++{ ++ /* Every hook runs a single command, so there is no progress. ++ Instead calculate the progress from total and finished hooks. */ ++ pk_backend_job_set_percentage (job, 100 * event->position / event->total); ++ syslog (LOG_DAEMON | LOG_WARNING, "Hook %s (%s) complete (%zu of %zu)", ++ event->name, event->desc, event->position, event->total); + } + + static void +@@ -710,6 +721,9 @@ pk_alpm_transaction_event_cb (alpm_event_t *event) + case ALPM_EVENT_HOOK_START: + pk_alpm_transaction_hook (job); + break; ++ case ALPM_EVENT_HOOK_RUN_DONE: ++ pk_alpm_transaction_hook_run (job, (alpm_event_hook_run_t *)event); ++ break; + case ALPM_EVENT_CHECKDEPS_DONE: + case ALPM_EVENT_DATABASE_MISSING: + case ALPM_EVENT_DELTA_INTEGRITY_DONE: +@@ -719,7 +733,6 @@ pk_alpm_transaction_event_cb (alpm_event_t *event) + case ALPM_EVENT_DISKSPACE_DONE: + case ALPM_EVENT_FILECONFLICTS_DONE: + case ALPM_EVENT_HOOK_DONE: +- case ALPM_EVENT_HOOK_RUN_DONE: + case ALPM_EVENT_HOOK_RUN_START: + case ALPM_EVENT_INTEGRITY_DONE: + case ALPM_EVENT_INTERCONFLICTS_DONE: Modified: PKGBUILD =================================================================== --- PKGBUILD 2017-06-02 12:10:01 UTC (rev 233409) +++ PKGBUILD 2017-06-02 12:16:54 UTC (rev 233410) @@ -4,7 +4,7 @@ pkgname='packagekit' pkgver=1.1.5 -pkgrel=1 +pkgrel=2 pkgdesc='A system designed to make installation and updates of packages easier' arch=('i686' 'x86_64') url='http://www.packagekit.org/' @@ -20,10 +20,18 @@ validpgpkeys=( '163EB50119225DB3DF8F49EA17ACBA8DFA970E17' # Richard Hughes <[email protected]> 'EC60AABDF42AAE8FB062640480858FA38F62AF74') # Kalev Lember <[email protected]> -source=("https://www.freedesktop.org/software/PackageKit/releases/PackageKit-${pkgver}.tar.xz"{,.asc}) +source=("https://www.freedesktop.org/software/PackageKit/releases/PackageKit-${pkgver}.tar.xz"{,.asc} + '0001-alpm-hooks.patch') sha256sums=('50f448ced5b460bd79ba0c97e9fe080153eaeecad909eee108284e3f5fc7b70c' - 'SKIP') + 'SKIP' + '8fab87aae67dba198cb5e090c3b4e2f7a5e3725995274d2f255aec2bacf1d3d4') +prepare() { + cd "${srcdir}/PackageKit-${pkgver}" + + patch -Np1 < "${srcdir}"/0001-alpm-hooks.patch +} + build() { cd "${srcdir}/PackageKit-${pkgver}"
