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

Modified Files:
        create-finkdb.pl 
Log Message:
write xml indexes

Index: create-finkdb.pl
===================================================================
RCS file: /cvsroot/fink/pdb/create-finkdb.pl,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- create-finkdb.pl    26 Nov 2007 22:09:11 -0000      1.1
+++ create-finkdb.pl    27 Nov 2007 04:34:58 -0000      1.2
@@ -54,7 +54,7 @@
 use POSIX qw(strftime);
 use Time::HiRes qw(usleep);
 use Data::Dumper;
-use IO::Handle;
+use IO::File;
 use XML::Writer;
 
 use Encode;
@@ -65,13 +65,14 @@
 
 use vars qw(
        $debug
+       $infodir
+       $tempdir
        $trace
        $wanthelp
 
        $csv
        $iconv
        $last_updated
-       $temppath
 
        $releases
 );
@@ -80,13 +81,15 @@
 $debug        = 0;
 $trace        = 0;
 $iconv        = Text::Iconv->new("UTF-8", "UTF-8");
-$temppath     = $topdir . '/work';
+$tempdir      = $topdir . '/work';
+$infodir      = $tempdir . '/infofiles';
 $last_updated = time;
 
 # process command-line
 GetOptions(
        'help'       => \$wanthelp,
-       'temppath=s' => \$temppath,
+       'infodir=s'  => \$infodir,
+       'tempdir=s' => \$tempdir,
        'debug'      => \$debug,
        'trace'      => \$trace,
 ) or &die_with_usage;
@@ -137,10 +140,10 @@
 
 for my $release (sort keys %$releases)
 {
-       next unless ($release->{'issupported'});
+       next unless ($releases->{$release}->{'isactive'});
 
        print "- checking out $release\n";
-       check_out_release($releases->{$release});
+       #check_out_release($releases->{$release});
 
        print "- indexing $release\n";
        index_release_to_xml($releases->{$release});
@@ -152,14 +155,8 @@
        my $release = shift;
        my $release_id = $release->{'id'};
 
-       my $tag = 'release_' . $release->{'version'};
-       $tag =~ s/\./_/gs;
-       if ($tag eq "release_current")
-       {
-               $tag = 'HEAD';
-       }
-
-       my $checkoutroot = $temppath . '/' . $release_id . '/fink';
+       my $tag = get_tag_name($release->{'version'});
+       my $checkoutroot = get_basepath($release) . '/fink';
        my $workingdir   = $checkoutroot;
 
        my @command = (
@@ -280,6 +277,17 @@
                $usage =~ s/[\r\n\s]+$//s;
                #$usage =~ s/\n/\\n/g;
        
+               my $parent = undef;
+               if ($vo->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(),
+                       }
+               }
+
                my $package_info = {
                        name            => $vo->get_name(),
                        version         => $vo->get_version(),
@@ -292,8 +300,10 @@
                        license         => $vo->get_license(),
                        homepage        => $vo->param_default("Homepage", ""),
                        section         => $vo->get_section(),
-                       parentname      => $vo->has_parent()? 
$vo->get_parent()->get_name():undef,
+                       parent          => package_id($parent),
                        infofile        => $infofile,
+                       rcspath         => 
$release->{'distribution'}->{'rcspath'} . '/' . $infofile,
+                       tag             => get_tag_name($release->{'version'}),
                        infofilechanged => $infofilechanged,
                        last_updated    => $last_updated,
                };
@@ -303,15 +313,59 @@
                        $package_info->{$key} = 
encode_utf8($package_info->{$key}) if (defined $package_info->{$key});
                }
 
-               print "  - found package ", package_id($package_info), "\n" if 
($debug);
+               print "  - ", package_id($package_info), "\n" if ($debug);
+
+               my $infopath = get_infopath($release);
+               mkpath($infopath);
+
+               my $outputfile = $infopath . '/' . package_id($package_info) . 
'.xml';
+               my $output = IO::File->new('>' . $outputfile);
+
+               my $writer = XML::Writer->new(OUTPUT => $output);
+
+               $writer->startTag("infofile", "version" => $fink_version);
+
+               $writer->startTag("id");
+               $writer->characters(package_id($package_info));
+               $writer->endTag("id");
+
+               for my $key (keys %$package_info)
+               {
+                       $writer->startTag($key);
+                       $writer->characters($package_info->{$key}) if (exists 
$package_info->{$key} and defined $package_info->{$key});
+                       $writer->endTag($key);
+               }
+
+               $writer->endTag("infofile");
+               $writer->end();
        }
 }
 
+# get the name of a CVS tag given the version
+sub get_tag_name {
+       my $release_version = shift;
+
+       my $tag = 'release_' . $release_version;
+       $tag =~ s/\./_/gs;
+       if ($tag eq "release_current")
+       {
+               $tag = 'HEAD';
+       }
+
+       return $tag;
+}
+
+# get the info file path for a given release
+sub get_infopath {
+       my $release = shift;
+       return $infodir . '/' . $release->{'id'};
+}
+
 # get the basepath for a given release
 sub get_basepath {
        my $release = shift;
 
-       return $temppath . '/' . $release->{'id'};
+       return $tempdir . '/basepath/' . $release->{'id'};
 }
 
 # run a command in a work directory


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Fink-commits mailing list
Fink-commits@lists.sourceforge.net
http://news.gmane.org/gmane.os.apple.fink.cvs

Reply via email to