Update of /cvsroot/fink/fink/perlmod/Fink
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28829/perlmod/Fink
Modified Files:
ChangeLog Engine.pm PkgVersion.pm
Log Message:
DATABASE FORMAT CHANGE! trees switcheroo
Index: PkgVersion.pm
===================================================================
RCS file: /cvsroot/fink/fink/perlmod/Fink/PkgVersion.pm,v
retrieving revision 1.537
retrieving revision 1.538
diff -u -d -r1.537 -r1.538
--- PkgVersion.pm 20 Mar 2006 05:14:11 -0000 1.537
+++ PkgVersion.pm 21 Mar 2006 22:57:57 -0000 1.538
@@ -154,7 +154,7 @@
{
# Some things we don't want to load, if we'd rather keep what's already
in
# the database.
- my %dont_load = map { $_ => 1 } qw(_trees);
+ my %dont_load = map { $_ => 1 } qw(_full_trees);
sub load_fields {
my $self = shift;
@@ -224,7 +224,7 @@
{
# Fields required to add a package to $packages
my @keepfields = qw(_name _epoch _version _revision _filename
- _pkglist_provides essential _trees);
+ _pkglist_provides essential _full_trees);
sub get_init_fields {
my $self = shift;
@@ -539,6 +539,7 @@
# path handling
if ($filename) {
@parts = split(/\//, $filename);
+ shift @parts if $parts[0] eq ''; # scrap detritus from leading /
pop @parts; # remove filename
$self->{_patchpath} = join("/", @parts);
for ($finkinfo_index = $#parts;
@@ -552,7 +553,7 @@
$self->{_section} = 'unknown';
$self->{_debpath} = '/tmp';
$self->{_debpaths} = ['/tmp'];
- $self->{_trees} = [ 'unknown' ];
+ $self->{_full_trees} = [ [ 'unknown' ] ];
} else {
# compute the "section" of this package, e.g. "net",
"devel", "crypto"...
$section = $parts[$finkinfo_index-1]."/";
@@ -568,9 +569,8 @@
push @{$self->{_debpaths}}, join("/",
@parts[0..$i]);
}
- # determine the package tree ("stable", "unstable",
etc.)
- @parts = split(/\//,
substr($filename,length("$basepath/fink/dists/")));
- $self->{_trees} = [ $parts[0] ];
+ # determine the full package tree, eg: [ qw(stable
main) ]
+ $self->{_full_trees} = [ [ @parts[3..$finkinfo_index-1]
] ];
}
} else {
# for dummy descriptions generated from dpkg status data alone
@@ -580,7 +580,7 @@
$self->{_debpaths} = [];
# assume "binary" tree
- $self->{_trees} = [ "binary" ];
+ $self->{_full_trees} = [ [ "binary" ] ];
}
# some commonly used stuff
@@ -1103,12 +1103,12 @@
sub merge {
my ($self, $old) = @_;
-
# Insert new trees
{
- my %seen = map { $_ => 1 } $self->get_trees;
- foreach my $tree ($old->get_trees) {
- unshift @{$self->{_trees}}, $tree unless $seen{$tree}++;
+ my %seen = map { $_ => 1 } $self->get_full_trees;
+ foreach my $tree (@{$old->{_full_trees}}) {
+ my $txt = join('/', @$tree);
+ unshift @{$self->{_full_trees}}, $tree unless
$seen{$txt}++;
}
}
@@ -1316,6 +1316,7 @@
my $tree = $pv->get_tree;
Get the last (highest priority) tree in which this package can be found.
+This refers to just the "archive" component of the tree, eg: 'main'.
=cut
@@ -1323,7 +1324,7 @@
sub get_tree {
my $self = shift;
- return( ($self->get_trees)[-1] );
+ return ( ($self->get_trees)[-1] );
}
=item get_trees
@@ -1336,7 +1337,7 @@
sub get_trees {
my $self = shift;
- return @{$self->{_trees}};
+ return map { $_->[0] } @{$self->{_full_trees}};
}
=item in_tree
@@ -5214,6 +5215,29 @@
return lock_wait("$lockfile", exclusive => 1, no_block => 1);
}
+=item get_full_trees
+
+ my @trees = $pv->get_full_trees;
+
+Get the fink.conf trees in which this package is located. This includes both
+the 'Archive' and 'Component', eg: 'stable/main'.
+
+=item get_full_tree
+
+ my $trees = $pv->get_full_tree;
+
+Get the highest priority tree in which this package is located.
+
+=cut
+
+sub get_full_trees {
+ my ($self) = @_;
+ return map { join('/', @$_) } @{$self->{_full_trees}};
+}
+sub get_full_tree {
+ return ($_[0]->get_full_trees)[-1];
+}
+
=back
=cut
Index: Engine.pm
===================================================================
RCS file: /cvsroot/fink/fink/perlmod/Fink/Engine.pm,v
retrieving revision 1.358
retrieving revision 1.359
diff -u -d -r1.358 -r1.359
--- Engine.pm 19 Mar 2006 09:27:48 -0000 1.358
+++ Engine.pm 21 Mar 2006 22:57:53 -0000 1.359
@@ -2214,7 +2214,7 @@
printf "%s:\n", $_;
print map { " $_=".$value->{$_}."\n" } sort
keys %$value;
} elsif ($_ eq 'trees') {
- printf "%s: %s\n", $_, join(' ',
$pkg->get_trees);
+ printf "%s: %s\n", $_, join(' ',
$pkg->get_full_trees);
} else {
die "Unknown field $_\n";
}
Index: ChangeLog
===================================================================
RCS file: /cvsroot/fink/fink/perlmod/Fink/ChangeLog,v
retrieving revision 1.1282
retrieving revision 1.1283
diff -u -d -r1.1282 -r1.1283
--- ChangeLog 21 Mar 2006 21:05:35 -0000 1.1282
+++ ChangeLog 21 Mar 2006 22:57:53 -0000 1.1283
@@ -1,5 +1,15 @@
2006-03-21 Dave Vasilevsky <[EMAIL PROTECTED]>
+ * PkgVersion.pm:
+ - Store the full tree ("stable/main") instead of just the first
+ component ("stable").
+ - Remove in_tree, it's unused.
+ * Engine.pm: Use the full tree in dumpinfo.
+
+ *** THIS IS A DB FORMAT CHANGE, RUN index -f OR EXPECT BREAKAGE ***
+
+2006-03-21 Dave Vasilevsky <[EMAIL PROTECTED]>
+
* Scanpackages.pm: Use CLI::capture to shut up Fink::Package.
2006-03-21 Dave Vasilevsky <[EMAIL PROTECTED]>
-------------------------------------------------------
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