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