Update of /cvsroot/fink/pdb
In directory sc8-pr-cvs17.sourceforge.net:/tmp/cvs-serv28928

Modified Files:
        create-finkdb.pl 
Log Message:
directly scan the package files so the fink index cache does not get in the way 
-- fixes version mixups

Index: create-finkdb.pl
===================================================================
RCS file: /cvsroot/fink/pdb/create-finkdb.pl,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- create-finkdb.pl    28 Nov 2007 04:35:07 -0000      1.9
+++ create-finkdb.pl    28 Nov 2007 14:29:49 -0000      1.10
@@ -224,8 +224,10 @@
        my $tree = $release->{'type'};
        $tree = 'stable' if ($tree eq 'bindist');
        my $basepath = get_basepath($release);
+       mkpath($basepath . '/var/lib/fink');
 
        undef $Fink::Package::packages;
+       undef $Fink::Config::config;
 
        open(OLDOUT, ">&STDOUT");
        open(OLDERR, ">&STDERR");
@@ -253,9 +255,18 @@
                }
        );
 
-       # omit actual locally-installed fink if it is present
-       set_options({exclude_trees=>[qw/status virtual/]});
-       
+       my @packagefiles;
+       find(
+               {
+                       wanted => sub {
+                               return unless (/\.info$/);
+                               push(@packagefiles, 
Fink::PkgVersion->pkgversions_from_info_file($File::Find::name));
+                       },
+                       nochdir => 1,
+               },
+               $basepath . '/fink/dists/' . $tree
+       );
+
        # load the package database
        Fink::Package->load_packages();
 
@@ -267,24 +278,19 @@
                open(STDERR, ">&OLDERR");
        }
 
+       print $release->{'id'} . " trees = " . $config->param("trees"), "\n";
+
        ### loop over packages
 
-       my ($package, $po, $version, $vo);
+       my ($packageobj);
        my ($maintainer, $email, $desc, $usage, $parent, $infofile, 
$infofilechanged);
        my ($v, $s, $key, %data, $expand_override);
 
-       foreach $package (Fink::Package->list_packages())
+       #foreach $package (Fink::Package->list_packages())
+       foreach $packageobj (@packagefiles)
        {
-               $po = Fink::Package->package_by_name($package);
-               next if $po->is_virtual();
-               $version = &latest_version($po->list_versions());
-               $vo = $po->get_version($version);
-               
-               # Skip splitoffs
-               #next if $vo->has_parent();
-       
                # get info file
-               $infofile = $vo->get_info_filename();
+               $infofile = $packageobj->get_info_filename();
 
                next if (not defined $infofile or not -f $infofile);
 
@@ -298,12 +304,12 @@
                
                # gather fields
        
-               $maintainer = $vo->param_default("Maintainer", "(not set)");
+               $maintainer = $packageobj->param_default("Maintainer", "(not 
set)");
        
                # Always show %p as '/sw'
                $expand_override->{'p'} = '/sw';
        
-               $desc = $vo->param_default_expanded('DescDetail', '',
+               $desc = $packageobj->param_default_expanded('DescDetail', '',
                        expand_override => $expand_override,
                        err_action => 'ignore'
                );
@@ -311,7 +317,7 @@
                $desc =~ s/\s+$//s;
                #$desc =~ s/\n/\\n/g;
         
-               $usage = $vo->param_default_expanded('DescUsage', '',
+               $usage = $packageobj->param_default_expanded('DescUsage', '',
                        expand_override => $expand_override,
                        err_action => 'ignore'
                );
@@ -320,28 +326,28 @@
                #$usage =~ s/\n/\\n/g;
        
                my $parent = undef;
-               if ($vo->has_parent())
+               if ($packageobj->has_parent())
                {
                        $parent = {
-                               name     => $vo->get_parent()->get_name(),
-                               version  => $vo->get_parent()->get_version(),
-                               revision => $vo->get_parent()->get_revision(),
-                               epoch    => $vo->get_parent()->get_epoch(),
+                               name     => 
$packageobj->get_parent()->get_name(),
+                               version  => 
$packageobj->get_parent()->get_version(),
+                               revision => 
$packageobj->get_parent()->get_revision(),
+                               epoch    => 
$packageobj->get_parent()->get_epoch(),
                        };
                }
 
                my $package_info = {
-                       name              => $vo->get_name(),
-                       version           => $vo->get_version(),
-                       revision          => $vo->get_revision(),
-                       epoch             => $vo->get_epoch(),
-                       descshort         => $vo->get_shortdescription(),
+                       name              => $packageobj->get_name(),
+                       version           => $packageobj->get_version(),
+                       revision          => $packageobj->get_revision(),
+                       epoch             => $packageobj->get_epoch(),
+                       descshort         => 
$packageobj->get_shortdescription(),
                        desclong          => $desc,
                        descusage         => $usage,
                        maintainer        => $maintainer,
-                       license           => $vo->get_license(),
-                       homepage          => $vo->param_default("Homepage", ""),
-                       section           => $vo->get_section(),
+                       license           => $packageobj->get_license(),
+                       homepage          => 
$packageobj->param_default("Homepage", ""),
+                       section           => $packageobj->get_section(),
                        parentname        => package_id($parent),
                        infofile          => $infofile,
                        rcspath           => 
$release->{'distribution'}->{'rcspath'} . '/' . $infofile,
@@ -386,7 +392,7 @@
                $writer->endTag("field");
 
                $writer->startTag("field", "name" => "doc_id");
-               $writer->characters($release->{'id'} . '/' . 
package_id($package_info));
+               $writer->characters($release->{'id'} . '-' . 
package_id($package_info));
                $writer->endTag("field");
 
                for my $key (keys %$package_info)


-------------------------------------------------------------------------
SF.Net email is sponsored by: The Future of Linux Business White Paper
from Novell.  From the desktop to the data center, Linux is going
mainstream.  Let it simplify your IT future.
http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4
_______________________________________________
Fink-commits mailing list
[email protected]
http://news.gmane.org/gmane.os.apple.fink.cvs

Reply via email to