Update of /cvsroot/fink/fink/perlmod/Fink In directory sc8-pr-cvs5.sourceforge.net:/tmp/cvs-serv27252/Fink
Modified Files: Tag: selfupdate_classes ChangeLog Config.pm Engine.pm FinkVersion.pm.in Log Message: Redo check for automatic selfupdate if not done recently. Avoid circular require/use (really need to clean up this mess!) Index: Engine.pm =================================================================== RCS file: /cvsroot/fink/fink/perlmod/Fink/Engine.pm,v retrieving revision 1.398 retrieving revision 1.398.2.1 diff -u -d -r1.398 -r1.398.2.1 --- Engine.pm 15 Feb 2007 23:04:26 -0000 1.398 +++ Engine.pm 20 Mar 2007 01:37:55 -0000 1.398.2.1 @@ -1586,48 +1586,30 @@ } # don't bother doing this on point release, of course it's out-of-date ;) - if ($config->param("SelfUpdateMethod") ne "point") - { - my $cache_file = Fink::Package->db_index; + if ($config->param("SelfUpdateMethod") ne "point") { + my $up_to_date_text; - my $dir = IO::Handle->new(); - if (opendir($dir, "$basepath/fink/dists")) - { - for my $entry (readdir($dir)) - { - if ($entry =~ /^stamp-/) - { - $cache_file = $basepath . '/fink/dists/' . $entry; - last; - } + my ($method, $timestamp) = &Fink::SelfUpdate::last_done; + if (defined $method) { + my $age = (time-$timestamp) / (60*60*24); # days since last selfupdate + if ($age > 14) { + $up_to_date_text = "your info file index has not been updated for " . int($age) . " days."; } - closedir($dir); - } - else - { - warn "unable to open $basepath/fink/dists: $!"; + } else { + $up_to_date_text = "unable to determine last selfupdate time.\n"; } - - if (not -f $cache_file or (-M $cache_file > 14)) { + if (defined $up_to_date_text) { my $oldindexes = lc(Fink::Config::get_option("OldIndexes", "warn")); if ($oldindexes !~ /^(ignore|update|warn)$/) { $oldindexes = 'warn'; print_breaking_stderr "WARNING: unknown value for 'OldIndexes' in fink.conf: $oldindexes"; } - - my $up_to_date_text; - if (-f $cache_file) - { - $up_to_date_text = "WARNING: your info file index has not been updated for " . int(-M $cache_file) . " days."; - } else { - $up_to_date_text = "WARNING: your info file index does not exist."; - } - + if ($oldindexes eq "warn") { - print_breaking_stderr $up_to_date_text . " You should run 'fink selfupdate' to get the latest package descriptions.\n"; + print_breaking_stderr "WARNING: $up_to_date_text You should run 'fink selfupdate' to get the latest package descriptions.\n"; } elsif ($oldindexes eq "update") { - print_breaking_stderr $up_to_date_text . " Fink will now update it automatically."; + print_breaking_stderr "WARNING: $up_to_date_text Fink will now update it automatically."; require Fink::SelfUpdate; Fink::SelfUpdate::check(); } Index: FinkVersion.pm.in =================================================================== RCS file: /cvsroot/fink/fink/perlmod/Fink/FinkVersion.pm.in,v retrieving revision 1.36.2.1 retrieving revision 1.36.2.2 diff -u -d -r1.36.2.1 -r1.36.2.2 --- FinkVersion.pm.in 20 Mar 2007 00:25:07 -0000 1.36.2.1 +++ FinkVersion.pm.in 20 Mar 2007 01:37:55 -0000 1.36.2.2 @@ -33,7 +33,6 @@ use Fink::Config qw($basepath); use Fink::Command qw(cat); -require Fink::SelfUpdate; =head1 NAME @@ -81,15 +80,13 @@ my $dist_version = distribution_version Returns the fink distribution version you're currently using. +Deprecated...only use this if Fink::SelfUpdate::last_done fails. =cut sub distribution_version { my $dv; - my ($method, $timestamp) = &Fink::SelfUpdate::last_done; - if (defined $method) { - $dv = "selfupdate-$method at " . localtime($timestamp); - } elsif (-f "$basepath/fink/dists/VERSION") { + if (-f "$basepath/fink/dists/VERSION") { chomp($dv = cat "$basepath/fink/dists/VERSION"); } elsif (-f "$basepath/fink/VERSION") { chomp($dv = cat "$basepath/fink/VERSION"); Index: Config.pm =================================================================== RCS file: /cvsroot/fink/fink/perlmod/Fink/Config.pm,v retrieving revision 1.87.4.1 retrieving revision 1.87.4.2 diff -u -d -r1.87.4.1 -r1.87.4.2 --- Config.pm 20 Mar 2007 00:25:07 -0000 1.87.4.1 +++ Config.pm 20 Mar 2007 01:37:55 -0000 1.87.4.2 @@ -310,10 +310,20 @@ if ($opts{showversion}) { require Fink::FinkVersion; + require Fink::SelfUpdate; + + my ($method, $timestamp) = &Fink::SelfUpdate::last_done; + my $dv; + if (defined $method) { + $dv = "selfupdate-$method at " . localtime($timestamp); + } else { + $dv = Fink::FinkVersion::distribution_version(); + } + print "Package manager version: " . Fink::FinkVersion::fink_version() . "\n"; print "Distribution version: " - . Fink::FinkVersion::distribution_version() + . $dv . ', ' . $config->param('Distribution') . ', ' . $config->param('Architecture') . ($config->mixed_arch() ? ' (forged)' : '') Index: ChangeLog =================================================================== RCS file: /cvsroot/fink/fink/perlmod/Fink/ChangeLog,v retrieving revision 1.1439.2.11 retrieving revision 1.1439.2.12 diff -u -d -r1.1439.2.11 -r1.1439.2.12 --- ChangeLog 20 Mar 2007 00:25:07 -0000 1.1439.2.11 +++ ChangeLog 20 Mar 2007 01:37:55 -0000 1.1439.2.12 @@ -1,11 +1,19 @@ 2007-03-19 Daniel Macks <[EMAIL PROTECTED]> + * Engine.pm: Use SelfUpdate's API to get VERSION timestamp when + determining if selfupdate is "old". + + * FinkVersion.pm.in: Revert use of SU's interface to avoid + needing require() on SelfUpdate (circular mess) + +2007-03-19 Daniel Macks <[EMAIL PROTECTED]> + * Config.pm: Add fink.conf:Distribution to 'fink -V' output. * FinkVersion.pm.in: Try asking SelfUpdate about package-distro versioning, which would add selfupdate method and timestamp data to 'fink -V' output. * SelfUpdate.pm, SelfUpdate/rsync.pm: Unified and overhauled - handling of %p/fink/$dist/VERSION file. + handling of %p/fink/$dist/VERSION file (now includes timestamp). 2007-03-09 Daniel Macks <[EMAIL PROTECTED]> ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ Fink-commits mailing list Fink-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/fink-commits