From f959ee44016b8daad2a72f9dab16365a40d0055b Mon Sep 17 00:00:00 2001 From: Aurelien Lefebvre Date: Wed, 28 May 2008 11:54:32 +0200 Subject: [PATCH] * Added get-updates method. --- backends/urpmi/helpers/Makefile.am | 1 + backends/urpmi/helpers/get-updates.pl | 44 +++++++++++++++++++++++++++ backends/urpmi/pk-backend-urpmi.c | 15 ++++++++- 3 files changed, 59 insertions(+), 1 deletion(-) create mode 100755 backends/urpmi/helpers/get-updates.pl diff --git a/backends/urpmi/helpers/Makefile.am b/backends/urpmi/helpers/Makefile.am index 4328aaff3..a0de40198 100644 --- a/backends/urpmi/helpers/Makefile.am +++ b/backends/urpmi/helpers/Makefile.am @@ -9,6 +9,7 @@ dist_helper_DATA = \ get-details.pl \ get-depends.pl \ get-files.pl \ + get-updates.pl \ $(NULL) install-data-hook: diff --git a/backends/urpmi/helpers/get-updates.pl b/backends/urpmi/helpers/get-updates.pl new file mode 100755 index 000000000..5b72cc001 --- /dev/null +++ b/backends/urpmi/helpers/get-updates.pl @@ -0,0 +1,44 @@ +#!/usr/bin/perl + +use strict; + +use lib; +use File::Basename; + +BEGIN { + push @INC, dirname($0); +} + +use urpm; +use urpm::args; +use urpm::media; +use urpm::select; +use MDK::Common; +use urpmi_backend::tools; +use perl_packagekit::enums; +use perl_packagekit::prints; + +# No arguments authorized +exit if($#ARGV != -1); + +my $urpm = urpm->new_parse_cmdline; +urpm::media::configure($urpm); + +my $state = {}; +my %requested; +my $restart = urpm::select::resolve_dependencies($urpm, $state, \%requested, + auto_select => 1); + +my %selected = %{$state->{selected} || {}}; +my @ask_unselect = urpm::select::unselected_packages($urpm, $state); +my @to_remove = urpm::select::removed_packages($urpm, $state); +my @to_install = @{$urpm->{depslist}}[sort { $a <=> $b } keys %{$state->{selected}}]; +my ($src, $binary) = partition { $_->arch eq 'src' } @to_install; +@to_install = @$binary; + +foreach(@to_install) { + # Fix me + # Be default, we set to bugfix info type + # Need to be implemented, see urpmq source. + pk_print_package(INFO_BUGFIX, get_package_id($_), $_->summary); +} diff --git a/backends/urpmi/pk-backend-urpmi.c b/backends/urpmi/pk-backend-urpmi.c index d8a241d9d..d7b4eae4a 100644 --- a/backends/urpmi/pk-backend-urpmi.c +++ b/backends/urpmi/pk-backend-urpmi.c @@ -103,6 +103,19 @@ backend_get_depends (PkBackend *backend, PkFilterEnum filters, const gchar *pack g_free (filters_text); } +/** + * backend_get_updates: + */ +static void +backend_get_updates (PkBackend *backend, PkFilterEnum filters) +{ + gchar *filters_text; + filters_text = pk_filter_enums_to_text (filters); + pk_backend_spawn_helper (spawn, "get-updates.pl", filters_text, NULL); + g_free (filters_text); +} + + PK_BACKEND_OPTIONS ( "URPMI", /* description */ @@ -119,7 +132,7 @@ PK_BACKEND_OPTIONS ( NULL, /* get_repo_list */ NULL, /* get_requires */ NULL, /* get_update_detail */ - NULL, /* get_updates */ + backend_get_updates, /* get_updates */ NULL, /* install_files */ NULL, /* install_packages */ NULL, /* install_signature */