Update of /cvsroot/fink/fink/perlmod/Fink
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7168/perlmod/Fink

Modified Files:
        ChangeLog Engine.pm PkgVersion.pm Scanpackages.pm 
Log Message:
make scanpackages run on postinstall, when it's the first time the user is 
running with AutoScanpackages

Index: Scanpackages.pm
===================================================================
RCS file: /cvsroot/fink/fink/perlmod/Fink/Scanpackages.pm,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- Scanpackages.pm     21 Mar 2006 21:05:35 -0000      1.9
+++ Scanpackages.pm     29 Mar 2006 23:00:45 -0000      1.10
@@ -73,6 +73,8 @@
   Fink::Scanpackages->scan_dists($options, @dirs);
   Fink::Scanpackages->scan_fink(%options);
 
+  my $path = Fink::Scanpackages->default_cache;
+
 =head1 METHODS
 
 =over 4
@@ -312,6 +314,22 @@
                @dists);
 }
 
+=item default_cache
+
+  my $path = Fink::Scanpackages->default_cache;
+
+Get the path to the file that is used by default for caching result of
+scan_fink.
+
+=cut
+
+sub default_cache {
+       my ($self) = @_;
+       
+       $self->_ensure_fink;
+       return $Fink::Config::basepath . "/var/lib/fink/scanpackages.db";
+}
+
 # Initialize the object
 sub initialize {
        my ($self, %opts) = @_;
@@ -353,15 +371,16 @@
 # Make sure Fink is configured
 #
 # $sp->_ensure_fink;
+# Fink::Scanpackages->_ensure_fink;
 sub _ensure_fink {
        my ($self) = @_;
        
-       unless ($self->{_fink_loaded}) {
+       unless (ref($self) && $self->{_fink_loaded}) {
                require Fink::Config;
                
                # Make sure fink has a config
                &_use_fink() unless defined $Fink::Config::config;
-               $self->{_fink_loaded} = 1;
+               $self->{_fink_loaded} = 1 if ref($self);
        }
 }
 

Index: PkgVersion.pm
===================================================================
RCS file: /cvsroot/fink/fink/perlmod/Fink/PkgVersion.pm,v
retrieving revision 1.545
retrieving revision 1.546
diff -u -d -r1.545 -r1.546
--- PkgVersion.pm       24 Mar 2006 23:23:32 -0000      1.545
+++ PkgVersion.pm       29 Mar 2006 23:00:45 -0000      1.546
@@ -5039,7 +5039,7 @@
                
                if ($autoscan && apt_available) {
                        require Fink::Engine; # yuck
-                       Fink::Engine::scanpackages(0, keys %built_trees);
+                       Fink::Engine::scanpackages({}, [ keys %built_trees ]);
                        Fink::Engine::aptget_update();
                }
                %built_trees = ();

Index: Engine.pm
===================================================================
RCS file: /cvsroot/fink/fink/perlmod/Fink/Engine.pm,v
retrieving revision 1.370
retrieving revision 1.371
diff -u -d -r1.370 -r1.371
--- Engine.pm   28 Mar 2006 20:47:52 -0000      1.370
+++ Engine.pm   29 Mar 2006 23:00:44 -0000      1.371
@@ -659,33 +659,40 @@
 =cut
 
 sub cmd_scanpackages {
-       scanpackages(0, @_);
+       scanpackages({}, [EMAIL PROTECTED]);
        aptget_update;
 }
 
 =item scanpackages
 
-  scanpackages $quiet, @trees;
+  scanpackages $opts, [EMAIL PROTECTED];
 
 Update the apt-get package database in the given trees.
 
 =cut
 
 sub scanpackages {
-       my ($quiet, @treelist) = @_;
+       my $opts = shift || { };
+       my $trees = shift || [ ];
        
+       # Don't scan restrictive if it's unwanted
+       if (!exists $opts->{restrictive}
+                       && $config->has_param('ScanRestrictivePackages')
+                       && !$config->param_boolean('ScanRestrictivePackages')) {
+               $opts->{restrictive} = 0;
+       }
+
        # Use lowest verbosity
-       $quiet = $config->verbosity_level if $quiet > $config->verbosity_level;
-       print STDERR "Updating the list of locally available binary packages.\n"
-               unless $quiet > 1; # very quiet!
+       if (!exists $opts->{verbosity}) {
+               my $v = $config->verbosity_level;
+               $v = 1 if $v > 1; # Only allow > 1 if given as an explicit 
option
+               $opts->{verbosity} = $v;
+       }
+       
+       print STDERR "Updating the list of locally available binary 
packages.\n";
        
        # Run scanpackages
-       my $restrictive = !$config->has_param('ScanRestrictivePackages')
-               || $config->param_boolean('ScanRestrictivePackages');
-       Fink::Scanpackages->scan_fink({
-               verbosity => !$quiet,
-               restrictive => $restrictive
-       }, @treelist);
+       Fink::Scanpackages->scan_fink($opts, @$trees);
 }
 
 ### package-related commands
@@ -1275,7 +1282,7 @@
                        print "Skipping scanpackages and in dryrun mode\n";
                } else {
                        if (apt_available) {
-                               scanpackages(1);
+                               scanpackages({ verbosity => 0 });
                                aptget_update(1);
                        }
                }

Index: ChangeLog
===================================================================
RCS file: /cvsroot/fink/fink/perlmod/Fink/ChangeLog,v
retrieving revision 1.1313
retrieving revision 1.1314
diff -u -d -r1.1313 -r1.1314
--- ChangeLog   29 Mar 2006 17:30:49 -0000      1.1313
+++ ChangeLog   29 Mar 2006 23:00:44 -0000      1.1314
@@ -1,3 +1,9 @@
+2006-03-29  Dave Vasilevsky  <[EMAIL PROTECTED]>
+
+       * Scanpackages.pm: Provide a way to get the path to the default cache.
+       * Engine.pm: Make Engine::scanpackages more flexible.
+       * Engine.pm, PkgVersion.pm: Accommodate changes to Engine::scanpackages.
+
 2006-03-29  Dave Morrison  <[EMAIL PROTECTED]>
 
        * Config.pm: Avoid circular dependency



-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
Fink-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/fink-commits

Reply via email to