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

Reply via email to