diff options
-rw-r--r-- | rpmtools.pm | 15 | ||||
-rw-r--r-- | rpmtools.spec | 6 |
2 files changed, 13 insertions, 8 deletions
diff --git a/rpmtools.pm b/rpmtools.pm index 738aab5..7843604 100644 --- a/rpmtools.pm +++ b/rpmtools.pm @@ -253,7 +253,7 @@ sub compute_depslist { } #- setup, filesystem and basesystem should be at the beginning. @ordered{qw(ldconfig readline termcap libtermcap bash sash glibc setup filesystem basesystem)} = - (100000, 90000, 80000, 70000, 60000, 50000, 40000, 30000, 20000, 10000); + (100000, 90000, 80000, 70000, 60000, 50000, 40000, 30000, 20000, 10000); #- compute base flag, consists of packages which are required without #- choices of basesystem and are ALWAYS installed. these packages can @@ -276,8 +276,7 @@ sub compute_depslist { #- recompute requires to use packages id, drop any base packages or #- reference of a package to itself. foreach my $pkg (sort { $a->{id} <=> $b->{id} } @info) { - my %requires_id; - my @requires_id; + my ($id, $base, %requires_id, @requires_id); foreach (@{$pkg->{requires}}) { if (ref $_) { #- all choices are grouped together at the end of requires, @@ -296,15 +295,16 @@ sub compute_depslist { #- if a base package is in a list, keep it instead of the choice. if (@choices_base_id) { - $_ = $choices_base_id[0]; + ($id, $base) = ($choices_base_id[0], 1); } else { push @requires_id, \@choices_id; next; } + } else { + ($id, $base) = $params->{info}{$_} ? ($params->{info}{$_}{id}, exists $params->{info}{$_}{base}) : ($_, 0); } #- select individual package. - my ($id, $base) = $params->{info}{$_} ? ($params->{info}{$_}{id}, exists $params->{info}{$_}{base}) : ($_, 0); $base &&= $params->{use_base_flag} && $pkg->{name} ne 'basesystem'; $requires_id{$id} = $_; $id == $pkg->{id} || $base or push @requires_id, $id; @@ -367,8 +367,9 @@ sub relocate_depslist { #- is multiply defined and this should be fixed. #- first correct info hash, then a second pass on depslist #- is required to relocate its entries. - my $cmp_version = version_compare($_->{version}, $params->{info}{$_->{name}}); - if ($cmp_version > 0 || $cmp_version == 0 && version_compare($_->{release}, $params->{info}{$_->{name}}) > 0) { + my $cmp_version = version_compare($_->{version}, $params->{info}{$_->{name}}{version}); + if ($cmp_version > 0 || + $cmp_version == 0 && version_compare($_->{release}, $params->{info}{$_->{name}}{release}) > 0) { $params->{info}{$_->{name}} = $_; ++$relocated_entries; } diff --git a/rpmtools.spec b/rpmtools.spec index bf4609b..cf08ba4 100644 --- a/rpmtools.spec +++ b/rpmtools.spec @@ -1,5 +1,5 @@ %define name rpmtools -%define release 9mdk +%define release 10mdk # do not modify here, see Makefile in the CVS %define version 2.1 @@ -51,6 +51,10 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/perl5/man/*/* %changelog +* Tue Jan 30 2001 François Pons <fpons@ackbar.mandrakesoft.com> 2.1-10mdk +- fixed bug of NOTFOUND_6 in depslist computation. +- fixed depslist relocation bug. + * Tue Jan 23 2001 François Pons <fpons@ackbar.mandrakesoft.com> 2.1-9mdk - packdrake.pm to 0.03, added source directory for building an archive. - changed build_archive to use a specific directory. |