diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2015-02-12 17:41:58 +0100 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2015-02-12 17:55:29 +0100 |
commit | fa47d347a4b159a677f773997640b3defe20c125 (patch) | |
tree | 2722e8bbad435c02b3763bd7cc976e23d1e1f97c /pkgs/build-support/vm | |
parent | ff37dc6fb68746d3ca9c1271e158c119989011db (diff) | |
download | nixlib-fa47d347a4b159a677f773997640b3defe20c125.tar nixlib-fa47d347a4b159a677f773997640b3defe20c125.tar.gz nixlib-fa47d347a4b159a677f773997640b3defe20c125.tar.bz2 nixlib-fa47d347a4b159a677f773997640b3defe20c125.tar.lz nixlib-fa47d347a4b159a677f773997640b3defe20c125.tar.xz nixlib-fa47d347a4b159a677f773997640b3defe20c125.tar.zst nixlib-fa47d347a4b159a677f773997640b3defe20c125.zip |
Fix conflict between fedora-release and generic-release
http://hydra.nixos.org/build/19594340
Diffstat (limited to 'pkgs/build-support/vm')
-rw-r--r-- | pkgs/build-support/vm/rpm/rpm-closure.pl | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/pkgs/build-support/vm/rpm/rpm-closure.pl b/pkgs/build-support/vm/rpm/rpm-closure.pl index 841f272270ad..8f7669d6fef8 100644 --- a/pkgs/build-support/vm/rpm/rpm-closure.pl +++ b/pkgs/build-support/vm/rpm/rpm-closure.pl @@ -90,19 +90,25 @@ for (my $i = 0; $i < scalar(@packagesFiles); $i++) { } my %provides; -foreach my $pkgName (keys %pkgs) { +PKG: foreach my $pkgName (keys %pkgs) { #print STDERR "looking at $pkgName\n"; my $pkg = $pkgs{$pkgName}; - #print STDERR keys %{$pkg->{format}}, "\n"; - - #print STDERR $pkg->{format}->{'rpm:provides'}, "\n"; + # Skip packages that conflict with a required package. + my $conflicts = $pkg->{format}->{'rpm:conflicts'}->{'rpm:entry'} // []; + foreach my $conflict (@{$conflicts}) { + next if $conflict->{flags} // "" eq "LT" || $conflict->{flags} // "" eq "LE"; + #print STDERR " $pkgName conflicts with $conflict->{name}\n"; + if (grep { $_ eq $conflict->{name} } @toplevelPkgs) { + print STDERR "skipping package $pkgName because it conflicts with a required package\n"; + next PKG; + } + } my $provides = $pkg->{format}->{'rpm:provides'}->{'rpm:entry'} or die; foreach my $req (@{$provides}) { - #print "$req->{name}\n"; - #print STDERR " provides $req\n"; - #die "multiple provides for $req" if defined $provides{$req}; + #print STDERR " $pkgName provides $req->{name}\n"; + #die "multiple provides for $req->{name}" if defined $provides{$req->{name}}; $provides{$req->{name}} = $pkgName; } @@ -133,13 +139,13 @@ sub closePackage { my @deps = (); foreach my $req (@{$requires}) { next if $req->{name} =~ /^rpmlib\(/; - print STDERR " needs $req->{name}\n"; + #print STDERR " needs $req->{name}\n"; my $provider = $provides{$req->{name}}; if (!defined $provider) { print STDERR " WARNING: no provider for $req->{name}\n"; next; } - print STDERR " satisfied by $provider\n"; + #print STDERR " satisfied by $provider\n"; push @deps, $provider; } |