diff options
Diffstat (limited to 'mgaupdate')
-rwxr-xr-x | mgaupdate | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/mgaupdate b/mgaupdate new file mode 100755 index 00000000..7c1623ab --- /dev/null +++ b/mgaupdate @@ -0,0 +1,109 @@ +#!/usr/bin/perl +################################################################################ +# Mgaupdate # +# # +# Copyright (C) 2002-2006 Mandriva # +# # +# Daouda Lo # +# Thierry Vignaud <tvignaud at mandriva dot com> # +# # +# This program is free software; you can redistribute it and/or modify # +# it under the terms of the GNU General Public License Version 2 as # +# published by the Free Software Foundation. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program; if not, write to the Free Software # +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # +################################################################################ + +# workaround standalone.pm eating "--auto" from @ARGV: +BEGIN { $::no_global_argv_parsing = 1 } + +use strict; +use POSIX; +use lib qw(/usr/lib/libDrakX /usr/lib/libDrakX/drakfirsttime); +use standalone; # for explanations +use common; +use interactive; +use URI::Escape; +use run_program; + +use mgaonline; + +use Getopt::Long; + +BEGIN { unshift @::textdomains, 'mgaupdate' } + +require_root_capability(); + +my $confdir = '/root/.MdkOnline'; +my $conffile = "$confdir/mgaupdate"; + +my $logfile = '/var/tmp/mgaupdate.log'; + + +my $CLIENT_VERSION = "4"; +my $YEARS = "2002-2006"; +my $MGA_YEARS = "2010-2011"; + +#for compatibilities with former versions +mkdir_p($confdir) if !-d $confdir; +-e '/root/.mgaupdate' and system "/bin/mv", "/root/.mgaupdate", $conffile; + + +sub usage() { + print STDERR N("mgaupdate version %s +Copyright (C) %s Mandriva. +Copyright (C) %s Mageia. +This is free software and may be redistributed under the terms of the GNU GPL. + +usage: +", $CLIENT_VERSION, $YEARS, $MGA_YEARS) . N(" --help - print this help message. +") . N(" --auto - Mageia Update launched automatically. +") . N(" --mnf - launch mnf specific scripts. +") . N(" --noX - text mode version of Mageia Update. +") . N(" --debug - log what is done +"); + exit(0); +} + +my ($auto, $mnf, $noX, $debug); +my %options = ( + 'auto' => \$auto, + 'mnf' => \$mnf, + 'noX' => \$noX, + 'd|debug' => \$debug, + 'h|help' => \&usage, + ); + +GetOptions(%options); + +-e $logfile and rm_rf($logfile); + +my $ret = update_pkgs(); +if ($ret != 1) { + output_p($logfile, "[mgaupdate] Error 100: Packages failed to upgrade"); + log::explanations("[mgaupdate] Error 100: Packages failed to upgrade"); +} +clean_dir(); + + +sub update_pkgs { + my (@pkgs) = @_; + eval { + run_program::raw({ timeout => 'never' }, '/usr/sbin/urpmi', '--auto-update', '--auto', '--keep', '--update', map { if_(/(.*)-[^-]*-[^-]*\.[^-.]*?\.rpm$/, $1) } @pkgs); + $? == 0 or die N("Unable to update packages from update_source medium.\n"); + }; + $@ and output_p($logfile, "[mgaupdate] Error 99: $@"), return 0; + return 1; +} + +sub clean_dir() { + mgaonline::clean_confdir(); + output_p($logfile, 'OK'); +} |